authula 0.4.0 → 0.5.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.
@@ -423,37 +423,37 @@ var EmailPasswordPlugin = class {
423
423
  init(client) {
424
424
  return {
425
425
  signUp: async (data) => {
426
- return require_fetch.wrappedFetch(client, "/sign-up", {
426
+ return require_fetch.wrappedFetch(client, "/email-password/sign-up", {
427
427
  method: "POST",
428
428
  body: data
429
429
  });
430
430
  },
431
431
  signIn: async (data) => {
432
- return require_fetch.wrappedFetch(client, "/sign-in", {
432
+ return require_fetch.wrappedFetch(client, "/email-password/sign-in", {
433
433
  method: "POST",
434
434
  body: data
435
435
  });
436
436
  },
437
437
  sendEmailVerification: async (data) => {
438
- return require_fetch.wrappedFetch(client, `/send-email-verification`, {
438
+ return require_fetch.wrappedFetch(client, `/email-password/send-email-verification`, {
439
439
  method: "POST",
440
440
  body: data
441
441
  });
442
442
  },
443
443
  requestPasswordReset: async (data) => {
444
- return require_fetch.wrappedFetch(client, `/request-password-reset`, {
444
+ return require_fetch.wrappedFetch(client, `/email-password/request-password-reset`, {
445
445
  method: "POST",
446
446
  body: data
447
447
  });
448
448
  },
449
449
  changePassword: async (data) => {
450
- return require_fetch.wrappedFetch(client, `/change-password`, {
450
+ return require_fetch.wrappedFetch(client, `/email-password/change-password`, {
451
451
  method: "POST",
452
452
  body: data
453
453
  });
454
454
  },
455
455
  requestEmailChange: async (data) => {
456
- return require_fetch.wrappedFetch(client, `/request-email-change`, {
456
+ return require_fetch.wrappedFetch(client, `/email-password/request-email-change`, {
457
457
  method: "POST",
458
458
  body: data
459
459
  });
@@ -1 +1 @@
1
- {"version":3,"file":"index.cjs","names":["wrappedFetch","z","wrappedFetch","z","sessionSchema","cookie","wrappedFetch","wrappedFetch","wrappedFetch","wrappedFetch","wrappedFetch","wrappedFetch"],"sources":["../../src/plugins/access-control/plugin.ts","../../src/plugins/access-control/types.ts","../../src/plugins/admin/plugin.ts","../../src/plugins/admin/types.ts","../../src/plugins/bearer/plugin.ts","../../src/plugins/csrf/plugin.ts","../../src/plugins/email-password/plugin.ts","../../src/plugins/jwt/plugin.ts","../../src/plugins/magic-link/plugin.ts","../../src/plugins/oauth2/plugin.ts","../../src/plugins/organizations/plugin.ts","../../src/plugins/totp/plugin.ts"],"sourcesContent":["import type { AuthulaClient } from \"@/client\";\nimport { wrappedFetch } from \"@/fetch\";\nimport type { Plugin } from \"@/types\";\nimport type {\n AddRolePermissionRequest,\n AddRolePermissionResponse,\n AssignUserRoleRequest,\n AssignUserRoleResponse,\n CheckUserPermissionsRequest,\n CheckUserPermissionsResponse,\n CreatePermissionRequest,\n CreatePermissionResponse,\n CreateRoleRequest,\n CreateRoleResponse,\n DeletePermissionResponse,\n DeleteRoleResponse,\n GetUserPermissionsResponse,\n RoleDetails,\n Permission,\n UserPermissionInfo,\n UserRoleInfo,\n RemoveRolePermissionResponse,\n RemoveUserRoleResponse,\n ReplaceRolePermissionResponse,\n ReplaceRolePermissionsRequest,\n ReplaceUserRolesRequest,\n ReplaceUserRolesResponse,\n Role,\n UpdatePermissionRequest,\n UpdatePermissionResponse,\n UpdateRoleRequest,\n UpdateRoleResponse,\n} from \"./types\";\n\nexport class AccessControlPlugin implements Plugin {\n public readonly id = \"accessControl\";\n\n constructor() {}\n\n public init(client: AuthulaClient) {\n return {\n // Roles\n createRole: async (\n data: CreateRoleRequest,\n ): Promise<CreateRoleResponse> => {\n return wrappedFetch(client, `/access-control/roles`, {\n method: \"POST\",\n body: data,\n });\n },\n getAllRoles: async (): Promise<Role[]> => {\n return wrappedFetch(client, `/access-control/roles`, {\n method: \"GET\",\n });\n },\n getRoleByName: async (roleName: string): Promise<Role> => {\n return wrappedFetch(\n client,\n `/access-control/roles/by-name/${roleName}`,\n {\n method: \"GET\",\n },\n );\n },\n getRoleById: async (roleId: string): Promise<RoleDetails> => {\n return wrappedFetch(client, `/access-control/roles/${roleId}`, {\n method: \"GET\",\n });\n },\n updateRole: async (\n roleId: string,\n data: UpdateRoleRequest,\n ): Promise<UpdateRoleResponse> => {\n return wrappedFetch(client, `/access-control/roles/${roleId}`, {\n method: \"PATCH\",\n body: data,\n });\n },\n deleteRole: async (roleId: string): Promise<DeleteRoleResponse> => {\n return wrappedFetch(client, `/access-control/roles/${roleId}`, {\n method: \"DELETE\",\n });\n },\n\n // Permissions\n createPermission: async (\n data: CreatePermissionRequest,\n ): Promise<CreatePermissionResponse> => {\n return wrappedFetch(client, `/access-control/permissions`, {\n method: \"POST\",\n body: data,\n });\n },\n getAllPermissions: async (): Promise<Permission[]> => {\n return wrappedFetch(client, `/access-control/permissions`, {\n method: \"GET\",\n });\n },\n getPermissionById: async (permissionId: string): Promise<Permission> => {\n return wrappedFetch(\n client,\n `/access-control/permissions/${permissionId}`,\n {\n method: \"GET\",\n },\n );\n },\n updatePermission: async (\n permissionId: string,\n data: UpdatePermissionRequest,\n ): Promise<UpdatePermissionResponse> => {\n return wrappedFetch(\n client,\n `/access-control/permissions/${permissionId}`,\n {\n method: \"PATCH\",\n body: data,\n },\n );\n },\n deletePermission: async (\n permissionId: string,\n ): Promise<DeletePermissionResponse> => {\n return wrappedFetch(\n client,\n `/access-control/permissions/${permissionId}`,\n {\n method: \"DELETE\",\n },\n );\n },\n\n // Role Permissions\n addRolePermission: async (\n roleId: string,\n data: AddRolePermissionRequest,\n ): Promise<AddRolePermissionResponse> => {\n return wrappedFetch(\n client,\n `/access-control/roles/${roleId}/permissions`,\n {\n method: \"POST\",\n body: data,\n },\n );\n },\n getRolePermissions: async (\n roleId: string,\n ): Promise<UserPermissionInfo[]> => {\n return wrappedFetch(\n client,\n `/access-control/roles/${roleId}/permissions`,\n {\n method: \"GET\",\n },\n );\n },\n replaceRolePermissions: async (\n roleId: string,\n data: ReplaceRolePermissionsRequest,\n ): Promise<ReplaceRolePermissionResponse> => {\n return wrappedFetch(\n client,\n `/access-control/roles/${roleId}/permissions`,\n {\n method: \"PUT\",\n body: data,\n },\n );\n },\n removeRolePermission: async (\n roleId: string,\n permissionId: string,\n ): Promise<RemoveRolePermissionResponse> => {\n return wrappedFetch(\n client,\n `/access-control/roles/${roleId}/permissions/${permissionId}`,\n {\n method: \"DELETE\",\n },\n );\n },\n\n // User Roles\n getUserRoles: async (userId: string): Promise<UserRoleInfo[]> => {\n return wrappedFetch(client, `/access-control/users/${userId}/roles`, {\n method: \"GET\",\n });\n },\n assignUserRole: async (\n userId: string,\n data: AssignUserRoleRequest,\n ): Promise<AssignUserRoleResponse> => {\n return wrappedFetch(client, `/access-control/users/${userId}/roles`, {\n method: \"POST\",\n body: data,\n });\n },\n replaceUserRoles: async (\n userId: string,\n data: ReplaceUserRolesRequest,\n ): Promise<ReplaceUserRolesResponse> => {\n return wrappedFetch(client, `/access-control/users/${userId}/roles`, {\n method: \"PUT\",\n body: data,\n });\n },\n removeUserRole: async (\n userId: string,\n roleId: string,\n ): Promise<RemoveUserRoleResponse> => {\n return wrappedFetch(\n client,\n `/access-control/users/${userId}/roles/${roleId}`,\n {\n method: \"DELETE\",\n },\n );\n },\n\n // User Permissions\n getUserPermissions: async (\n userId: string,\n ): Promise<GetUserPermissionsResponse> => {\n return wrappedFetch(\n client,\n `/access-control/users/${userId}/permissions`,\n {\n method: \"GET\",\n },\n );\n },\n checkUserPermissions: async (\n userId: string,\n data: CheckUserPermissionsRequest,\n ): Promise<CheckUserPermissionsResponse> => {\n return wrappedFetch(\n client,\n `/access-control/users/${userId}/permissions/check`,\n {\n method: \"POST\",\n body: data,\n },\n );\n },\n };\n }\n}\n","import { z } from \"zod\";\n\nimport type { User } from \"@/types\";\n\nexport const roleSchema = z.object({\n id: z.string().nonempty(),\n name: z.string().nonempty(),\n description: z.string().nullish(),\n weight: z.number(),\n isSystem: z.boolean(),\n createdAt: z.iso.datetime(),\n updatedAt: z.iso.datetime(),\n});\nexport type Role = z.infer<typeof roleSchema>;\n\nexport const permissionSchema = z.object({\n id: z.string().nonempty(),\n key: z.string().nonempty(),\n description: z.string().nullish(),\n isSystem: z.boolean(),\n createdAt: z.iso.datetime(),\n updatedAt: z.iso.datetime(),\n});\nexport type Permission = z.infer<typeof permissionSchema>;\n\nexport const permissionGrantSourceSchema = z.object({\n roleId: z.string().nonempty(),\n roleName: z.string().nonempty(),\n grantedByUserId: z.string().nullish(),\n grantedAt: z.iso.datetime().nullish(),\n});\nexport type PermissionGrantSource = z.infer<typeof permissionGrantSourceSchema>;\n\nexport const userPermissionInfoSchema = z.object({\n permissionId: z.string().nonempty(),\n permissionKey: z.string().nonempty(),\n permissionDescription: z.string().nullish(),\n grantedByUserId: z.string().nullish(),\n grantedAt: z.iso.datetime().nullish(),\n sources: z.array(permissionGrantSourceSchema).optional(),\n});\nexport type UserPermissionInfo = z.infer<typeof userPermissionInfoSchema>;\n\nexport const userRoleInfoSchema = z.object({\n roleId: z.string().nonempty(),\n roleName: z.string().nonempty(),\n roleDescription: z.string().nullish(),\n assignedByUserId: z.string().nullish(),\n assignedAt: z.iso.datetime().nullish(),\n expiresAt: z.iso.datetime().nullish(),\n});\nexport type UserRoleInfo = z.infer<typeof userRoleInfoSchema>;\n\nexport const roleDetailsSchema = z.object({\n role: roleSchema,\n permissions: z.array(userPermissionInfoSchema),\n});\nexport type RoleDetails = z.infer<typeof roleDetailsSchema>;\n\nexport const getUserPermissionsResponseSchema = z.object({\n permissions: z.array(userPermissionInfoSchema),\n});\nexport type GetUserPermissionsResponse = z.infer<\n typeof getUserPermissionsResponseSchema\n>;\n\nexport const checkUserPermissionsResponseSchema = z.object({\n hasPermissions: z.boolean(),\n});\nexport type CheckUserPermissionsResponse = z.infer<\n typeof checkUserPermissionsResponseSchema\n>;\n\nexport type CreateRoleRequest = {\n name: string;\n description?: string | null;\n weight?: number;\n isSystem?: boolean;\n};\n\nexport type CreateRoleResponse = {\n role: Role;\n};\n\nexport type UpdateRoleRequest = {\n name?: string | null;\n description?: string | null;\n weight?: number;\n};\n\nexport type UpdateRoleResponse = {\n role: Role;\n};\n\nexport type DeleteRoleResponse = {\n message: string;\n};\n\nexport type CreatePermissionRequest = {\n key: string;\n description?: string | null;\n isSystem?: boolean;\n};\n\nexport type CreatePermissionResponse = {\n permission: Permission;\n};\n\nexport type UpdatePermissionRequest = {\n description?: string | null;\n};\n\nexport type UpdatePermissionResponse = {\n permission: Permission;\n};\n\nexport type DeletePermissionResponse = {\n message: string;\n};\n\nexport type AddRolePermissionRequest = {\n permissionId: string;\n};\n\nexport type AddRolePermissionResponse = {\n message: string;\n};\n\nexport type ReplaceRolePermissionsRequest = {\n permissionIds: string[];\n};\n\nexport type ReplaceRolePermissionResponse = {\n message: string;\n};\n\nexport type RemoveRolePermissionResponse = {\n message: string;\n};\n\nexport type AssignUserRoleRequest = {\n roleId: string;\n expiresAt?: string | null;\n};\n\nexport type ReplaceUserRolesRequest = {\n roleIds: string[];\n};\n\nexport type ReplaceUserRolesResponse = {\n message: string;\n};\n\nexport type AssignUserRoleResponse = {\n message: string;\n};\n\nexport type RemoveUserRoleResponse = {\n message: string;\n};\n\nexport type CheckUserPermissionsRequest = {\n permissionKeys: string[];\n};\n\nexport type UserWithPermissions = {\n user: User;\n permissions: UserPermissionInfo[];\n};\n\nexport type UserAuthorizationProfile = {\n user: User;\n roles: UserRoleInfo[];\n permissions: UserPermissionInfo[];\n};\n\nexport type UserWithRoles = {\n user: User;\n roles: UserRoleInfo[];\n};\n","import type { AuthulaClient } from \"@/client\";\nimport { wrappedFetch } from \"@/fetch\";\nimport type { Plugin } from \"@/types\";\nimport type {\n BanUserRequest,\n BanUserResponse,\n CreateUserRequest,\n CreateUserResponse,\n DeleteSessionStateResponse,\n DeleteUserStateResponse,\n StopImpersonationResponse,\n GetAllImpersonationsResponse,\n GetAllUsersResponse,\n GetBannedUserStatesResponse,\n GetImpersonationByIdResponse,\n GetRevokedSessionStatesResponse,\n GetSessionStateResponse,\n GetUserAdminSessionsResponse,\n GetUserByIdResponse,\n GetUserStateResponse,\n RevokeSessionRequest,\n RevokeSessionResponse,\n StartImpersonationRequest,\n StartImpersonationResponse,\n UnbanUserResponse,\n UpdateUserRequest,\n UpdateUserResponse,\n DeleteUserResponse,\n CreateAccountRequest,\n CreateAccountResponse,\n GetUserAccountsResponse,\n GetAccountByIdResponse,\n UpdateAccountRequest,\n UpdateAccountResponse,\n DeleteAccountResponse,\n CreateUserStateRequest,\n CreateUserStateResponse,\n UpdateUserStateRequest,\n UpdateUserStateResponse,\n CreateSessionStateRequest,\n CreateSessionStateResponse,\n UpdateSessionStateRequest,\n UpdateSessionStateResponse,\n} from \"./types\";\n\nexport class AdminPlugin implements Plugin {\n public readonly id = \"admin\";\n\n constructor() {}\n\n public init(client: AuthulaClient) {\n return {\n // User management\n\n createUser: async (\n data: CreateUserRequest,\n ): Promise<CreateUserResponse> => {\n return wrappedFetch(client, \"/admin/users\", {\n method: \"POST\",\n body: data,\n });\n },\n getAllUsers: async (limit?: number): Promise<GetAllUsersResponse> => {\n const urlSearchParams = new URLSearchParams();\n if (limit) {\n urlSearchParams.append(\"limit\", limit.toString());\n }\n const params = urlSearchParams.toString()\n ? `?${urlSearchParams.toString()}`\n : \"\";\n return wrappedFetch(client, `/admin/users${params}`, {\n method: \"GET\",\n });\n },\n getUserById: async (userId: string): Promise<GetUserByIdResponse> => {\n return wrappedFetch(client, `/admin/users/${userId}`, {\n method: \"GET\",\n });\n },\n updateUser: async (\n userId: string,\n data: UpdateUserRequest,\n ): Promise<UpdateUserResponse> => {\n return wrappedFetch(client, `/admin/users/${userId}`, {\n method: \"PATCH\",\n body: data,\n });\n },\n deleteUser: async (userId: string): Promise<DeleteUserResponse> => {\n return wrappedFetch(client, `/admin/users/${userId}`, {\n method: \"DELETE\",\n });\n },\n\n // Account management\n\n createAccount: async (\n userId: string,\n data: CreateAccountRequest,\n ): Promise<CreateAccountResponse> => {\n return wrappedFetch(client, `/admin/users/${userId}/accounts`, {\n method: \"POST\",\n body: data,\n });\n },\n getUserAccounts: async (\n userId: string,\n ): Promise<GetUserAccountsResponse> => {\n return wrappedFetch(client, `/admin/users/${userId}/accounts`, {\n method: \"GET\",\n });\n },\n getAccountById: async (id: string): Promise<GetAccountByIdResponse> => {\n return wrappedFetch(client, `/admin/accounts/${id}`, {\n method: \"GET\",\n });\n },\n updateAccount: async (\n id: string,\n data: UpdateAccountRequest,\n ): Promise<UpdateAccountResponse> => {\n return wrappedFetch(client, `/admin/accounts/${id}`, {\n method: \"PATCH\",\n body: data,\n });\n },\n deleteAccount: async (id: string): Promise<DeleteAccountResponse> => {\n return wrappedFetch(client, `/admin/accounts/${id}`, {\n method: \"DELETE\",\n });\n },\n\n // User state management\n\n getUserState: async (userId: string): Promise<GetUserStateResponse> => {\n return wrappedFetch(client, `/admin/users/${userId}/state`, {\n method: \"GET\",\n });\n },\n createUserState: async (\n userId: string,\n data: CreateUserStateRequest,\n ): Promise<CreateUserStateResponse> => {\n return wrappedFetch(client, `/admin/users/${userId}/state`, {\n method: \"POST\",\n body: data,\n });\n },\n updateUserState: async (\n userId: string,\n data: UpdateUserStateRequest,\n ): Promise<UpdateUserStateResponse> => {\n return wrappedFetch(client, `/admin/users/${userId}/state`, {\n method: \"PATCH\",\n body: data,\n });\n },\n deleteUserState: async (\n userId: string,\n ): Promise<DeleteUserStateResponse> => {\n return wrappedFetch(client, `/admin/users/${userId}/state`, {\n method: \"DELETE\",\n });\n },\n getBannedUserStates: async (): Promise<GetBannedUserStatesResponse> => {\n return wrappedFetch(client, `/admin/users/states/banned`, {\n method: \"GET\",\n });\n },\n banUser: async (\n userId: string,\n data: BanUserRequest,\n ): Promise<BanUserResponse> => {\n return wrappedFetch(client, `/admin/users/${userId}/ban`, {\n method: \"POST\",\n body: data,\n });\n },\n unbanUser: async (userId: string): Promise<UnbanUserResponse> => {\n return wrappedFetch(client, `/admin/users/${userId}/unban`, {\n method: \"POST\",\n });\n },\n getUserAdminSessions: async (\n userId: string,\n ): Promise<GetUserAdminSessionsResponse> => {\n return wrappedFetch(client, `/admin/users/${userId}/sessions`, {\n method: \"GET\",\n });\n },\n\n // Session state management\n\n getSessionState: async (\n sessionId: string,\n ): Promise<GetSessionStateResponse> => {\n return wrappedFetch(client, `/admin/sessions/${sessionId}/state`, {\n method: \"GET\",\n });\n },\n createSessionState: async (\n sessionId: string,\n data: CreateSessionStateRequest,\n ): Promise<CreateSessionStateResponse> => {\n return wrappedFetch(client, `/admin/sessions/${sessionId}/state`, {\n method: \"POST\",\n body: data,\n });\n },\n updateSessionState: async (\n sessionId: string,\n data: UpdateSessionStateRequest,\n ): Promise<UpdateSessionStateResponse> => {\n return wrappedFetch(client, `/admin/sessions/${sessionId}/state`, {\n method: \"PATCH\",\n body: data,\n });\n },\n deleteSessionState: async (\n sessionId: string,\n ): Promise<DeleteSessionStateResponse> => {\n return wrappedFetch(client, `/admin/sessions/${sessionId}/state`, {\n method: \"DELETE\",\n });\n },\n getRevokedSessionStates:\n async (): Promise<GetRevokedSessionStatesResponse> => {\n return wrappedFetch(client, `/admin/sessions/states/revoked`, {\n method: \"GET\",\n });\n },\n revokeSession: async (\n sessionId: string,\n data: RevokeSessionRequest,\n ): Promise<RevokeSessionResponse> => {\n return wrappedFetch(client, `/admin/sessions/${sessionId}/revoke`, {\n method: \"POST\",\n body: data,\n });\n },\n\n // Impersonations\n\n getAllImpersonations: async (): Promise<GetAllImpersonationsResponse> => {\n return wrappedFetch(client, \"/admin/impersonations\", {\n method: \"GET\",\n });\n },\n getImpersonationById: async (\n impersonationId: string,\n ): Promise<GetImpersonationByIdResponse> => {\n return wrappedFetch(\n client,\n `/admin/impersonations/${impersonationId}`,\n {\n method: \"GET\",\n },\n );\n },\n startImpersonation: async (\n data: StartImpersonationRequest,\n ): Promise<StartImpersonationResponse> => {\n return wrappedFetch(client, \"/admin/impersonations\", {\n method: \"POST\",\n body: data,\n });\n },\n stopImpersonation: async (\n impersonationId: string,\n ): Promise<StopImpersonationResponse> => {\n return wrappedFetch(\n client,\n `/admin/impersonations/${impersonationId}/stop`,\n {\n method: \"POST\",\n },\n );\n },\n };\n }\n}\n","import { z } from \"zod\";\n\nimport { sessionSchema, type Account, type User } from \"@/types\";\n\n// ------------------------------\n// SCHEMAS\n// ------------------------------\n\nexport const adminUserStateSchema = z.object({\n userId: z.string().nonempty(),\n isBanned: z.boolean(),\n bannedAt: z.iso.datetime().nullable(),\n bannedUntil: z.iso.datetime().nullable(),\n bannedReason: z.string().nullable(),\n bannedByUserId: z.string().nullable(),\n createdAt: z.iso.datetime(),\n updatedAt: z.iso.datetime(),\n});\nexport type AdminUserState = z.infer<typeof adminUserStateSchema>;\n\nexport const adminSessionStateSchema = z.object({\n sessionId: z.string().nonempty(),\n revokedAt: z.iso.datetime().nullable(),\n revokedReason: z.string().nullable(),\n revokedByUserId: z.string().nullable(),\n impersonatorUserId: z.string().nullable(),\n impersonationReason: z.string().nullable(),\n impersonationExpiresAt: z.iso.datetime().nullable(),\n createdAt: z.iso.datetime(),\n updatedAt: z.iso.datetime(),\n});\nexport type AdminSessionState = z.infer<typeof adminSessionStateSchema>;\n\nexport const adminUserSessionSchema = z.object({\n session: sessionSchema,\n state: adminSessionStateSchema.nullable(),\n});\nexport type AdminUserSession = z.infer<typeof adminUserSessionSchema>;\n\nexport const impersonationSchema = z.object({\n id: z.string().nonempty(),\n actorUserId: z.string().nonempty(),\n targetUserId: z.string().nonempty(),\n actorSessionId: z.string().nullable(),\n impersonationSessionId: z.string().nullable(),\n reason: z.string().nonempty(),\n startedAt: z.iso.datetime(),\n expiresAt: z.iso.datetime(),\n endedAt: z.iso.datetime().nullable(),\n endedByUserId: z.string().nullable(),\n createdAt: z.iso.datetime(),\n updatedAt: z.iso.datetime(),\n});\nexport type Impersonation = z.infer<typeof impersonationSchema>;\n\n// ------------------------------\n// API response types\n// ------------------------------\n\n// User management\n\nexport type CreateUserRequest = {\n name: string;\n email: string;\n emailVerified?: boolean;\n image?: string;\n metadata?: Record<string, unknown>;\n};\n\nexport type CreateUserResponse = {\n user: User;\n};\n\nexport type GetAllUsersResponse = {\n users: Array<User>;\n nextCursor?: string | null;\n};\n\nexport type GetUserByIdResponse = {\n user: User;\n};\n\nexport type UpdateUserRequest = {\n name?: string;\n email?: string;\n emailVerified?: boolean;\n image?: string;\n metadata?: Record<string, unknown>;\n};\n\nexport type UpdateUserResponse = {\n user: User;\n};\n\nexport type DeleteUserResponse = {\n message: string;\n};\n\n// Account management\n\nexport type CreateAccountRequest = {\n providerId: string;\n accountId: string;\n accessToken?: string;\n refreshToken?: string;\n idToken?: string;\n accessTokenExpiresAt?: string;\n refreshTokenExpiresAt?: string;\n scope?: string;\n password?: string;\n};\n\nexport type CreateAccountResponse = {\n account: Account;\n};\n\nexport type GetUserAccountsResponse = {\n accounts: Array<Account>;\n};\n\nexport type GetAccountByIdResponse = {\n account: Account;\n};\n\nexport type UpdateAccountRequest = {\n providerId?: string;\n accountId?: string;\n accessToken?: string;\n refreshToken?: string;\n idToken?: string;\n accessTokenExpiresAt?: string;\n refreshTokenExpiresAt?: string;\n scope?: string;\n password?: string;\n};\n\nexport type UpdateAccountResponse = {\n account: Account;\n};\n\nexport type DeleteAccountResponse = {\n message: string;\n};\n\n// User state management\n\nexport type GetUserStateResponse = {\n state: AdminUserState;\n};\n\nexport type CreateUserStateRequest = {\n banned: boolean;\n bannedUntil?: string;\n bannedReason?: string;\n};\n\nexport type UpdateUserStateRequest = {\n banned: boolean;\n bannedUntil?: string;\n bannedReason?: string;\n};\n\nexport type CreateUserStateResponse = {\n userState: AdminUserState;\n};\n\nexport type UpdateUserStateResponse = {\n userState: AdminUserState;\n};\n\nexport type DeleteUserStateResponse = {\n message: string;\n};\n\nexport type GetBannedUserStatesResponse = Array<AdminUserState>;\n\nexport type BanUserRequest = {\n bannedUntil?: string;\n reason?: string;\n};\n\nexport type BanUserResponse = {\n state: AdminUserState;\n};\n\nexport type UnbanUserResponse = {\n state: AdminUserState;\n};\n\nexport type GetUserAdminSessionsResponse = Array<AdminUserSession>;\n\n// Session state management\n\nexport type GetSessionStateResponse = {\n state: AdminSessionState;\n};\n\nexport type CreateSessionStateRequest = {\n revoke: boolean;\n revokedReason?: string;\n impersonatorUserId?: string;\n impersonationReason?: string;\n impersonationExpiresAt?: string;\n};\n\nexport type UpdateSessionStateRequest = {\n revoke: boolean;\n revokedReason?: string;\n impersonatorUserId?: string;\n impersonationReason?: string;\n impersonationExpiresAt?: string;\n};\n\nexport type CreateSessionStateResponse = {\n state: AdminSessionState;\n};\n\nexport type UpdateSessionStateResponse = {\n state: AdminSessionState;\n};\n\nexport type DeleteSessionStateResponse = {\n message: string;\n};\n\nexport type GetRevokedSessionStatesResponse = Array<AdminSessionState>;\n\nexport type RevokeSessionRequest = {\n reason?: string;\n};\n\nexport type RevokeSessionResponse = {\n sessionState: AdminSessionState;\n};\n\n// Impersonation\n\nexport type GetAllImpersonationsResponse = Array<Impersonation>;\n\nexport type GetImpersonationByIdResponse = {\n impersonation: Impersonation;\n};\n\nexport type StartImpersonationRequest = {\n targetUserId: string;\n reason: string;\n expiresInSeconds?: number;\n};\n\nexport type StartImpersonationResponse = {\n impersonation: Impersonation;\n};\n\nexport type StopImpersonationResponse = {\n message: string;\n};\n","import type { FetchContext, Plugin } from \"@/types\";\nimport type { BearerPluginOptions } from \"./types\";\nimport type { JWTPlugin } from \"../jwt/plugin\";\nimport type { ClientWithPlugins } from \"@/sdk\";\n\nexport class BearerPlugin implements Plugin {\n public readonly id = \"bearer\";\n private refreshPromise: Promise<any> | null = null;\n\n constructor(private readonly options?: BearerPluginOptions) {}\n\n public init(client: ClientWithPlugins<[JWTPlugin]>) {\n client.registerBeforeFetch(async (ctx: FetchContext) => {\n if (typeof document === \"undefined\") {\n return;\n }\n\n const headerName = this.options?.headerName ?? \"Authorization\";\n const token = localStorage.getItem(\"accessToken\");\n if (token) {\n ctx.init.headers = {\n ...ctx.init.headers,\n [headerName]: `Bearer ${token}`,\n };\n }\n });\n\n client.registerAfterFetch(async (ctx: FetchContext, res: Response) => {\n if (typeof document === \"undefined\") {\n return;\n }\n if (res.status !== 401) {\n return;\n }\n if (ctx.meta.retry) {\n return;\n }\n\n const refreshToken = localStorage.getItem(\"refreshToken\");\n if (!refreshToken) {\n return;\n }\n\n if (!client.jwt) {\n console.warn(\"JWT Plugin is required for Bearer token refresh.\");\n return;\n }\n\n // 🔒 SINGLE FLIGHT REFRESH\n if (!this.refreshPromise) {\n this.refreshPromise = (async () => {\n try {\n const response = await client.jwt.refreshToken({\n refreshToken: refreshToken,\n });\n if (!response) {\n return null;\n }\n\n localStorage.setItem(\"accessToken\", response.accessToken);\n localStorage.setItem(\"refreshToken\", response.refreshToken);\n\n return response;\n } finally {\n this.refreshPromise = null;\n }\n })();\n }\n\n const refreshed = await this.refreshPromise;\n if (!refreshed) {\n return;\n }\n\n const headerName = this.options?.headerName ?? \"Authorization\";\n ctx.init.headers = {\n ...ctx.init.headers,\n [headerName]: `Bearer ${refreshed.accessToken}`,\n };\n\n return \"retry\";\n });\n\n return {};\n }\n}\n","import { parse } from \"cookie\";\n\nimport type { FetchContext, Plugin } from \"@/types\";\nimport type { CSRFPluginOptions } from \"./types\";\nimport type { AuthulaClient } from \"@/client\";\n\nexport class CSRFPlugin implements Plugin {\n public readonly id = \"csrf\";\n\n constructor(private readonly options: CSRFPluginOptions) {}\n\n public init(client: AuthulaClient) {\n client.registerBeforeFetch(async (ctx: FetchContext) => {\n // Client-side\n if (typeof document !== \"undefined\") {\n if ([\"OPTIONS\", \"HEAD\", \"GET\"].includes(ctx.init.method || \"GET\")) {\n return;\n }\n\n const cookies = parse(document.cookie);\n const value = cookies[this.options.cookieName];\n\n if (!value) return;\n\n ctx.init.headers = new Headers(ctx.init.headers);\n ctx.init.headers.set(this.options.headerName, value);\n return;\n }\n\n // SSR\n if (this.cookies) {\n if ([\"OPTIONS\", \"HEAD\", \"GET\"].includes(ctx.init.method || \"GET\")) {\n return;\n }\n\n const store = await this.cookies();\n const cookie = store.get(this.options.cookieName);\n\n if (!cookie) return;\n\n ctx.init.headers = new Headers(ctx.init.headers);\n ctx.init.headers.set(this.options.headerName, cookie.value);\n }\n });\n\n return {};\n }\n\n // Injected by client\n private cookies?: () => Promise<any>;\n attachCookies(fn: () => Promise<any>) {\n this.cookies = fn;\n }\n}\n","import type { AuthulaClient } from \"@/client\";\nimport { wrappedFetch } from \"@/fetch\";\nimport type { Plugin } from \"@/types\";\nimport type {\n ChangePasswordRequest,\n RequestEmailChangeRequest,\n RequestPasswordResetRequest,\n SendEmailVerificationRequest,\n SignInRequest,\n SignUpRequest,\n} from \"./types\";\n\nexport class EmailPasswordPlugin implements Plugin {\n public readonly id = \"emailPassword\";\n\n public init(client: AuthulaClient) {\n return {\n signUp: async <T>(data: SignUpRequest): Promise<T> => {\n return wrappedFetch<T>(client, \"/sign-up\", {\n method: \"POST\",\n body: data,\n });\n },\n signIn: async <T>(data: SignInRequest): Promise<T> => {\n return wrappedFetch<T>(client, \"/sign-in\", {\n method: \"POST\",\n body: data,\n });\n },\n sendEmailVerification: async (\n data: SendEmailVerificationRequest,\n ): Promise<void> => {\n return wrappedFetch(client, `/send-email-verification`, {\n method: \"POST\",\n body: data,\n });\n },\n requestPasswordReset: async (\n data: RequestPasswordResetRequest,\n ): Promise<void> => {\n return wrappedFetch(client, `/request-password-reset`, {\n method: \"POST\",\n body: data,\n });\n },\n changePassword: async (data: ChangePasswordRequest): Promise<void> => {\n return wrappedFetch(client, `/change-password`, {\n method: \"POST\",\n body: data,\n });\n },\n requestEmailChange: async (\n data: RequestEmailChangeRequest,\n ): Promise<void> => {\n return wrappedFetch(client, `/request-email-change`, {\n method: \"POST\",\n body: data,\n });\n },\n };\n }\n}\n","import type { AuthulaClient } from \"@/client\";\nimport { wrappedFetch } from \"@/fetch\";\nimport type { Plugin } from \"@/types\";\nimport type {\n JWKSKey,\n TokenRefreshRequest,\n TokenRefreshResponse,\n} from \"./types\";\n\nexport class JWTPlugin implements Plugin {\n public readonly id = \"jwt\";\n\n constructor() {}\n\n public init(client: AuthulaClient) {\n return {\n refreshToken: async (\n data: TokenRefreshRequest,\n ): Promise<TokenRefreshResponse> => {\n return wrappedFetch(client, \"/token/refresh\", {\n method: \"POST\",\n body: data,\n });\n },\n getJWKSKeys: async (): Promise<Array<JWKSKey>> => {\n return wrappedFetch(client, \"/.well-known/jwks.json\", {\n method: \"GET\",\n });\n },\n };\n }\n}\n","import type { AuthulaClient } from \"@/client\";\nimport { wrappedFetch } from \"@/fetch\";\nimport type { Plugin } from \"@/types\";\nimport type {\n MagicLinkSignInRequest,\n MagicLinkSignInResponse,\n MagicLinkExchangeRequest,\n MagicLinkVerifyRequest,\n MagicLinkVerifyResponse,\n} from \"./types\";\n\nexport class MagicLinkPlugin implements Plugin {\n public readonly id = \"magicLink\";\n\n constructor() {}\n\n public init(client: AuthulaClient) {\n return {\n signIn: async (\n data: MagicLinkSignInRequest,\n ): Promise<MagicLinkSignInResponse> => {\n return wrappedFetch(client, \"/magic-link/sign-in\", {\n method: \"POST\",\n body: data,\n });\n },\n verify: async (\n data: MagicLinkVerifyRequest,\n ): Promise<MagicLinkVerifyResponse> => {\n const searchParams = new URLSearchParams();\n searchParams.append(\"token\", data.token);\n if (data.callbackUrl) {\n searchParams.append(\"callback_url\", data.callbackUrl);\n }\n return wrappedFetch(\n client,\n `/magic-link/verify?${searchParams.toString()}`,\n {\n method: \"GET\",\n },\n );\n },\n exchange: async <T>(data: MagicLinkExchangeRequest): Promise<T> => {\n return wrappedFetch(client, \"/magic-link/exchange\", {\n method: \"POST\",\n body: data,\n });\n },\n };\n }\n}\n","import type { AuthulaClient } from \"@/client\";\nimport { wrappedFetch } from \"@/fetch\";\nimport type { Plugin } from \"@/types/plugins\";\nimport type {\n SignInWithOAuth2Request,\n SignInWithOAuth2Response,\n} from \"./types\";\n\nexport class OAuth2Plugin implements Plugin {\n public readonly id = \"oauth2\";\n\n public init(client: AuthulaClient) {\n return {\n signIn: async (\n data: SignInWithOAuth2Request,\n ): Promise<SignInWithOAuth2Response> => {\n return wrappedFetch(\n client,\n `/oauth2/authorize/${data.provider}?redirect_to=${data.redirectTo}`,\n {\n method: \"GET\",\n },\n );\n },\n };\n }\n}\n","import type { AuthulaClient } from \"@/client\";\nimport { wrappedFetch } from \"@/fetch\";\nimport type { Plugin } from \"@/types\";\nimport type {\n AcceptOrganizationInvitationRequest,\n AcceptOrganizationInvitationResponse,\n AddOrganizationMemberRequest,\n AddOrganizationMemberResponse,\n AddOrganizationTeamMemberRequest,\n AddOrganizationTeamMemberResponse,\n CreateOrganizationInvitationRequest,\n CreateOrganizationInvitationResponse,\n CreateOrganizationRequest,\n CreateOrganizationResponse,\n CreateOrganizationTeamRequest,\n CreateOrganizationTeamResponse,\n DeleteOrganizationMemberResponse,\n DeleteOrganizationResponse,\n DeleteOrganizationTeamMemberResponse,\n DeleteOrganizationTeamResponse,\n GetAllOrganizationsResponse,\n GetOrganizationByIdResponse,\n GetOrganizationInvitationResponse,\n GetAllOrganizationInvitationsResponse,\n GetOrganizationMemberResponse,\n GetOrganizationMembersResponse,\n GetOrganizationTeamMemberResponse,\n GetAllOrganizationTeamMembersResponse,\n GetAllOrganizationTeamsResponse,\n RejectOrganizationInvitationResponse,\n RevokeOrganizationInvitationResponse,\n UpdateOrganizationMemberRequest,\n UpdateOrganizationMemberResponse,\n UpdateOrganizationRequest,\n UpdateOrganizationResponse,\n UpdateOrganizationTeamRequest,\n UpdateOrganizationTeamResponse,\n GetOrganizationTeamResponse,\n} from \"./types\";\n\nexport class OrganizationsPlugin implements Plugin {\n public readonly id = \"organizations\";\n\n public init(client: AuthulaClient) {\n return {\n // Organizations\n\n createOrganization: async (\n data: CreateOrganizationRequest,\n ): Promise<CreateOrganizationResponse> => {\n return wrappedFetch(client, \"/organizations\", {\n method: \"POST\",\n body: data,\n });\n },\n getAllOrganizations: async (): Promise<GetAllOrganizationsResponse> => {\n return wrappedFetch(client, \"/organizations\", {\n method: \"GET\",\n });\n },\n getOrganizationById: async (\n organizationId: string,\n ): Promise<GetOrganizationByIdResponse> => {\n return wrappedFetch(client, `/organizations/${organizationId}`, {\n method: \"GET\",\n });\n },\n updateOrganization: async (\n organizationId: string,\n data: UpdateOrganizationRequest,\n ): Promise<UpdateOrganizationResponse> => {\n return wrappedFetch(client, `/organizations/${organizationId}`, {\n method: \"PATCH\",\n body: data,\n });\n },\n deleteOrganization: async (\n organizationId: string,\n ): Promise<DeleteOrganizationResponse> => {\n return wrappedFetch(client, `/organizations/${organizationId}`, {\n method: \"DELETE\",\n });\n },\n\n // Invitations\n\n createOrganizationInvitation: async (\n organizationId: string,\n data: CreateOrganizationInvitationRequest,\n ): Promise<CreateOrganizationInvitationResponse> => {\n return wrappedFetch(\n client,\n `/organizations/${organizationId}/invitations`,\n {\n method: \"POST\",\n body: data,\n },\n );\n },\n getAllOrganizationInvitations: async (\n organizationId: string,\n ): Promise<GetAllOrganizationInvitationsResponse> => {\n return wrappedFetch(\n client,\n `/organizations/${organizationId}/invitations`,\n {\n method: \"GET\",\n },\n );\n },\n getOrganizationInvitation: async (\n organizationId: string,\n invitationId: string,\n ): Promise<GetOrganizationInvitationResponse> => {\n return wrappedFetch(\n client,\n `/organizations/${organizationId}/invitations/${invitationId}`,\n {\n method: \"GET\",\n },\n );\n },\n revokeOrganizationInvitation: async (\n organizationId: string,\n invitationId: string,\n ): Promise<RevokeOrganizationInvitationResponse> => {\n return wrappedFetch(\n client,\n `/organizations/${organizationId}/invitations/${invitationId}`,\n {\n method: \"PATCH\",\n },\n );\n },\n acceptOrganizationInvitation: async (\n organizationId: string,\n invitationId: string,\n data?: AcceptOrganizationInvitationRequest,\n ): Promise<AcceptOrganizationInvitationResponse> => {\n return wrappedFetch(\n client,\n `/organizations/${organizationId}/invitations/${invitationId}/accept`,\n {\n method: \"POST\",\n body: data,\n },\n );\n },\n rejectOrganizationInvitation: async (\n organizationId: string,\n invitationId: string,\n ): Promise<RejectOrganizationInvitationResponse> => {\n return wrappedFetch(\n client,\n `/organizations/${organizationId}/invitations/${invitationId}/reject`,\n {\n method: \"POST\",\n },\n );\n },\n\n // Members\n\n addOrganizationMember: async (\n organizationId: string,\n data: AddOrganizationMemberRequest,\n ): Promise<AddOrganizationMemberResponse> => {\n return wrappedFetch(\n client,\n `/organizations/${organizationId}/members`,\n {\n method: \"POST\",\n body: data,\n },\n );\n },\n getAllOrganizationMembers: async (\n organizationId: string,\n ): Promise<GetOrganizationMembersResponse> => {\n return wrappedFetch(\n client,\n `/organizations/${organizationId}/members`,\n {\n method: \"GET\",\n },\n );\n },\n getOrganizationMember: async (\n organizationId: string,\n memberId: string,\n ): Promise<GetOrganizationMemberResponse> => {\n return wrappedFetch(\n client,\n `/organizations/${organizationId}/members/${memberId}`,\n {\n method: \"GET\",\n },\n );\n },\n updateOrganizationMember: async (\n organizationId: string,\n memberId: string,\n data: UpdateOrganizationMemberRequest,\n ): Promise<UpdateOrganizationMemberResponse> => {\n return wrappedFetch(\n client,\n `/organizations/${organizationId}/members/${memberId}`,\n {\n method: \"PATCH\",\n body: data,\n },\n );\n },\n deleteOrganizationMember: async (\n organizationId: string,\n memberId: string,\n ): Promise<DeleteOrganizationMemberResponse> => {\n return wrappedFetch(\n client,\n `/organizations/${organizationId}/members/${memberId}`,\n {\n method: \"DELETE\",\n },\n );\n },\n\n // Teams\n\n createOrganizationTeam: async (\n organizationId: string,\n data: CreateOrganizationTeamRequest,\n ): Promise<CreateOrganizationTeamResponse> => {\n return wrappedFetch(client, `/organizations/${organizationId}/teams`, {\n method: \"POST\",\n body: data,\n });\n },\n getAllOrganizationTeams: async (\n organizationId: string,\n ): Promise<GetAllOrganizationTeamsResponse> => {\n return wrappedFetch(client, `/organizations/${organizationId}/teams`, {\n method: \"GET\",\n });\n },\n getOrganizationTeam: async (\n organizationId: string,\n teamId: string,\n ): Promise<GetOrganizationTeamResponse> => {\n return wrappedFetch(\n client,\n `/organizations/${organizationId}/teams/${teamId}`,\n {\n method: \"GET\",\n },\n );\n },\n updateOrganizationTeam: async (\n organizationId: string,\n teamId: string,\n data: UpdateOrganizationTeamRequest,\n ): Promise<UpdateOrganizationTeamResponse> => {\n return wrappedFetch(\n client,\n `/organizations/${organizationId}/teams/${teamId}`,\n {\n method: \"PATCH\",\n body: data,\n },\n );\n },\n deleteOrganizationTeam: async (\n organizationId: string,\n teamId: string,\n ): Promise<DeleteOrganizationTeamResponse> => {\n return wrappedFetch(\n client,\n `/organizations/${organizationId}/teams/${teamId}`,\n {\n method: \"DELETE\",\n },\n );\n },\n\n // Team members\n\n addOrganizationTeamMember: async (\n organizationId: string,\n teamId: string,\n data: AddOrganizationTeamMemberRequest,\n ): Promise<AddOrganizationTeamMemberResponse> => {\n return wrappedFetch(\n client,\n `/organizations/${organizationId}/teams/${teamId}/members`,\n {\n method: \"POST\",\n body: data,\n },\n );\n },\n getAllOrganizationTeamMembers: async (\n organizationId: string,\n teamId: string,\n ): Promise<GetAllOrganizationTeamMembersResponse> => {\n return wrappedFetch(\n client,\n `/organizations/${organizationId}/teams/${teamId}/members`,\n {\n method: \"GET\",\n },\n );\n },\n getOrganizationTeamMember: async (\n organizationId: string,\n teamId: string,\n memberId: string,\n ): Promise<GetOrganizationTeamMemberResponse> => {\n return wrappedFetch(\n client,\n `/organizations/${organizationId}/teams/${teamId}/members/${memberId}`,\n {\n method: \"GET\",\n },\n );\n },\n deleteOrganizationTeamMember: async (\n organizationId: string,\n teamId: string,\n memberId: string,\n ): Promise<DeleteOrganizationTeamMemberResponse> => {\n return wrappedFetch(\n client,\n `/organizations/${organizationId}/teams/${teamId}/members/${memberId}`,\n {\n method: \"DELETE\",\n },\n );\n },\n };\n }\n}\n","import type { AuthulaClient } from \"@/client\";\nimport { wrappedFetch } from \"@/fetch\";\nimport type { Plugin } from \"@/types/plugins\";\nimport type {\n DisableResponse,\n EnableResponse,\n GenerateBackupCodesResponse,\n GetTOTPURIResponse,\n VerifyBackupCodeRequest,\n VerifyBackupCodeResponse,\n VerifyTOTPRequest,\n VerifyTOTPResponse,\n} from \"./types\";\n\nexport class TOTPPlugin implements Plugin {\n public readonly id = \"totp\";\n\n public init(client: AuthulaClient) {\n return {\n enable: async (): Promise<EnableResponse> => {\n return wrappedFetch(client, \"/totp/enable\", {\n method: \"POST\",\n });\n },\n disable: async (): Promise<DisableResponse> => {\n return wrappedFetch(client, \"/totp/disable\", {\n method: \"POST\",\n });\n },\n getUri: async (): Promise<GetTOTPURIResponse> => {\n return wrappedFetch(client, \"/totp/get-uri\", {\n method: \"GET\",\n });\n },\n verify: async (data: VerifyTOTPRequest): Promise<VerifyTOTPResponse> => {\n return wrappedFetch(client, \"/totp/verify\", {\n method: \"POST\",\n body: data,\n });\n },\n verifyBackupCode: async (\n data: VerifyBackupCodeRequest,\n ): Promise<VerifyBackupCodeResponse> => {\n return wrappedFetch(client, \"/totp/verify-backup-code\", {\n method: \"POST\",\n body: data,\n });\n },\n generateBackupCodes: async (): Promise<GenerateBackupCodesResponse> => {\n return wrappedFetch(client, \"/totp/generate-backup-codes\", {\n method: \"POST\",\n });\n },\n };\n }\n}\n"],"mappings":"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"}
1
+ {"version":3,"file":"index.cjs","names":["wrappedFetch","z","wrappedFetch","z","sessionSchema","cookie","wrappedFetch","wrappedFetch","wrappedFetch","wrappedFetch","wrappedFetch","wrappedFetch"],"sources":["../../src/plugins/access-control/plugin.ts","../../src/plugins/access-control/types.ts","../../src/plugins/admin/plugin.ts","../../src/plugins/admin/types.ts","../../src/plugins/bearer/plugin.ts","../../src/plugins/csrf/plugin.ts","../../src/plugins/email-password/plugin.ts","../../src/plugins/jwt/plugin.ts","../../src/plugins/magic-link/plugin.ts","../../src/plugins/oauth2/plugin.ts","../../src/plugins/organizations/plugin.ts","../../src/plugins/totp/plugin.ts"],"sourcesContent":["import type { AuthulaClient } from \"@/client\";\nimport { wrappedFetch } from \"@/fetch\";\nimport type { Plugin } from \"@/types\";\nimport type {\n AddRolePermissionRequest,\n AddRolePermissionResponse,\n AssignUserRoleRequest,\n AssignUserRoleResponse,\n CheckUserPermissionsRequest,\n CheckUserPermissionsResponse,\n CreatePermissionRequest,\n CreatePermissionResponse,\n CreateRoleRequest,\n CreateRoleResponse,\n DeletePermissionResponse,\n DeleteRoleResponse,\n GetUserPermissionsResponse,\n RoleDetails,\n Permission,\n UserPermissionInfo,\n UserRoleInfo,\n RemoveRolePermissionResponse,\n RemoveUserRoleResponse,\n ReplaceRolePermissionResponse,\n ReplaceRolePermissionsRequest,\n ReplaceUserRolesRequest,\n ReplaceUserRolesResponse,\n Role,\n UpdatePermissionRequest,\n UpdatePermissionResponse,\n UpdateRoleRequest,\n UpdateRoleResponse,\n} from \"./types\";\n\nexport class AccessControlPlugin implements Plugin {\n public readonly id = \"accessControl\";\n\n constructor() {}\n\n public init(client: AuthulaClient) {\n return {\n // Roles\n createRole: async (\n data: CreateRoleRequest,\n ): Promise<CreateRoleResponse> => {\n return wrappedFetch(client, `/access-control/roles`, {\n method: \"POST\",\n body: data,\n });\n },\n getAllRoles: async (): Promise<Role[]> => {\n return wrappedFetch(client, `/access-control/roles`, {\n method: \"GET\",\n });\n },\n getRoleByName: async (roleName: string): Promise<Role> => {\n return wrappedFetch(\n client,\n `/access-control/roles/by-name/${roleName}`,\n {\n method: \"GET\",\n },\n );\n },\n getRoleById: async (roleId: string): Promise<RoleDetails> => {\n return wrappedFetch(client, `/access-control/roles/${roleId}`, {\n method: \"GET\",\n });\n },\n updateRole: async (\n roleId: string,\n data: UpdateRoleRequest,\n ): Promise<UpdateRoleResponse> => {\n return wrappedFetch(client, `/access-control/roles/${roleId}`, {\n method: \"PATCH\",\n body: data,\n });\n },\n deleteRole: async (roleId: string): Promise<DeleteRoleResponse> => {\n return wrappedFetch(client, `/access-control/roles/${roleId}`, {\n method: \"DELETE\",\n });\n },\n\n // Permissions\n createPermission: async (\n data: CreatePermissionRequest,\n ): Promise<CreatePermissionResponse> => {\n return wrappedFetch(client, `/access-control/permissions`, {\n method: \"POST\",\n body: data,\n });\n },\n getAllPermissions: async (): Promise<Permission[]> => {\n return wrappedFetch(client, `/access-control/permissions`, {\n method: \"GET\",\n });\n },\n getPermissionById: async (permissionId: string): Promise<Permission> => {\n return wrappedFetch(\n client,\n `/access-control/permissions/${permissionId}`,\n {\n method: \"GET\",\n },\n );\n },\n updatePermission: async (\n permissionId: string,\n data: UpdatePermissionRequest,\n ): Promise<UpdatePermissionResponse> => {\n return wrappedFetch(\n client,\n `/access-control/permissions/${permissionId}`,\n {\n method: \"PATCH\",\n body: data,\n },\n );\n },\n deletePermission: async (\n permissionId: string,\n ): Promise<DeletePermissionResponse> => {\n return wrappedFetch(\n client,\n `/access-control/permissions/${permissionId}`,\n {\n method: \"DELETE\",\n },\n );\n },\n\n // Role Permissions\n addRolePermission: async (\n roleId: string,\n data: AddRolePermissionRequest,\n ): Promise<AddRolePermissionResponse> => {\n return wrappedFetch(\n client,\n `/access-control/roles/${roleId}/permissions`,\n {\n method: \"POST\",\n body: data,\n },\n );\n },\n getRolePermissions: async (\n roleId: string,\n ): Promise<UserPermissionInfo[]> => {\n return wrappedFetch(\n client,\n `/access-control/roles/${roleId}/permissions`,\n {\n method: \"GET\",\n },\n );\n },\n replaceRolePermissions: async (\n roleId: string,\n data: ReplaceRolePermissionsRequest,\n ): Promise<ReplaceRolePermissionResponse> => {\n return wrappedFetch(\n client,\n `/access-control/roles/${roleId}/permissions`,\n {\n method: \"PUT\",\n body: data,\n },\n );\n },\n removeRolePermission: async (\n roleId: string,\n permissionId: string,\n ): Promise<RemoveRolePermissionResponse> => {\n return wrappedFetch(\n client,\n `/access-control/roles/${roleId}/permissions/${permissionId}`,\n {\n method: \"DELETE\",\n },\n );\n },\n\n // User Roles\n getUserRoles: async (userId: string): Promise<UserRoleInfo[]> => {\n return wrappedFetch(client, `/access-control/users/${userId}/roles`, {\n method: \"GET\",\n });\n },\n assignUserRole: async (\n userId: string,\n data: AssignUserRoleRequest,\n ): Promise<AssignUserRoleResponse> => {\n return wrappedFetch(client, `/access-control/users/${userId}/roles`, {\n method: \"POST\",\n body: data,\n });\n },\n replaceUserRoles: async (\n userId: string,\n data: ReplaceUserRolesRequest,\n ): Promise<ReplaceUserRolesResponse> => {\n return wrappedFetch(client, `/access-control/users/${userId}/roles`, {\n method: \"PUT\",\n body: data,\n });\n },\n removeUserRole: async (\n userId: string,\n roleId: string,\n ): Promise<RemoveUserRoleResponse> => {\n return wrappedFetch(\n client,\n `/access-control/users/${userId}/roles/${roleId}`,\n {\n method: \"DELETE\",\n },\n );\n },\n\n // User Permissions\n getUserPermissions: async (\n userId: string,\n ): Promise<GetUserPermissionsResponse> => {\n return wrappedFetch(\n client,\n `/access-control/users/${userId}/permissions`,\n {\n method: \"GET\",\n },\n );\n },\n checkUserPermissions: async (\n userId: string,\n data: CheckUserPermissionsRequest,\n ): Promise<CheckUserPermissionsResponse> => {\n return wrappedFetch(\n client,\n `/access-control/users/${userId}/permissions/check`,\n {\n method: \"POST\",\n body: data,\n },\n );\n },\n };\n }\n}\n","import { z } from \"zod\";\n\nimport type { User } from \"@/types\";\n\nexport const roleSchema = z.object({\n id: z.string().nonempty(),\n name: z.string().nonempty(),\n description: z.string().nullish(),\n weight: z.number(),\n isSystem: z.boolean(),\n createdAt: z.iso.datetime(),\n updatedAt: z.iso.datetime(),\n});\nexport type Role = z.infer<typeof roleSchema>;\n\nexport const permissionSchema = z.object({\n id: z.string().nonempty(),\n key: z.string().nonempty(),\n description: z.string().nullish(),\n isSystem: z.boolean(),\n createdAt: z.iso.datetime(),\n updatedAt: z.iso.datetime(),\n});\nexport type Permission = z.infer<typeof permissionSchema>;\n\nexport const permissionGrantSourceSchema = z.object({\n roleId: z.string().nonempty(),\n roleName: z.string().nonempty(),\n grantedByUserId: z.string().nullish(),\n grantedAt: z.iso.datetime().nullish(),\n});\nexport type PermissionGrantSource = z.infer<typeof permissionGrantSourceSchema>;\n\nexport const userPermissionInfoSchema = z.object({\n permissionId: z.string().nonempty(),\n permissionKey: z.string().nonempty(),\n permissionDescription: z.string().nullish(),\n grantedByUserId: z.string().nullish(),\n grantedAt: z.iso.datetime().nullish(),\n sources: z.array(permissionGrantSourceSchema).optional(),\n});\nexport type UserPermissionInfo = z.infer<typeof userPermissionInfoSchema>;\n\nexport const userRoleInfoSchema = z.object({\n roleId: z.string().nonempty(),\n roleName: z.string().nonempty(),\n roleDescription: z.string().nullish(),\n assignedByUserId: z.string().nullish(),\n assignedAt: z.iso.datetime().nullish(),\n expiresAt: z.iso.datetime().nullish(),\n});\nexport type UserRoleInfo = z.infer<typeof userRoleInfoSchema>;\n\nexport const roleDetailsSchema = z.object({\n role: roleSchema,\n permissions: z.array(userPermissionInfoSchema),\n});\nexport type RoleDetails = z.infer<typeof roleDetailsSchema>;\n\nexport const getUserPermissionsResponseSchema = z.object({\n permissions: z.array(userPermissionInfoSchema),\n});\nexport type GetUserPermissionsResponse = z.infer<\n typeof getUserPermissionsResponseSchema\n>;\n\nexport const checkUserPermissionsResponseSchema = z.object({\n hasPermissions: z.boolean(),\n});\nexport type CheckUserPermissionsResponse = z.infer<\n typeof checkUserPermissionsResponseSchema\n>;\n\nexport type CreateRoleRequest = {\n name: string;\n description?: string | null;\n weight?: number;\n isSystem?: boolean;\n};\n\nexport type CreateRoleResponse = {\n role: Role;\n};\n\nexport type UpdateRoleRequest = {\n name?: string | null;\n description?: string | null;\n weight?: number;\n};\n\nexport type UpdateRoleResponse = {\n role: Role;\n};\n\nexport type DeleteRoleResponse = {\n message: string;\n};\n\nexport type CreatePermissionRequest = {\n key: string;\n description?: string | null;\n isSystem?: boolean;\n};\n\nexport type CreatePermissionResponse = {\n permission: Permission;\n};\n\nexport type UpdatePermissionRequest = {\n description?: string | null;\n};\n\nexport type UpdatePermissionResponse = {\n permission: Permission;\n};\n\nexport type DeletePermissionResponse = {\n message: string;\n};\n\nexport type AddRolePermissionRequest = {\n permissionId: string;\n};\n\nexport type AddRolePermissionResponse = {\n message: string;\n};\n\nexport type ReplaceRolePermissionsRequest = {\n permissionIds: string[];\n};\n\nexport type ReplaceRolePermissionResponse = {\n message: string;\n};\n\nexport type RemoveRolePermissionResponse = {\n message: string;\n};\n\nexport type AssignUserRoleRequest = {\n roleId: string;\n expiresAt?: string | null;\n};\n\nexport type ReplaceUserRolesRequest = {\n roleIds: string[];\n};\n\nexport type ReplaceUserRolesResponse = {\n message: string;\n};\n\nexport type AssignUserRoleResponse = {\n message: string;\n};\n\nexport type RemoveUserRoleResponse = {\n message: string;\n};\n\nexport type CheckUserPermissionsRequest = {\n permissionKeys: string[];\n};\n\nexport type UserWithPermissions = {\n user: User;\n permissions: UserPermissionInfo[];\n};\n\nexport type UserAuthorizationProfile = {\n user: User;\n roles: UserRoleInfo[];\n permissions: UserPermissionInfo[];\n};\n\nexport type UserWithRoles = {\n user: User;\n roles: UserRoleInfo[];\n};\n","import type { AuthulaClient } from \"@/client\";\nimport { wrappedFetch } from \"@/fetch\";\nimport type { Plugin } from \"@/types\";\nimport type {\n BanUserRequest,\n BanUserResponse,\n CreateUserRequest,\n CreateUserResponse,\n DeleteSessionStateResponse,\n DeleteUserStateResponse,\n StopImpersonationResponse,\n GetAllImpersonationsResponse,\n GetAllUsersResponse,\n GetBannedUserStatesResponse,\n GetImpersonationByIdResponse,\n GetRevokedSessionStatesResponse,\n GetSessionStateResponse,\n GetUserAdminSessionsResponse,\n GetUserByIdResponse,\n GetUserStateResponse,\n RevokeSessionRequest,\n RevokeSessionResponse,\n StartImpersonationRequest,\n StartImpersonationResponse,\n UnbanUserResponse,\n UpdateUserRequest,\n UpdateUserResponse,\n DeleteUserResponse,\n CreateAccountRequest,\n CreateAccountResponse,\n GetUserAccountsResponse,\n GetAccountByIdResponse,\n UpdateAccountRequest,\n UpdateAccountResponse,\n DeleteAccountResponse,\n CreateUserStateRequest,\n CreateUserStateResponse,\n UpdateUserStateRequest,\n UpdateUserStateResponse,\n CreateSessionStateRequest,\n CreateSessionStateResponse,\n UpdateSessionStateRequest,\n UpdateSessionStateResponse,\n} from \"./types\";\n\nexport class AdminPlugin implements Plugin {\n public readonly id = \"admin\";\n\n constructor() {}\n\n public init(client: AuthulaClient) {\n return {\n // User management\n\n createUser: async (\n data: CreateUserRequest,\n ): Promise<CreateUserResponse> => {\n return wrappedFetch(client, \"/admin/users\", {\n method: \"POST\",\n body: data,\n });\n },\n getAllUsers: async (limit?: number): Promise<GetAllUsersResponse> => {\n const urlSearchParams = new URLSearchParams();\n if (limit) {\n urlSearchParams.append(\"limit\", limit.toString());\n }\n const params = urlSearchParams.toString()\n ? `?${urlSearchParams.toString()}`\n : \"\";\n return wrappedFetch(client, `/admin/users${params}`, {\n method: \"GET\",\n });\n },\n getUserById: async (userId: string): Promise<GetUserByIdResponse> => {\n return wrappedFetch(client, `/admin/users/${userId}`, {\n method: \"GET\",\n });\n },\n updateUser: async (\n userId: string,\n data: UpdateUserRequest,\n ): Promise<UpdateUserResponse> => {\n return wrappedFetch(client, `/admin/users/${userId}`, {\n method: \"PATCH\",\n body: data,\n });\n },\n deleteUser: async (userId: string): Promise<DeleteUserResponse> => {\n return wrappedFetch(client, `/admin/users/${userId}`, {\n method: \"DELETE\",\n });\n },\n\n // Account management\n\n createAccount: async (\n userId: string,\n data: CreateAccountRequest,\n ): Promise<CreateAccountResponse> => {\n return wrappedFetch(client, `/admin/users/${userId}/accounts`, {\n method: \"POST\",\n body: data,\n });\n },\n getUserAccounts: async (\n userId: string,\n ): Promise<GetUserAccountsResponse> => {\n return wrappedFetch(client, `/admin/users/${userId}/accounts`, {\n method: \"GET\",\n });\n },\n getAccountById: async (id: string): Promise<GetAccountByIdResponse> => {\n return wrappedFetch(client, `/admin/accounts/${id}`, {\n method: \"GET\",\n });\n },\n updateAccount: async (\n id: string,\n data: UpdateAccountRequest,\n ): Promise<UpdateAccountResponse> => {\n return wrappedFetch(client, `/admin/accounts/${id}`, {\n method: \"PATCH\",\n body: data,\n });\n },\n deleteAccount: async (id: string): Promise<DeleteAccountResponse> => {\n return wrappedFetch(client, `/admin/accounts/${id}`, {\n method: \"DELETE\",\n });\n },\n\n // User state management\n\n getUserState: async (userId: string): Promise<GetUserStateResponse> => {\n return wrappedFetch(client, `/admin/users/${userId}/state`, {\n method: \"GET\",\n });\n },\n createUserState: async (\n userId: string,\n data: CreateUserStateRequest,\n ): Promise<CreateUserStateResponse> => {\n return wrappedFetch(client, `/admin/users/${userId}/state`, {\n method: \"POST\",\n body: data,\n });\n },\n updateUserState: async (\n userId: string,\n data: UpdateUserStateRequest,\n ): Promise<UpdateUserStateResponse> => {\n return wrappedFetch(client, `/admin/users/${userId}/state`, {\n method: \"PATCH\",\n body: data,\n });\n },\n deleteUserState: async (\n userId: string,\n ): Promise<DeleteUserStateResponse> => {\n return wrappedFetch(client, `/admin/users/${userId}/state`, {\n method: \"DELETE\",\n });\n },\n getBannedUserStates: async (): Promise<GetBannedUserStatesResponse> => {\n return wrappedFetch(client, `/admin/users/states/banned`, {\n method: \"GET\",\n });\n },\n banUser: async (\n userId: string,\n data: BanUserRequest,\n ): Promise<BanUserResponse> => {\n return wrappedFetch(client, `/admin/users/${userId}/ban`, {\n method: \"POST\",\n body: data,\n });\n },\n unbanUser: async (userId: string): Promise<UnbanUserResponse> => {\n return wrappedFetch(client, `/admin/users/${userId}/unban`, {\n method: \"POST\",\n });\n },\n getUserAdminSessions: async (\n userId: string,\n ): Promise<GetUserAdminSessionsResponse> => {\n return wrappedFetch(client, `/admin/users/${userId}/sessions`, {\n method: \"GET\",\n });\n },\n\n // Session state management\n\n getSessionState: async (\n sessionId: string,\n ): Promise<GetSessionStateResponse> => {\n return wrappedFetch(client, `/admin/sessions/${sessionId}/state`, {\n method: \"GET\",\n });\n },\n createSessionState: async (\n sessionId: string,\n data: CreateSessionStateRequest,\n ): Promise<CreateSessionStateResponse> => {\n return wrappedFetch(client, `/admin/sessions/${sessionId}/state`, {\n method: \"POST\",\n body: data,\n });\n },\n updateSessionState: async (\n sessionId: string,\n data: UpdateSessionStateRequest,\n ): Promise<UpdateSessionStateResponse> => {\n return wrappedFetch(client, `/admin/sessions/${sessionId}/state`, {\n method: \"PATCH\",\n body: data,\n });\n },\n deleteSessionState: async (\n sessionId: string,\n ): Promise<DeleteSessionStateResponse> => {\n return wrappedFetch(client, `/admin/sessions/${sessionId}/state`, {\n method: \"DELETE\",\n });\n },\n getRevokedSessionStates:\n async (): Promise<GetRevokedSessionStatesResponse> => {\n return wrappedFetch(client, `/admin/sessions/states/revoked`, {\n method: \"GET\",\n });\n },\n revokeSession: async (\n sessionId: string,\n data: RevokeSessionRequest,\n ): Promise<RevokeSessionResponse> => {\n return wrappedFetch(client, `/admin/sessions/${sessionId}/revoke`, {\n method: \"POST\",\n body: data,\n });\n },\n\n // Impersonations\n\n getAllImpersonations: async (): Promise<GetAllImpersonationsResponse> => {\n return wrappedFetch(client, \"/admin/impersonations\", {\n method: \"GET\",\n });\n },\n getImpersonationById: async (\n impersonationId: string,\n ): Promise<GetImpersonationByIdResponse> => {\n return wrappedFetch(\n client,\n `/admin/impersonations/${impersonationId}`,\n {\n method: \"GET\",\n },\n );\n },\n startImpersonation: async (\n data: StartImpersonationRequest,\n ): Promise<StartImpersonationResponse> => {\n return wrappedFetch(client, \"/admin/impersonations\", {\n method: \"POST\",\n body: data,\n });\n },\n stopImpersonation: async (\n impersonationId: string,\n ): Promise<StopImpersonationResponse> => {\n return wrappedFetch(\n client,\n `/admin/impersonations/${impersonationId}/stop`,\n {\n method: \"POST\",\n },\n );\n },\n };\n }\n}\n","import { z } from \"zod\";\n\nimport { sessionSchema, type Account, type User } from \"@/types\";\n\n// ------------------------------\n// SCHEMAS\n// ------------------------------\n\nexport const adminUserStateSchema = z.object({\n userId: z.string().nonempty(),\n isBanned: z.boolean(),\n bannedAt: z.iso.datetime().nullable(),\n bannedUntil: z.iso.datetime().nullable(),\n bannedReason: z.string().nullable(),\n bannedByUserId: z.string().nullable(),\n createdAt: z.iso.datetime(),\n updatedAt: z.iso.datetime(),\n});\nexport type AdminUserState = z.infer<typeof adminUserStateSchema>;\n\nexport const adminSessionStateSchema = z.object({\n sessionId: z.string().nonempty(),\n revokedAt: z.iso.datetime().nullable(),\n revokedReason: z.string().nullable(),\n revokedByUserId: z.string().nullable(),\n impersonatorUserId: z.string().nullable(),\n impersonationReason: z.string().nullable(),\n impersonationExpiresAt: z.iso.datetime().nullable(),\n createdAt: z.iso.datetime(),\n updatedAt: z.iso.datetime(),\n});\nexport type AdminSessionState = z.infer<typeof adminSessionStateSchema>;\n\nexport const adminUserSessionSchema = z.object({\n session: sessionSchema,\n state: adminSessionStateSchema.nullable(),\n});\nexport type AdminUserSession = z.infer<typeof adminUserSessionSchema>;\n\nexport const impersonationSchema = z.object({\n id: z.string().nonempty(),\n actorUserId: z.string().nonempty(),\n targetUserId: z.string().nonempty(),\n actorSessionId: z.string().nullable(),\n impersonationSessionId: z.string().nullable(),\n reason: z.string().nonempty(),\n startedAt: z.iso.datetime(),\n expiresAt: z.iso.datetime(),\n endedAt: z.iso.datetime().nullable(),\n endedByUserId: z.string().nullable(),\n createdAt: z.iso.datetime(),\n updatedAt: z.iso.datetime(),\n});\nexport type Impersonation = z.infer<typeof impersonationSchema>;\n\n// ------------------------------\n// API response types\n// ------------------------------\n\n// User management\n\nexport type CreateUserRequest = {\n name: string;\n email: string;\n emailVerified?: boolean;\n image?: string;\n metadata?: Record<string, unknown>;\n};\n\nexport type CreateUserResponse = {\n user: User;\n};\n\nexport type GetAllUsersResponse = {\n users: Array<User>;\n nextCursor?: string | null;\n};\n\nexport type GetUserByIdResponse = {\n user: User;\n};\n\nexport type UpdateUserRequest = {\n name?: string;\n email?: string;\n emailVerified?: boolean;\n image?: string;\n metadata?: Record<string, unknown>;\n};\n\nexport type UpdateUserResponse = {\n user: User;\n};\n\nexport type DeleteUserResponse = {\n message: string;\n};\n\n// Account management\n\nexport type CreateAccountRequest = {\n providerId: string;\n accountId: string;\n accessToken?: string;\n refreshToken?: string;\n idToken?: string;\n accessTokenExpiresAt?: string;\n refreshTokenExpiresAt?: string;\n scope?: string;\n password?: string;\n};\n\nexport type CreateAccountResponse = {\n account: Account;\n};\n\nexport type GetUserAccountsResponse = {\n accounts: Array<Account>;\n};\n\nexport type GetAccountByIdResponse = {\n account: Account;\n};\n\nexport type UpdateAccountRequest = {\n providerId?: string;\n accountId?: string;\n accessToken?: string;\n refreshToken?: string;\n idToken?: string;\n accessTokenExpiresAt?: string;\n refreshTokenExpiresAt?: string;\n scope?: string;\n password?: string;\n};\n\nexport type UpdateAccountResponse = {\n account: Account;\n};\n\nexport type DeleteAccountResponse = {\n message: string;\n};\n\n// User state management\n\nexport type GetUserStateResponse = {\n state: AdminUserState;\n};\n\nexport type CreateUserStateRequest = {\n banned: boolean;\n bannedUntil?: string;\n bannedReason?: string;\n};\n\nexport type UpdateUserStateRequest = {\n banned: boolean;\n bannedUntil?: string;\n bannedReason?: string;\n};\n\nexport type CreateUserStateResponse = {\n userState: AdminUserState;\n};\n\nexport type UpdateUserStateResponse = {\n userState: AdminUserState;\n};\n\nexport type DeleteUserStateResponse = {\n message: string;\n};\n\nexport type GetBannedUserStatesResponse = Array<AdminUserState>;\n\nexport type BanUserRequest = {\n bannedUntil?: string;\n reason?: string;\n};\n\nexport type BanUserResponse = {\n state: AdminUserState;\n};\n\nexport type UnbanUserResponse = {\n state: AdminUserState;\n};\n\nexport type GetUserAdminSessionsResponse = Array<AdminUserSession>;\n\n// Session state management\n\nexport type GetSessionStateResponse = {\n state: AdminSessionState;\n};\n\nexport type CreateSessionStateRequest = {\n revoke: boolean;\n revokedReason?: string;\n impersonatorUserId?: string;\n impersonationReason?: string;\n impersonationExpiresAt?: string;\n};\n\nexport type UpdateSessionStateRequest = {\n revoke: boolean;\n revokedReason?: string;\n impersonatorUserId?: string;\n impersonationReason?: string;\n impersonationExpiresAt?: string;\n};\n\nexport type CreateSessionStateResponse = {\n state: AdminSessionState;\n};\n\nexport type UpdateSessionStateResponse = {\n state: AdminSessionState;\n};\n\nexport type DeleteSessionStateResponse = {\n message: string;\n};\n\nexport type GetRevokedSessionStatesResponse = Array<AdminSessionState>;\n\nexport type RevokeSessionRequest = {\n reason?: string;\n};\n\nexport type RevokeSessionResponse = {\n sessionState: AdminSessionState;\n};\n\n// Impersonation\n\nexport type GetAllImpersonationsResponse = Array<Impersonation>;\n\nexport type GetImpersonationByIdResponse = {\n impersonation: Impersonation;\n};\n\nexport type StartImpersonationRequest = {\n targetUserId: string;\n reason: string;\n expiresInSeconds?: number;\n};\n\nexport type StartImpersonationResponse = {\n impersonation: Impersonation;\n};\n\nexport type StopImpersonationResponse = {\n message: string;\n};\n","import type { FetchContext, Plugin } from \"@/types\";\nimport type { BearerPluginOptions } from \"./types\";\nimport type { JWTPlugin } from \"../jwt/plugin\";\nimport type { ClientWithPlugins } from \"@/sdk\";\n\nexport class BearerPlugin implements Plugin {\n public readonly id = \"bearer\";\n private refreshPromise: Promise<any> | null = null;\n\n constructor(private readonly options?: BearerPluginOptions) {}\n\n public init(client: ClientWithPlugins<[JWTPlugin]>) {\n client.registerBeforeFetch(async (ctx: FetchContext) => {\n if (typeof document === \"undefined\") {\n return;\n }\n\n const headerName = this.options?.headerName ?? \"Authorization\";\n const token = localStorage.getItem(\"accessToken\");\n if (token) {\n ctx.init.headers = {\n ...ctx.init.headers,\n [headerName]: `Bearer ${token}`,\n };\n }\n });\n\n client.registerAfterFetch(async (ctx: FetchContext, res: Response) => {\n if (typeof document === \"undefined\") {\n return;\n }\n if (res.status !== 401) {\n return;\n }\n if (ctx.meta.retry) {\n return;\n }\n\n const refreshToken = localStorage.getItem(\"refreshToken\");\n if (!refreshToken) {\n return;\n }\n\n if (!client.jwt) {\n console.warn(\"JWT Plugin is required for Bearer token refresh.\");\n return;\n }\n\n // 🔒 SINGLE FLIGHT REFRESH\n if (!this.refreshPromise) {\n this.refreshPromise = (async () => {\n try {\n const response = await client.jwt.refreshToken({\n refreshToken: refreshToken,\n });\n if (!response) {\n return null;\n }\n\n localStorage.setItem(\"accessToken\", response.accessToken);\n localStorage.setItem(\"refreshToken\", response.refreshToken);\n\n return response;\n } finally {\n this.refreshPromise = null;\n }\n })();\n }\n\n const refreshed = await this.refreshPromise;\n if (!refreshed) {\n return;\n }\n\n const headerName = this.options?.headerName ?? \"Authorization\";\n ctx.init.headers = {\n ...ctx.init.headers,\n [headerName]: `Bearer ${refreshed.accessToken}`,\n };\n\n return \"retry\";\n });\n\n return {};\n }\n}\n","import { parse } from \"cookie\";\n\nimport type { FetchContext, Plugin } from \"@/types\";\nimport type { CSRFPluginOptions } from \"./types\";\nimport type { AuthulaClient } from \"@/client\";\n\nexport class CSRFPlugin implements Plugin {\n public readonly id = \"csrf\";\n\n constructor(private readonly options: CSRFPluginOptions) {}\n\n public init(client: AuthulaClient) {\n client.registerBeforeFetch(async (ctx: FetchContext) => {\n // Client-side\n if (typeof document !== \"undefined\") {\n if ([\"OPTIONS\", \"HEAD\", \"GET\"].includes(ctx.init.method || \"GET\")) {\n return;\n }\n\n const cookies = parse(document.cookie);\n const value = cookies[this.options.cookieName];\n\n if (!value) return;\n\n ctx.init.headers = new Headers(ctx.init.headers);\n ctx.init.headers.set(this.options.headerName, value);\n return;\n }\n\n // SSR\n if (this.cookies) {\n if ([\"OPTIONS\", \"HEAD\", \"GET\"].includes(ctx.init.method || \"GET\")) {\n return;\n }\n\n const store = await this.cookies();\n const cookie = store.get(this.options.cookieName);\n\n if (!cookie) return;\n\n ctx.init.headers = new Headers(ctx.init.headers);\n ctx.init.headers.set(this.options.headerName, cookie.value);\n }\n });\n\n return {};\n }\n\n // Injected by client\n private cookies?: () => Promise<any>;\n attachCookies(fn: () => Promise<any>) {\n this.cookies = fn;\n }\n}\n","import type { AuthulaClient } from \"@/client\";\nimport { wrappedFetch } from \"@/fetch\";\nimport type { Plugin } from \"@/types\";\nimport type {\n ChangePasswordRequest,\n RequestEmailChangeRequest,\n RequestPasswordResetRequest,\n SendEmailVerificationRequest,\n SignInRequest,\n SignUpRequest,\n} from \"./types\";\n\nexport class EmailPasswordPlugin implements Plugin {\n public readonly id = \"emailPassword\";\n\n public init(client: AuthulaClient) {\n return {\n signUp: async <T>(data: SignUpRequest): Promise<T> => {\n return wrappedFetch<T>(client, \"/email-password/sign-up\", {\n method: \"POST\",\n body: data,\n });\n },\n signIn: async <T>(data: SignInRequest): Promise<T> => {\n return wrappedFetch<T>(client, \"/email-password/sign-in\", {\n method: \"POST\",\n body: data,\n });\n },\n sendEmailVerification: async (\n data: SendEmailVerificationRequest,\n ): Promise<void> => {\n return wrappedFetch(client, `/email-password/send-email-verification`, {\n method: \"POST\",\n body: data,\n });\n },\n requestPasswordReset: async (\n data: RequestPasswordResetRequest,\n ): Promise<void> => {\n return wrappedFetch(client, `/email-password/request-password-reset`, {\n method: \"POST\",\n body: data,\n });\n },\n changePassword: async (data: ChangePasswordRequest): Promise<void> => {\n return wrappedFetch(client, `/email-password/change-password`, {\n method: \"POST\",\n body: data,\n });\n },\n requestEmailChange: async (\n data: RequestEmailChangeRequest,\n ): Promise<void> => {\n return wrappedFetch(client, `/email-password/request-email-change`, {\n method: \"POST\",\n body: data,\n });\n },\n };\n }\n}\n","import type { AuthulaClient } from \"@/client\";\nimport { wrappedFetch } from \"@/fetch\";\nimport type { Plugin } from \"@/types\";\nimport type {\n JWKSKey,\n TokenRefreshRequest,\n TokenRefreshResponse,\n} from \"./types\";\n\nexport class JWTPlugin implements Plugin {\n public readonly id = \"jwt\";\n\n constructor() {}\n\n public init(client: AuthulaClient) {\n return {\n refreshToken: async (\n data: TokenRefreshRequest,\n ): Promise<TokenRefreshResponse> => {\n return wrappedFetch(client, \"/token/refresh\", {\n method: \"POST\",\n body: data,\n });\n },\n getJWKSKeys: async (): Promise<Array<JWKSKey>> => {\n return wrappedFetch(client, \"/.well-known/jwks.json\", {\n method: \"GET\",\n });\n },\n };\n }\n}\n","import type { AuthulaClient } from \"@/client\";\nimport { wrappedFetch } from \"@/fetch\";\nimport type { Plugin } from \"@/types\";\nimport type {\n MagicLinkSignInRequest,\n MagicLinkSignInResponse,\n MagicLinkExchangeRequest,\n MagicLinkVerifyRequest,\n MagicLinkVerifyResponse,\n} from \"./types\";\n\nexport class MagicLinkPlugin implements Plugin {\n public readonly id = \"magicLink\";\n\n constructor() {}\n\n public init(client: AuthulaClient) {\n return {\n signIn: async (\n data: MagicLinkSignInRequest,\n ): Promise<MagicLinkSignInResponse> => {\n return wrappedFetch(client, \"/magic-link/sign-in\", {\n method: \"POST\",\n body: data,\n });\n },\n verify: async (\n data: MagicLinkVerifyRequest,\n ): Promise<MagicLinkVerifyResponse> => {\n const searchParams = new URLSearchParams();\n searchParams.append(\"token\", data.token);\n if (data.callbackUrl) {\n searchParams.append(\"callback_url\", data.callbackUrl);\n }\n return wrappedFetch(\n client,\n `/magic-link/verify?${searchParams.toString()}`,\n {\n method: \"GET\",\n },\n );\n },\n exchange: async <T>(data: MagicLinkExchangeRequest): Promise<T> => {\n return wrappedFetch(client, \"/magic-link/exchange\", {\n method: \"POST\",\n body: data,\n });\n },\n };\n }\n}\n","import type { AuthulaClient } from \"@/client\";\nimport { wrappedFetch } from \"@/fetch\";\nimport type { Plugin } from \"@/types/plugins\";\nimport type {\n SignInWithOAuth2Request,\n SignInWithOAuth2Response,\n} from \"./types\";\n\nexport class OAuth2Plugin implements Plugin {\n public readonly id = \"oauth2\";\n\n public init(client: AuthulaClient) {\n return {\n signIn: async (\n data: SignInWithOAuth2Request,\n ): Promise<SignInWithOAuth2Response> => {\n return wrappedFetch(\n client,\n `/oauth2/authorize/${data.provider}?redirect_to=${data.redirectTo}`,\n {\n method: \"GET\",\n },\n );\n },\n };\n }\n}\n","import type { AuthulaClient } from \"@/client\";\nimport { wrappedFetch } from \"@/fetch\";\nimport type { Plugin } from \"@/types\";\nimport type {\n AcceptOrganizationInvitationRequest,\n AcceptOrganizationInvitationResponse,\n AddOrganizationMemberRequest,\n AddOrganizationMemberResponse,\n AddOrganizationTeamMemberRequest,\n AddOrganizationTeamMemberResponse,\n CreateOrganizationInvitationRequest,\n CreateOrganizationInvitationResponse,\n CreateOrganizationRequest,\n CreateOrganizationResponse,\n CreateOrganizationTeamRequest,\n CreateOrganizationTeamResponse,\n DeleteOrganizationMemberResponse,\n DeleteOrganizationResponse,\n DeleteOrganizationTeamMemberResponse,\n DeleteOrganizationTeamResponse,\n GetAllOrganizationsResponse,\n GetOrganizationByIdResponse,\n GetOrganizationInvitationResponse,\n GetAllOrganizationInvitationsResponse,\n GetOrganizationMemberResponse,\n GetOrganizationMembersResponse,\n GetOrganizationTeamMemberResponse,\n GetAllOrganizationTeamMembersResponse,\n GetAllOrganizationTeamsResponse,\n RejectOrganizationInvitationResponse,\n RevokeOrganizationInvitationResponse,\n UpdateOrganizationMemberRequest,\n UpdateOrganizationMemberResponse,\n UpdateOrganizationRequest,\n UpdateOrganizationResponse,\n UpdateOrganizationTeamRequest,\n UpdateOrganizationTeamResponse,\n GetOrganizationTeamResponse,\n} from \"./types\";\n\nexport class OrganizationsPlugin implements Plugin {\n public readonly id = \"organizations\";\n\n public init(client: AuthulaClient) {\n return {\n // Organizations\n\n createOrganization: async (\n data: CreateOrganizationRequest,\n ): Promise<CreateOrganizationResponse> => {\n return wrappedFetch(client, \"/organizations\", {\n method: \"POST\",\n body: data,\n });\n },\n getAllOrganizations: async (): Promise<GetAllOrganizationsResponse> => {\n return wrappedFetch(client, \"/organizations\", {\n method: \"GET\",\n });\n },\n getOrganizationById: async (\n organizationId: string,\n ): Promise<GetOrganizationByIdResponse> => {\n return wrappedFetch(client, `/organizations/${organizationId}`, {\n method: \"GET\",\n });\n },\n updateOrganization: async (\n organizationId: string,\n data: UpdateOrganizationRequest,\n ): Promise<UpdateOrganizationResponse> => {\n return wrappedFetch(client, `/organizations/${organizationId}`, {\n method: \"PATCH\",\n body: data,\n });\n },\n deleteOrganization: async (\n organizationId: string,\n ): Promise<DeleteOrganizationResponse> => {\n return wrappedFetch(client, `/organizations/${organizationId}`, {\n method: \"DELETE\",\n });\n },\n\n // Invitations\n\n createOrganizationInvitation: async (\n organizationId: string,\n data: CreateOrganizationInvitationRequest,\n ): Promise<CreateOrganizationInvitationResponse> => {\n return wrappedFetch(\n client,\n `/organizations/${organizationId}/invitations`,\n {\n method: \"POST\",\n body: data,\n },\n );\n },\n getAllOrganizationInvitations: async (\n organizationId: string,\n ): Promise<GetAllOrganizationInvitationsResponse> => {\n return wrappedFetch(\n client,\n `/organizations/${organizationId}/invitations`,\n {\n method: \"GET\",\n },\n );\n },\n getOrganizationInvitation: async (\n organizationId: string,\n invitationId: string,\n ): Promise<GetOrganizationInvitationResponse> => {\n return wrappedFetch(\n client,\n `/organizations/${organizationId}/invitations/${invitationId}`,\n {\n method: \"GET\",\n },\n );\n },\n revokeOrganizationInvitation: async (\n organizationId: string,\n invitationId: string,\n ): Promise<RevokeOrganizationInvitationResponse> => {\n return wrappedFetch(\n client,\n `/organizations/${organizationId}/invitations/${invitationId}`,\n {\n method: \"PATCH\",\n },\n );\n },\n acceptOrganizationInvitation: async (\n organizationId: string,\n invitationId: string,\n data?: AcceptOrganizationInvitationRequest,\n ): Promise<AcceptOrganizationInvitationResponse> => {\n return wrappedFetch(\n client,\n `/organizations/${organizationId}/invitations/${invitationId}/accept`,\n {\n method: \"POST\",\n body: data,\n },\n );\n },\n rejectOrganizationInvitation: async (\n organizationId: string,\n invitationId: string,\n ): Promise<RejectOrganizationInvitationResponse> => {\n return wrappedFetch(\n client,\n `/organizations/${organizationId}/invitations/${invitationId}/reject`,\n {\n method: \"POST\",\n },\n );\n },\n\n // Members\n\n addOrganizationMember: async (\n organizationId: string,\n data: AddOrganizationMemberRequest,\n ): Promise<AddOrganizationMemberResponse> => {\n return wrappedFetch(\n client,\n `/organizations/${organizationId}/members`,\n {\n method: \"POST\",\n body: data,\n },\n );\n },\n getAllOrganizationMembers: async (\n organizationId: string,\n ): Promise<GetOrganizationMembersResponse> => {\n return wrappedFetch(\n client,\n `/organizations/${organizationId}/members`,\n {\n method: \"GET\",\n },\n );\n },\n getOrganizationMember: async (\n organizationId: string,\n memberId: string,\n ): Promise<GetOrganizationMemberResponse> => {\n return wrappedFetch(\n client,\n `/organizations/${organizationId}/members/${memberId}`,\n {\n method: \"GET\",\n },\n );\n },\n updateOrganizationMember: async (\n organizationId: string,\n memberId: string,\n data: UpdateOrganizationMemberRequest,\n ): Promise<UpdateOrganizationMemberResponse> => {\n return wrappedFetch(\n client,\n `/organizations/${organizationId}/members/${memberId}`,\n {\n method: \"PATCH\",\n body: data,\n },\n );\n },\n deleteOrganizationMember: async (\n organizationId: string,\n memberId: string,\n ): Promise<DeleteOrganizationMemberResponse> => {\n return wrappedFetch(\n client,\n `/organizations/${organizationId}/members/${memberId}`,\n {\n method: \"DELETE\",\n },\n );\n },\n\n // Teams\n\n createOrganizationTeam: async (\n organizationId: string,\n data: CreateOrganizationTeamRequest,\n ): Promise<CreateOrganizationTeamResponse> => {\n return wrappedFetch(client, `/organizations/${organizationId}/teams`, {\n method: \"POST\",\n body: data,\n });\n },\n getAllOrganizationTeams: async (\n organizationId: string,\n ): Promise<GetAllOrganizationTeamsResponse> => {\n return wrappedFetch(client, `/organizations/${organizationId}/teams`, {\n method: \"GET\",\n });\n },\n getOrganizationTeam: async (\n organizationId: string,\n teamId: string,\n ): Promise<GetOrganizationTeamResponse> => {\n return wrappedFetch(\n client,\n `/organizations/${organizationId}/teams/${teamId}`,\n {\n method: \"GET\",\n },\n );\n },\n updateOrganizationTeam: async (\n organizationId: string,\n teamId: string,\n data: UpdateOrganizationTeamRequest,\n ): Promise<UpdateOrganizationTeamResponse> => {\n return wrappedFetch(\n client,\n `/organizations/${organizationId}/teams/${teamId}`,\n {\n method: \"PATCH\",\n body: data,\n },\n );\n },\n deleteOrganizationTeam: async (\n organizationId: string,\n teamId: string,\n ): Promise<DeleteOrganizationTeamResponse> => {\n return wrappedFetch(\n client,\n `/organizations/${organizationId}/teams/${teamId}`,\n {\n method: \"DELETE\",\n },\n );\n },\n\n // Team members\n\n addOrganizationTeamMember: async (\n organizationId: string,\n teamId: string,\n data: AddOrganizationTeamMemberRequest,\n ): Promise<AddOrganizationTeamMemberResponse> => {\n return wrappedFetch(\n client,\n `/organizations/${organizationId}/teams/${teamId}/members`,\n {\n method: \"POST\",\n body: data,\n },\n );\n },\n getAllOrganizationTeamMembers: async (\n organizationId: string,\n teamId: string,\n ): Promise<GetAllOrganizationTeamMembersResponse> => {\n return wrappedFetch(\n client,\n `/organizations/${organizationId}/teams/${teamId}/members`,\n {\n method: \"GET\",\n },\n );\n },\n getOrganizationTeamMember: async (\n organizationId: string,\n teamId: string,\n memberId: string,\n ): Promise<GetOrganizationTeamMemberResponse> => {\n return wrappedFetch(\n client,\n `/organizations/${organizationId}/teams/${teamId}/members/${memberId}`,\n {\n method: \"GET\",\n },\n );\n },\n deleteOrganizationTeamMember: async (\n organizationId: string,\n teamId: string,\n memberId: string,\n ): Promise<DeleteOrganizationTeamMemberResponse> => {\n return wrappedFetch(\n client,\n `/organizations/${organizationId}/teams/${teamId}/members/${memberId}`,\n {\n method: \"DELETE\",\n },\n );\n },\n };\n }\n}\n","import type { AuthulaClient } from \"@/client\";\nimport { wrappedFetch } from \"@/fetch\";\nimport type { Plugin } from \"@/types/plugins\";\nimport type {\n DisableResponse,\n EnableResponse,\n GenerateBackupCodesResponse,\n GetTOTPURIResponse,\n VerifyBackupCodeRequest,\n VerifyBackupCodeResponse,\n VerifyTOTPRequest,\n VerifyTOTPResponse,\n} from \"./types\";\n\nexport class TOTPPlugin implements Plugin {\n public readonly id = \"totp\";\n\n public init(client: AuthulaClient) {\n return {\n enable: async (): Promise<EnableResponse> => {\n return wrappedFetch(client, \"/totp/enable\", {\n method: \"POST\",\n });\n },\n disable: async (): Promise<DisableResponse> => {\n return wrappedFetch(client, \"/totp/disable\", {\n method: \"POST\",\n });\n },\n getUri: async (): Promise<GetTOTPURIResponse> => {\n return wrappedFetch(client, \"/totp/get-uri\", {\n method: \"GET\",\n });\n },\n verify: async (data: VerifyTOTPRequest): Promise<VerifyTOTPResponse> => {\n return wrappedFetch(client, \"/totp/verify\", {\n method: \"POST\",\n body: data,\n });\n },\n verifyBackupCode: async (\n data: VerifyBackupCodeRequest,\n ): Promise<VerifyBackupCodeResponse> => {\n return wrappedFetch(client, \"/totp/verify-backup-code\", {\n method: \"POST\",\n body: data,\n });\n },\n generateBackupCodes: async (): Promise<GenerateBackupCodesResponse> => {\n return wrappedFetch(client, \"/totp/generate-backup-codes\", {\n method: \"POST\",\n });\n },\n };\n }\n}\n"],"mappings":"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"}
@@ -422,37 +422,37 @@ var EmailPasswordPlugin = class {
422
422
  init(client) {
423
423
  return {
424
424
  signUp: async (data) => {
425
- return wrappedFetch(client, "/sign-up", {
425
+ return wrappedFetch(client, "/email-password/sign-up", {
426
426
  method: "POST",
427
427
  body: data
428
428
  });
429
429
  },
430
430
  signIn: async (data) => {
431
- return wrappedFetch(client, "/sign-in", {
431
+ return wrappedFetch(client, "/email-password/sign-in", {
432
432
  method: "POST",
433
433
  body: data
434
434
  });
435
435
  },
436
436
  sendEmailVerification: async (data) => {
437
- return wrappedFetch(client, `/send-email-verification`, {
437
+ return wrappedFetch(client, `/email-password/send-email-verification`, {
438
438
  method: "POST",
439
439
  body: data
440
440
  });
441
441
  },
442
442
  requestPasswordReset: async (data) => {
443
- return wrappedFetch(client, `/request-password-reset`, {
443
+ return wrappedFetch(client, `/email-password/request-password-reset`, {
444
444
  method: "POST",
445
445
  body: data
446
446
  });
447
447
  },
448
448
  changePassword: async (data) => {
449
- return wrappedFetch(client, `/change-password`, {
449
+ return wrappedFetch(client, `/email-password/change-password`, {
450
450
  method: "POST",
451
451
  body: data
452
452
  });
453
453
  },
454
454
  requestEmailChange: async (data) => {
455
- return wrappedFetch(client, `/request-email-change`, {
455
+ return wrappedFetch(client, `/email-password/request-email-change`, {
456
456
  method: "POST",
457
457
  body: data
458
458
  });
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","names":[],"sources":["../../src/plugins/access-control/plugin.ts","../../src/plugins/access-control/types.ts","../../src/plugins/admin/plugin.ts","../../src/plugins/admin/types.ts","../../src/plugins/bearer/plugin.ts","../../src/plugins/csrf/plugin.ts","../../src/plugins/email-password/plugin.ts","../../src/plugins/jwt/plugin.ts","../../src/plugins/magic-link/plugin.ts","../../src/plugins/oauth2/plugin.ts","../../src/plugins/organizations/plugin.ts","../../src/plugins/totp/plugin.ts"],"sourcesContent":["import type { AuthulaClient } from \"@/client\";\nimport { wrappedFetch } from \"@/fetch\";\nimport type { Plugin } from \"@/types\";\nimport type {\n AddRolePermissionRequest,\n AddRolePermissionResponse,\n AssignUserRoleRequest,\n AssignUserRoleResponse,\n CheckUserPermissionsRequest,\n CheckUserPermissionsResponse,\n CreatePermissionRequest,\n CreatePermissionResponse,\n CreateRoleRequest,\n CreateRoleResponse,\n DeletePermissionResponse,\n DeleteRoleResponse,\n GetUserPermissionsResponse,\n RoleDetails,\n Permission,\n UserPermissionInfo,\n UserRoleInfo,\n RemoveRolePermissionResponse,\n RemoveUserRoleResponse,\n ReplaceRolePermissionResponse,\n ReplaceRolePermissionsRequest,\n ReplaceUserRolesRequest,\n ReplaceUserRolesResponse,\n Role,\n UpdatePermissionRequest,\n UpdatePermissionResponse,\n UpdateRoleRequest,\n UpdateRoleResponse,\n} from \"./types\";\n\nexport class AccessControlPlugin implements Plugin {\n public readonly id = \"accessControl\";\n\n constructor() {}\n\n public init(client: AuthulaClient) {\n return {\n // Roles\n createRole: async (\n data: CreateRoleRequest,\n ): Promise<CreateRoleResponse> => {\n return wrappedFetch(client, `/access-control/roles`, {\n method: \"POST\",\n body: data,\n });\n },\n getAllRoles: async (): Promise<Role[]> => {\n return wrappedFetch(client, `/access-control/roles`, {\n method: \"GET\",\n });\n },\n getRoleByName: async (roleName: string): Promise<Role> => {\n return wrappedFetch(\n client,\n `/access-control/roles/by-name/${roleName}`,\n {\n method: \"GET\",\n },\n );\n },\n getRoleById: async (roleId: string): Promise<RoleDetails> => {\n return wrappedFetch(client, `/access-control/roles/${roleId}`, {\n method: \"GET\",\n });\n },\n updateRole: async (\n roleId: string,\n data: UpdateRoleRequest,\n ): Promise<UpdateRoleResponse> => {\n return wrappedFetch(client, `/access-control/roles/${roleId}`, {\n method: \"PATCH\",\n body: data,\n });\n },\n deleteRole: async (roleId: string): Promise<DeleteRoleResponse> => {\n return wrappedFetch(client, `/access-control/roles/${roleId}`, {\n method: \"DELETE\",\n });\n },\n\n // Permissions\n createPermission: async (\n data: CreatePermissionRequest,\n ): Promise<CreatePermissionResponse> => {\n return wrappedFetch(client, `/access-control/permissions`, {\n method: \"POST\",\n body: data,\n });\n },\n getAllPermissions: async (): Promise<Permission[]> => {\n return wrappedFetch(client, `/access-control/permissions`, {\n method: \"GET\",\n });\n },\n getPermissionById: async (permissionId: string): Promise<Permission> => {\n return wrappedFetch(\n client,\n `/access-control/permissions/${permissionId}`,\n {\n method: \"GET\",\n },\n );\n },\n updatePermission: async (\n permissionId: string,\n data: UpdatePermissionRequest,\n ): Promise<UpdatePermissionResponse> => {\n return wrappedFetch(\n client,\n `/access-control/permissions/${permissionId}`,\n {\n method: \"PATCH\",\n body: data,\n },\n );\n },\n deletePermission: async (\n permissionId: string,\n ): Promise<DeletePermissionResponse> => {\n return wrappedFetch(\n client,\n `/access-control/permissions/${permissionId}`,\n {\n method: \"DELETE\",\n },\n );\n },\n\n // Role Permissions\n addRolePermission: async (\n roleId: string,\n data: AddRolePermissionRequest,\n ): Promise<AddRolePermissionResponse> => {\n return wrappedFetch(\n client,\n `/access-control/roles/${roleId}/permissions`,\n {\n method: \"POST\",\n body: data,\n },\n );\n },\n getRolePermissions: async (\n roleId: string,\n ): Promise<UserPermissionInfo[]> => {\n return wrappedFetch(\n client,\n `/access-control/roles/${roleId}/permissions`,\n {\n method: \"GET\",\n },\n );\n },\n replaceRolePermissions: async (\n roleId: string,\n data: ReplaceRolePermissionsRequest,\n ): Promise<ReplaceRolePermissionResponse> => {\n return wrappedFetch(\n client,\n `/access-control/roles/${roleId}/permissions`,\n {\n method: \"PUT\",\n body: data,\n },\n );\n },\n removeRolePermission: async (\n roleId: string,\n permissionId: string,\n ): Promise<RemoveRolePermissionResponse> => {\n return wrappedFetch(\n client,\n `/access-control/roles/${roleId}/permissions/${permissionId}`,\n {\n method: \"DELETE\",\n },\n );\n },\n\n // User Roles\n getUserRoles: async (userId: string): Promise<UserRoleInfo[]> => {\n return wrappedFetch(client, `/access-control/users/${userId}/roles`, {\n method: \"GET\",\n });\n },\n assignUserRole: async (\n userId: string,\n data: AssignUserRoleRequest,\n ): Promise<AssignUserRoleResponse> => {\n return wrappedFetch(client, `/access-control/users/${userId}/roles`, {\n method: \"POST\",\n body: data,\n });\n },\n replaceUserRoles: async (\n userId: string,\n data: ReplaceUserRolesRequest,\n ): Promise<ReplaceUserRolesResponse> => {\n return wrappedFetch(client, `/access-control/users/${userId}/roles`, {\n method: \"PUT\",\n body: data,\n });\n },\n removeUserRole: async (\n userId: string,\n roleId: string,\n ): Promise<RemoveUserRoleResponse> => {\n return wrappedFetch(\n client,\n `/access-control/users/${userId}/roles/${roleId}`,\n {\n method: \"DELETE\",\n },\n );\n },\n\n // User Permissions\n getUserPermissions: async (\n userId: string,\n ): Promise<GetUserPermissionsResponse> => {\n return wrappedFetch(\n client,\n `/access-control/users/${userId}/permissions`,\n {\n method: \"GET\",\n },\n );\n },\n checkUserPermissions: async (\n userId: string,\n data: CheckUserPermissionsRequest,\n ): Promise<CheckUserPermissionsResponse> => {\n return wrappedFetch(\n client,\n `/access-control/users/${userId}/permissions/check`,\n {\n method: \"POST\",\n body: data,\n },\n );\n },\n };\n }\n}\n","import { z } from \"zod\";\n\nimport type { User } from \"@/types\";\n\nexport const roleSchema = z.object({\n id: z.string().nonempty(),\n name: z.string().nonempty(),\n description: z.string().nullish(),\n weight: z.number(),\n isSystem: z.boolean(),\n createdAt: z.iso.datetime(),\n updatedAt: z.iso.datetime(),\n});\nexport type Role = z.infer<typeof roleSchema>;\n\nexport const permissionSchema = z.object({\n id: z.string().nonempty(),\n key: z.string().nonempty(),\n description: z.string().nullish(),\n isSystem: z.boolean(),\n createdAt: z.iso.datetime(),\n updatedAt: z.iso.datetime(),\n});\nexport type Permission = z.infer<typeof permissionSchema>;\n\nexport const permissionGrantSourceSchema = z.object({\n roleId: z.string().nonempty(),\n roleName: z.string().nonempty(),\n grantedByUserId: z.string().nullish(),\n grantedAt: z.iso.datetime().nullish(),\n});\nexport type PermissionGrantSource = z.infer<typeof permissionGrantSourceSchema>;\n\nexport const userPermissionInfoSchema = z.object({\n permissionId: z.string().nonempty(),\n permissionKey: z.string().nonempty(),\n permissionDescription: z.string().nullish(),\n grantedByUserId: z.string().nullish(),\n grantedAt: z.iso.datetime().nullish(),\n sources: z.array(permissionGrantSourceSchema).optional(),\n});\nexport type UserPermissionInfo = z.infer<typeof userPermissionInfoSchema>;\n\nexport const userRoleInfoSchema = z.object({\n roleId: z.string().nonempty(),\n roleName: z.string().nonempty(),\n roleDescription: z.string().nullish(),\n assignedByUserId: z.string().nullish(),\n assignedAt: z.iso.datetime().nullish(),\n expiresAt: z.iso.datetime().nullish(),\n});\nexport type UserRoleInfo = z.infer<typeof userRoleInfoSchema>;\n\nexport const roleDetailsSchema = z.object({\n role: roleSchema,\n permissions: z.array(userPermissionInfoSchema),\n});\nexport type RoleDetails = z.infer<typeof roleDetailsSchema>;\n\nexport const getUserPermissionsResponseSchema = z.object({\n permissions: z.array(userPermissionInfoSchema),\n});\nexport type GetUserPermissionsResponse = z.infer<\n typeof getUserPermissionsResponseSchema\n>;\n\nexport const checkUserPermissionsResponseSchema = z.object({\n hasPermissions: z.boolean(),\n});\nexport type CheckUserPermissionsResponse = z.infer<\n typeof checkUserPermissionsResponseSchema\n>;\n\nexport type CreateRoleRequest = {\n name: string;\n description?: string | null;\n weight?: number;\n isSystem?: boolean;\n};\n\nexport type CreateRoleResponse = {\n role: Role;\n};\n\nexport type UpdateRoleRequest = {\n name?: string | null;\n description?: string | null;\n weight?: number;\n};\n\nexport type UpdateRoleResponse = {\n role: Role;\n};\n\nexport type DeleteRoleResponse = {\n message: string;\n};\n\nexport type CreatePermissionRequest = {\n key: string;\n description?: string | null;\n isSystem?: boolean;\n};\n\nexport type CreatePermissionResponse = {\n permission: Permission;\n};\n\nexport type UpdatePermissionRequest = {\n description?: string | null;\n};\n\nexport type UpdatePermissionResponse = {\n permission: Permission;\n};\n\nexport type DeletePermissionResponse = {\n message: string;\n};\n\nexport type AddRolePermissionRequest = {\n permissionId: string;\n};\n\nexport type AddRolePermissionResponse = {\n message: string;\n};\n\nexport type ReplaceRolePermissionsRequest = {\n permissionIds: string[];\n};\n\nexport type ReplaceRolePermissionResponse = {\n message: string;\n};\n\nexport type RemoveRolePermissionResponse = {\n message: string;\n};\n\nexport type AssignUserRoleRequest = {\n roleId: string;\n expiresAt?: string | null;\n};\n\nexport type ReplaceUserRolesRequest = {\n roleIds: string[];\n};\n\nexport type ReplaceUserRolesResponse = {\n message: string;\n};\n\nexport type AssignUserRoleResponse = {\n message: string;\n};\n\nexport type RemoveUserRoleResponse = {\n message: string;\n};\n\nexport type CheckUserPermissionsRequest = {\n permissionKeys: string[];\n};\n\nexport type UserWithPermissions = {\n user: User;\n permissions: UserPermissionInfo[];\n};\n\nexport type UserAuthorizationProfile = {\n user: User;\n roles: UserRoleInfo[];\n permissions: UserPermissionInfo[];\n};\n\nexport type UserWithRoles = {\n user: User;\n roles: UserRoleInfo[];\n};\n","import type { AuthulaClient } from \"@/client\";\nimport { wrappedFetch } from \"@/fetch\";\nimport type { Plugin } from \"@/types\";\nimport type {\n BanUserRequest,\n BanUserResponse,\n CreateUserRequest,\n CreateUserResponse,\n DeleteSessionStateResponse,\n DeleteUserStateResponse,\n StopImpersonationResponse,\n GetAllImpersonationsResponse,\n GetAllUsersResponse,\n GetBannedUserStatesResponse,\n GetImpersonationByIdResponse,\n GetRevokedSessionStatesResponse,\n GetSessionStateResponse,\n GetUserAdminSessionsResponse,\n GetUserByIdResponse,\n GetUserStateResponse,\n RevokeSessionRequest,\n RevokeSessionResponse,\n StartImpersonationRequest,\n StartImpersonationResponse,\n UnbanUserResponse,\n UpdateUserRequest,\n UpdateUserResponse,\n DeleteUserResponse,\n CreateAccountRequest,\n CreateAccountResponse,\n GetUserAccountsResponse,\n GetAccountByIdResponse,\n UpdateAccountRequest,\n UpdateAccountResponse,\n DeleteAccountResponse,\n CreateUserStateRequest,\n CreateUserStateResponse,\n UpdateUserStateRequest,\n UpdateUserStateResponse,\n CreateSessionStateRequest,\n CreateSessionStateResponse,\n UpdateSessionStateRequest,\n UpdateSessionStateResponse,\n} from \"./types\";\n\nexport class AdminPlugin implements Plugin {\n public readonly id = \"admin\";\n\n constructor() {}\n\n public init(client: AuthulaClient) {\n return {\n // User management\n\n createUser: async (\n data: CreateUserRequest,\n ): Promise<CreateUserResponse> => {\n return wrappedFetch(client, \"/admin/users\", {\n method: \"POST\",\n body: data,\n });\n },\n getAllUsers: async (limit?: number): Promise<GetAllUsersResponse> => {\n const urlSearchParams = new URLSearchParams();\n if (limit) {\n urlSearchParams.append(\"limit\", limit.toString());\n }\n const params = urlSearchParams.toString()\n ? `?${urlSearchParams.toString()}`\n : \"\";\n return wrappedFetch(client, `/admin/users${params}`, {\n method: \"GET\",\n });\n },\n getUserById: async (userId: string): Promise<GetUserByIdResponse> => {\n return wrappedFetch(client, `/admin/users/${userId}`, {\n method: \"GET\",\n });\n },\n updateUser: async (\n userId: string,\n data: UpdateUserRequest,\n ): Promise<UpdateUserResponse> => {\n return wrappedFetch(client, `/admin/users/${userId}`, {\n method: \"PATCH\",\n body: data,\n });\n },\n deleteUser: async (userId: string): Promise<DeleteUserResponse> => {\n return wrappedFetch(client, `/admin/users/${userId}`, {\n method: \"DELETE\",\n });\n },\n\n // Account management\n\n createAccount: async (\n userId: string,\n data: CreateAccountRequest,\n ): Promise<CreateAccountResponse> => {\n return wrappedFetch(client, `/admin/users/${userId}/accounts`, {\n method: \"POST\",\n body: data,\n });\n },\n getUserAccounts: async (\n userId: string,\n ): Promise<GetUserAccountsResponse> => {\n return wrappedFetch(client, `/admin/users/${userId}/accounts`, {\n method: \"GET\",\n });\n },\n getAccountById: async (id: string): Promise<GetAccountByIdResponse> => {\n return wrappedFetch(client, `/admin/accounts/${id}`, {\n method: \"GET\",\n });\n },\n updateAccount: async (\n id: string,\n data: UpdateAccountRequest,\n ): Promise<UpdateAccountResponse> => {\n return wrappedFetch(client, `/admin/accounts/${id}`, {\n method: \"PATCH\",\n body: data,\n });\n },\n deleteAccount: async (id: string): Promise<DeleteAccountResponse> => {\n return wrappedFetch(client, `/admin/accounts/${id}`, {\n method: \"DELETE\",\n });\n },\n\n // User state management\n\n getUserState: async (userId: string): Promise<GetUserStateResponse> => {\n return wrappedFetch(client, `/admin/users/${userId}/state`, {\n method: \"GET\",\n });\n },\n createUserState: async (\n userId: string,\n data: CreateUserStateRequest,\n ): Promise<CreateUserStateResponse> => {\n return wrappedFetch(client, `/admin/users/${userId}/state`, {\n method: \"POST\",\n body: data,\n });\n },\n updateUserState: async (\n userId: string,\n data: UpdateUserStateRequest,\n ): Promise<UpdateUserStateResponse> => {\n return wrappedFetch(client, `/admin/users/${userId}/state`, {\n method: \"PATCH\",\n body: data,\n });\n },\n deleteUserState: async (\n userId: string,\n ): Promise<DeleteUserStateResponse> => {\n return wrappedFetch(client, `/admin/users/${userId}/state`, {\n method: \"DELETE\",\n });\n },\n getBannedUserStates: async (): Promise<GetBannedUserStatesResponse> => {\n return wrappedFetch(client, `/admin/users/states/banned`, {\n method: \"GET\",\n });\n },\n banUser: async (\n userId: string,\n data: BanUserRequest,\n ): Promise<BanUserResponse> => {\n return wrappedFetch(client, `/admin/users/${userId}/ban`, {\n method: \"POST\",\n body: data,\n });\n },\n unbanUser: async (userId: string): Promise<UnbanUserResponse> => {\n return wrappedFetch(client, `/admin/users/${userId}/unban`, {\n method: \"POST\",\n });\n },\n getUserAdminSessions: async (\n userId: string,\n ): Promise<GetUserAdminSessionsResponse> => {\n return wrappedFetch(client, `/admin/users/${userId}/sessions`, {\n method: \"GET\",\n });\n },\n\n // Session state management\n\n getSessionState: async (\n sessionId: string,\n ): Promise<GetSessionStateResponse> => {\n return wrappedFetch(client, `/admin/sessions/${sessionId}/state`, {\n method: \"GET\",\n });\n },\n createSessionState: async (\n sessionId: string,\n data: CreateSessionStateRequest,\n ): Promise<CreateSessionStateResponse> => {\n return wrappedFetch(client, `/admin/sessions/${sessionId}/state`, {\n method: \"POST\",\n body: data,\n });\n },\n updateSessionState: async (\n sessionId: string,\n data: UpdateSessionStateRequest,\n ): Promise<UpdateSessionStateResponse> => {\n return wrappedFetch(client, `/admin/sessions/${sessionId}/state`, {\n method: \"PATCH\",\n body: data,\n });\n },\n deleteSessionState: async (\n sessionId: string,\n ): Promise<DeleteSessionStateResponse> => {\n return wrappedFetch(client, `/admin/sessions/${sessionId}/state`, {\n method: \"DELETE\",\n });\n },\n getRevokedSessionStates:\n async (): Promise<GetRevokedSessionStatesResponse> => {\n return wrappedFetch(client, `/admin/sessions/states/revoked`, {\n method: \"GET\",\n });\n },\n revokeSession: async (\n sessionId: string,\n data: RevokeSessionRequest,\n ): Promise<RevokeSessionResponse> => {\n return wrappedFetch(client, `/admin/sessions/${sessionId}/revoke`, {\n method: \"POST\",\n body: data,\n });\n },\n\n // Impersonations\n\n getAllImpersonations: async (): Promise<GetAllImpersonationsResponse> => {\n return wrappedFetch(client, \"/admin/impersonations\", {\n method: \"GET\",\n });\n },\n getImpersonationById: async (\n impersonationId: string,\n ): Promise<GetImpersonationByIdResponse> => {\n return wrappedFetch(\n client,\n `/admin/impersonations/${impersonationId}`,\n {\n method: \"GET\",\n },\n );\n },\n startImpersonation: async (\n data: StartImpersonationRequest,\n ): Promise<StartImpersonationResponse> => {\n return wrappedFetch(client, \"/admin/impersonations\", {\n method: \"POST\",\n body: data,\n });\n },\n stopImpersonation: async (\n impersonationId: string,\n ): Promise<StopImpersonationResponse> => {\n return wrappedFetch(\n client,\n `/admin/impersonations/${impersonationId}/stop`,\n {\n method: \"POST\",\n },\n );\n },\n };\n }\n}\n","import { z } from \"zod\";\n\nimport { sessionSchema, type Account, type User } from \"@/types\";\n\n// ------------------------------\n// SCHEMAS\n// ------------------------------\n\nexport const adminUserStateSchema = z.object({\n userId: z.string().nonempty(),\n isBanned: z.boolean(),\n bannedAt: z.iso.datetime().nullable(),\n bannedUntil: z.iso.datetime().nullable(),\n bannedReason: z.string().nullable(),\n bannedByUserId: z.string().nullable(),\n createdAt: z.iso.datetime(),\n updatedAt: z.iso.datetime(),\n});\nexport type AdminUserState = z.infer<typeof adminUserStateSchema>;\n\nexport const adminSessionStateSchema = z.object({\n sessionId: z.string().nonempty(),\n revokedAt: z.iso.datetime().nullable(),\n revokedReason: z.string().nullable(),\n revokedByUserId: z.string().nullable(),\n impersonatorUserId: z.string().nullable(),\n impersonationReason: z.string().nullable(),\n impersonationExpiresAt: z.iso.datetime().nullable(),\n createdAt: z.iso.datetime(),\n updatedAt: z.iso.datetime(),\n});\nexport type AdminSessionState = z.infer<typeof adminSessionStateSchema>;\n\nexport const adminUserSessionSchema = z.object({\n session: sessionSchema,\n state: adminSessionStateSchema.nullable(),\n});\nexport type AdminUserSession = z.infer<typeof adminUserSessionSchema>;\n\nexport const impersonationSchema = z.object({\n id: z.string().nonempty(),\n actorUserId: z.string().nonempty(),\n targetUserId: z.string().nonempty(),\n actorSessionId: z.string().nullable(),\n impersonationSessionId: z.string().nullable(),\n reason: z.string().nonempty(),\n startedAt: z.iso.datetime(),\n expiresAt: z.iso.datetime(),\n endedAt: z.iso.datetime().nullable(),\n endedByUserId: z.string().nullable(),\n createdAt: z.iso.datetime(),\n updatedAt: z.iso.datetime(),\n});\nexport type Impersonation = z.infer<typeof impersonationSchema>;\n\n// ------------------------------\n// API response types\n// ------------------------------\n\n// User management\n\nexport type CreateUserRequest = {\n name: string;\n email: string;\n emailVerified?: boolean;\n image?: string;\n metadata?: Record<string, unknown>;\n};\n\nexport type CreateUserResponse = {\n user: User;\n};\n\nexport type GetAllUsersResponse = {\n users: Array<User>;\n nextCursor?: string | null;\n};\n\nexport type GetUserByIdResponse = {\n user: User;\n};\n\nexport type UpdateUserRequest = {\n name?: string;\n email?: string;\n emailVerified?: boolean;\n image?: string;\n metadata?: Record<string, unknown>;\n};\n\nexport type UpdateUserResponse = {\n user: User;\n};\n\nexport type DeleteUserResponse = {\n message: string;\n};\n\n// Account management\n\nexport type CreateAccountRequest = {\n providerId: string;\n accountId: string;\n accessToken?: string;\n refreshToken?: string;\n idToken?: string;\n accessTokenExpiresAt?: string;\n refreshTokenExpiresAt?: string;\n scope?: string;\n password?: string;\n};\n\nexport type CreateAccountResponse = {\n account: Account;\n};\n\nexport type GetUserAccountsResponse = {\n accounts: Array<Account>;\n};\n\nexport type GetAccountByIdResponse = {\n account: Account;\n};\n\nexport type UpdateAccountRequest = {\n providerId?: string;\n accountId?: string;\n accessToken?: string;\n refreshToken?: string;\n idToken?: string;\n accessTokenExpiresAt?: string;\n refreshTokenExpiresAt?: string;\n scope?: string;\n password?: string;\n};\n\nexport type UpdateAccountResponse = {\n account: Account;\n};\n\nexport type DeleteAccountResponse = {\n message: string;\n};\n\n// User state management\n\nexport type GetUserStateResponse = {\n state: AdminUserState;\n};\n\nexport type CreateUserStateRequest = {\n banned: boolean;\n bannedUntil?: string;\n bannedReason?: string;\n};\n\nexport type UpdateUserStateRequest = {\n banned: boolean;\n bannedUntil?: string;\n bannedReason?: string;\n};\n\nexport type CreateUserStateResponse = {\n userState: AdminUserState;\n};\n\nexport type UpdateUserStateResponse = {\n userState: AdminUserState;\n};\n\nexport type DeleteUserStateResponse = {\n message: string;\n};\n\nexport type GetBannedUserStatesResponse = Array<AdminUserState>;\n\nexport type BanUserRequest = {\n bannedUntil?: string;\n reason?: string;\n};\n\nexport type BanUserResponse = {\n state: AdminUserState;\n};\n\nexport type UnbanUserResponse = {\n state: AdminUserState;\n};\n\nexport type GetUserAdminSessionsResponse = Array<AdminUserSession>;\n\n// Session state management\n\nexport type GetSessionStateResponse = {\n state: AdminSessionState;\n};\n\nexport type CreateSessionStateRequest = {\n revoke: boolean;\n revokedReason?: string;\n impersonatorUserId?: string;\n impersonationReason?: string;\n impersonationExpiresAt?: string;\n};\n\nexport type UpdateSessionStateRequest = {\n revoke: boolean;\n revokedReason?: string;\n impersonatorUserId?: string;\n impersonationReason?: string;\n impersonationExpiresAt?: string;\n};\n\nexport type CreateSessionStateResponse = {\n state: AdminSessionState;\n};\n\nexport type UpdateSessionStateResponse = {\n state: AdminSessionState;\n};\n\nexport type DeleteSessionStateResponse = {\n message: string;\n};\n\nexport type GetRevokedSessionStatesResponse = Array<AdminSessionState>;\n\nexport type RevokeSessionRequest = {\n reason?: string;\n};\n\nexport type RevokeSessionResponse = {\n sessionState: AdminSessionState;\n};\n\n// Impersonation\n\nexport type GetAllImpersonationsResponse = Array<Impersonation>;\n\nexport type GetImpersonationByIdResponse = {\n impersonation: Impersonation;\n};\n\nexport type StartImpersonationRequest = {\n targetUserId: string;\n reason: string;\n expiresInSeconds?: number;\n};\n\nexport type StartImpersonationResponse = {\n impersonation: Impersonation;\n};\n\nexport type StopImpersonationResponse = {\n message: string;\n};\n","import type { FetchContext, Plugin } from \"@/types\";\nimport type { BearerPluginOptions } from \"./types\";\nimport type { JWTPlugin } from \"../jwt/plugin\";\nimport type { ClientWithPlugins } from \"@/sdk\";\n\nexport class BearerPlugin implements Plugin {\n public readonly id = \"bearer\";\n private refreshPromise: Promise<any> | null = null;\n\n constructor(private readonly options?: BearerPluginOptions) {}\n\n public init(client: ClientWithPlugins<[JWTPlugin]>) {\n client.registerBeforeFetch(async (ctx: FetchContext) => {\n if (typeof document === \"undefined\") {\n return;\n }\n\n const headerName = this.options?.headerName ?? \"Authorization\";\n const token = localStorage.getItem(\"accessToken\");\n if (token) {\n ctx.init.headers = {\n ...ctx.init.headers,\n [headerName]: `Bearer ${token}`,\n };\n }\n });\n\n client.registerAfterFetch(async (ctx: FetchContext, res: Response) => {\n if (typeof document === \"undefined\") {\n return;\n }\n if (res.status !== 401) {\n return;\n }\n if (ctx.meta.retry) {\n return;\n }\n\n const refreshToken = localStorage.getItem(\"refreshToken\");\n if (!refreshToken) {\n return;\n }\n\n if (!client.jwt) {\n console.warn(\"JWT Plugin is required for Bearer token refresh.\");\n return;\n }\n\n // 🔒 SINGLE FLIGHT REFRESH\n if (!this.refreshPromise) {\n this.refreshPromise = (async () => {\n try {\n const response = await client.jwt.refreshToken({\n refreshToken: refreshToken,\n });\n if (!response) {\n return null;\n }\n\n localStorage.setItem(\"accessToken\", response.accessToken);\n localStorage.setItem(\"refreshToken\", response.refreshToken);\n\n return response;\n } finally {\n this.refreshPromise = null;\n }\n })();\n }\n\n const refreshed = await this.refreshPromise;\n if (!refreshed) {\n return;\n }\n\n const headerName = this.options?.headerName ?? \"Authorization\";\n ctx.init.headers = {\n ...ctx.init.headers,\n [headerName]: `Bearer ${refreshed.accessToken}`,\n };\n\n return \"retry\";\n });\n\n return {};\n }\n}\n","import { parse } from \"cookie\";\n\nimport type { FetchContext, Plugin } from \"@/types\";\nimport type { CSRFPluginOptions } from \"./types\";\nimport type { AuthulaClient } from \"@/client\";\n\nexport class CSRFPlugin implements Plugin {\n public readonly id = \"csrf\";\n\n constructor(private readonly options: CSRFPluginOptions) {}\n\n public init(client: AuthulaClient) {\n client.registerBeforeFetch(async (ctx: FetchContext) => {\n // Client-side\n if (typeof document !== \"undefined\") {\n if ([\"OPTIONS\", \"HEAD\", \"GET\"].includes(ctx.init.method || \"GET\")) {\n return;\n }\n\n const cookies = parse(document.cookie);\n const value = cookies[this.options.cookieName];\n\n if (!value) return;\n\n ctx.init.headers = new Headers(ctx.init.headers);\n ctx.init.headers.set(this.options.headerName, value);\n return;\n }\n\n // SSR\n if (this.cookies) {\n if ([\"OPTIONS\", \"HEAD\", \"GET\"].includes(ctx.init.method || \"GET\")) {\n return;\n }\n\n const store = await this.cookies();\n const cookie = store.get(this.options.cookieName);\n\n if (!cookie) return;\n\n ctx.init.headers = new Headers(ctx.init.headers);\n ctx.init.headers.set(this.options.headerName, cookie.value);\n }\n });\n\n return {};\n }\n\n // Injected by client\n private cookies?: () => Promise<any>;\n attachCookies(fn: () => Promise<any>) {\n this.cookies = fn;\n }\n}\n","import type { AuthulaClient } from \"@/client\";\nimport { wrappedFetch } from \"@/fetch\";\nimport type { Plugin } from \"@/types\";\nimport type {\n ChangePasswordRequest,\n RequestEmailChangeRequest,\n RequestPasswordResetRequest,\n SendEmailVerificationRequest,\n SignInRequest,\n SignUpRequest,\n} from \"./types\";\n\nexport class EmailPasswordPlugin implements Plugin {\n public readonly id = \"emailPassword\";\n\n public init(client: AuthulaClient) {\n return {\n signUp: async <T>(data: SignUpRequest): Promise<T> => {\n return wrappedFetch<T>(client, \"/sign-up\", {\n method: \"POST\",\n body: data,\n });\n },\n signIn: async <T>(data: SignInRequest): Promise<T> => {\n return wrappedFetch<T>(client, \"/sign-in\", {\n method: \"POST\",\n body: data,\n });\n },\n sendEmailVerification: async (\n data: SendEmailVerificationRequest,\n ): Promise<void> => {\n return wrappedFetch(client, `/send-email-verification`, {\n method: \"POST\",\n body: data,\n });\n },\n requestPasswordReset: async (\n data: RequestPasswordResetRequest,\n ): Promise<void> => {\n return wrappedFetch(client, `/request-password-reset`, {\n method: \"POST\",\n body: data,\n });\n },\n changePassword: async (data: ChangePasswordRequest): Promise<void> => {\n return wrappedFetch(client, `/change-password`, {\n method: \"POST\",\n body: data,\n });\n },\n requestEmailChange: async (\n data: RequestEmailChangeRequest,\n ): Promise<void> => {\n return wrappedFetch(client, `/request-email-change`, {\n method: \"POST\",\n body: data,\n });\n },\n };\n }\n}\n","import type { AuthulaClient } from \"@/client\";\nimport { wrappedFetch } from \"@/fetch\";\nimport type { Plugin } from \"@/types\";\nimport type {\n JWKSKey,\n TokenRefreshRequest,\n TokenRefreshResponse,\n} from \"./types\";\n\nexport class JWTPlugin implements Plugin {\n public readonly id = \"jwt\";\n\n constructor() {}\n\n public init(client: AuthulaClient) {\n return {\n refreshToken: async (\n data: TokenRefreshRequest,\n ): Promise<TokenRefreshResponse> => {\n return wrappedFetch(client, \"/token/refresh\", {\n method: \"POST\",\n body: data,\n });\n },\n getJWKSKeys: async (): Promise<Array<JWKSKey>> => {\n return wrappedFetch(client, \"/.well-known/jwks.json\", {\n method: \"GET\",\n });\n },\n };\n }\n}\n","import type { AuthulaClient } from \"@/client\";\nimport { wrappedFetch } from \"@/fetch\";\nimport type { Plugin } from \"@/types\";\nimport type {\n MagicLinkSignInRequest,\n MagicLinkSignInResponse,\n MagicLinkExchangeRequest,\n MagicLinkVerifyRequest,\n MagicLinkVerifyResponse,\n} from \"./types\";\n\nexport class MagicLinkPlugin implements Plugin {\n public readonly id = \"magicLink\";\n\n constructor() {}\n\n public init(client: AuthulaClient) {\n return {\n signIn: async (\n data: MagicLinkSignInRequest,\n ): Promise<MagicLinkSignInResponse> => {\n return wrappedFetch(client, \"/magic-link/sign-in\", {\n method: \"POST\",\n body: data,\n });\n },\n verify: async (\n data: MagicLinkVerifyRequest,\n ): Promise<MagicLinkVerifyResponse> => {\n const searchParams = new URLSearchParams();\n searchParams.append(\"token\", data.token);\n if (data.callbackUrl) {\n searchParams.append(\"callback_url\", data.callbackUrl);\n }\n return wrappedFetch(\n client,\n `/magic-link/verify?${searchParams.toString()}`,\n {\n method: \"GET\",\n },\n );\n },\n exchange: async <T>(data: MagicLinkExchangeRequest): Promise<T> => {\n return wrappedFetch(client, \"/magic-link/exchange\", {\n method: \"POST\",\n body: data,\n });\n },\n };\n }\n}\n","import type { AuthulaClient } from \"@/client\";\nimport { wrappedFetch } from \"@/fetch\";\nimport type { Plugin } from \"@/types/plugins\";\nimport type {\n SignInWithOAuth2Request,\n SignInWithOAuth2Response,\n} from \"./types\";\n\nexport class OAuth2Plugin implements Plugin {\n public readonly id = \"oauth2\";\n\n public init(client: AuthulaClient) {\n return {\n signIn: async (\n data: SignInWithOAuth2Request,\n ): Promise<SignInWithOAuth2Response> => {\n return wrappedFetch(\n client,\n `/oauth2/authorize/${data.provider}?redirect_to=${data.redirectTo}`,\n {\n method: \"GET\",\n },\n );\n },\n };\n }\n}\n","import type { AuthulaClient } from \"@/client\";\nimport { wrappedFetch } from \"@/fetch\";\nimport type { Plugin } from \"@/types\";\nimport type {\n AcceptOrganizationInvitationRequest,\n AcceptOrganizationInvitationResponse,\n AddOrganizationMemberRequest,\n AddOrganizationMemberResponse,\n AddOrganizationTeamMemberRequest,\n AddOrganizationTeamMemberResponse,\n CreateOrganizationInvitationRequest,\n CreateOrganizationInvitationResponse,\n CreateOrganizationRequest,\n CreateOrganizationResponse,\n CreateOrganizationTeamRequest,\n CreateOrganizationTeamResponse,\n DeleteOrganizationMemberResponse,\n DeleteOrganizationResponse,\n DeleteOrganizationTeamMemberResponse,\n DeleteOrganizationTeamResponse,\n GetAllOrganizationsResponse,\n GetOrganizationByIdResponse,\n GetOrganizationInvitationResponse,\n GetAllOrganizationInvitationsResponse,\n GetOrganizationMemberResponse,\n GetOrganizationMembersResponse,\n GetOrganizationTeamMemberResponse,\n GetAllOrganizationTeamMembersResponse,\n GetAllOrganizationTeamsResponse,\n RejectOrganizationInvitationResponse,\n RevokeOrganizationInvitationResponse,\n UpdateOrganizationMemberRequest,\n UpdateOrganizationMemberResponse,\n UpdateOrganizationRequest,\n UpdateOrganizationResponse,\n UpdateOrganizationTeamRequest,\n UpdateOrganizationTeamResponse,\n GetOrganizationTeamResponse,\n} from \"./types\";\n\nexport class OrganizationsPlugin implements Plugin {\n public readonly id = \"organizations\";\n\n public init(client: AuthulaClient) {\n return {\n // Organizations\n\n createOrganization: async (\n data: CreateOrganizationRequest,\n ): Promise<CreateOrganizationResponse> => {\n return wrappedFetch(client, \"/organizations\", {\n method: \"POST\",\n body: data,\n });\n },\n getAllOrganizations: async (): Promise<GetAllOrganizationsResponse> => {\n return wrappedFetch(client, \"/organizations\", {\n method: \"GET\",\n });\n },\n getOrganizationById: async (\n organizationId: string,\n ): Promise<GetOrganizationByIdResponse> => {\n return wrappedFetch(client, `/organizations/${organizationId}`, {\n method: \"GET\",\n });\n },\n updateOrganization: async (\n organizationId: string,\n data: UpdateOrganizationRequest,\n ): Promise<UpdateOrganizationResponse> => {\n return wrappedFetch(client, `/organizations/${organizationId}`, {\n method: \"PATCH\",\n body: data,\n });\n },\n deleteOrganization: async (\n organizationId: string,\n ): Promise<DeleteOrganizationResponse> => {\n return wrappedFetch(client, `/organizations/${organizationId}`, {\n method: \"DELETE\",\n });\n },\n\n // Invitations\n\n createOrganizationInvitation: async (\n organizationId: string,\n data: CreateOrganizationInvitationRequest,\n ): Promise<CreateOrganizationInvitationResponse> => {\n return wrappedFetch(\n client,\n `/organizations/${organizationId}/invitations`,\n {\n method: \"POST\",\n body: data,\n },\n );\n },\n getAllOrganizationInvitations: async (\n organizationId: string,\n ): Promise<GetAllOrganizationInvitationsResponse> => {\n return wrappedFetch(\n client,\n `/organizations/${organizationId}/invitations`,\n {\n method: \"GET\",\n },\n );\n },\n getOrganizationInvitation: async (\n organizationId: string,\n invitationId: string,\n ): Promise<GetOrganizationInvitationResponse> => {\n return wrappedFetch(\n client,\n `/organizations/${organizationId}/invitations/${invitationId}`,\n {\n method: \"GET\",\n },\n );\n },\n revokeOrganizationInvitation: async (\n organizationId: string,\n invitationId: string,\n ): Promise<RevokeOrganizationInvitationResponse> => {\n return wrappedFetch(\n client,\n `/organizations/${organizationId}/invitations/${invitationId}`,\n {\n method: \"PATCH\",\n },\n );\n },\n acceptOrganizationInvitation: async (\n organizationId: string,\n invitationId: string,\n data?: AcceptOrganizationInvitationRequest,\n ): Promise<AcceptOrganizationInvitationResponse> => {\n return wrappedFetch(\n client,\n `/organizations/${organizationId}/invitations/${invitationId}/accept`,\n {\n method: \"POST\",\n body: data,\n },\n );\n },\n rejectOrganizationInvitation: async (\n organizationId: string,\n invitationId: string,\n ): Promise<RejectOrganizationInvitationResponse> => {\n return wrappedFetch(\n client,\n `/organizations/${organizationId}/invitations/${invitationId}/reject`,\n {\n method: \"POST\",\n },\n );\n },\n\n // Members\n\n addOrganizationMember: async (\n organizationId: string,\n data: AddOrganizationMemberRequest,\n ): Promise<AddOrganizationMemberResponse> => {\n return wrappedFetch(\n client,\n `/organizations/${organizationId}/members`,\n {\n method: \"POST\",\n body: data,\n },\n );\n },\n getAllOrganizationMembers: async (\n organizationId: string,\n ): Promise<GetOrganizationMembersResponse> => {\n return wrappedFetch(\n client,\n `/organizations/${organizationId}/members`,\n {\n method: \"GET\",\n },\n );\n },\n getOrganizationMember: async (\n organizationId: string,\n memberId: string,\n ): Promise<GetOrganizationMemberResponse> => {\n return wrappedFetch(\n client,\n `/organizations/${organizationId}/members/${memberId}`,\n {\n method: \"GET\",\n },\n );\n },\n updateOrganizationMember: async (\n organizationId: string,\n memberId: string,\n data: UpdateOrganizationMemberRequest,\n ): Promise<UpdateOrganizationMemberResponse> => {\n return wrappedFetch(\n client,\n `/organizations/${organizationId}/members/${memberId}`,\n {\n method: \"PATCH\",\n body: data,\n },\n );\n },\n deleteOrganizationMember: async (\n organizationId: string,\n memberId: string,\n ): Promise<DeleteOrganizationMemberResponse> => {\n return wrappedFetch(\n client,\n `/organizations/${organizationId}/members/${memberId}`,\n {\n method: \"DELETE\",\n },\n );\n },\n\n // Teams\n\n createOrganizationTeam: async (\n organizationId: string,\n data: CreateOrganizationTeamRequest,\n ): Promise<CreateOrganizationTeamResponse> => {\n return wrappedFetch(client, `/organizations/${organizationId}/teams`, {\n method: \"POST\",\n body: data,\n });\n },\n getAllOrganizationTeams: async (\n organizationId: string,\n ): Promise<GetAllOrganizationTeamsResponse> => {\n return wrappedFetch(client, `/organizations/${organizationId}/teams`, {\n method: \"GET\",\n });\n },\n getOrganizationTeam: async (\n organizationId: string,\n teamId: string,\n ): Promise<GetOrganizationTeamResponse> => {\n return wrappedFetch(\n client,\n `/organizations/${organizationId}/teams/${teamId}`,\n {\n method: \"GET\",\n },\n );\n },\n updateOrganizationTeam: async (\n organizationId: string,\n teamId: string,\n data: UpdateOrganizationTeamRequest,\n ): Promise<UpdateOrganizationTeamResponse> => {\n return wrappedFetch(\n client,\n `/organizations/${organizationId}/teams/${teamId}`,\n {\n method: \"PATCH\",\n body: data,\n },\n );\n },\n deleteOrganizationTeam: async (\n organizationId: string,\n teamId: string,\n ): Promise<DeleteOrganizationTeamResponse> => {\n return wrappedFetch(\n client,\n `/organizations/${organizationId}/teams/${teamId}`,\n {\n method: \"DELETE\",\n },\n );\n },\n\n // Team members\n\n addOrganizationTeamMember: async (\n organizationId: string,\n teamId: string,\n data: AddOrganizationTeamMemberRequest,\n ): Promise<AddOrganizationTeamMemberResponse> => {\n return wrappedFetch(\n client,\n `/organizations/${organizationId}/teams/${teamId}/members`,\n {\n method: \"POST\",\n body: data,\n },\n );\n },\n getAllOrganizationTeamMembers: async (\n organizationId: string,\n teamId: string,\n ): Promise<GetAllOrganizationTeamMembersResponse> => {\n return wrappedFetch(\n client,\n `/organizations/${organizationId}/teams/${teamId}/members`,\n {\n method: \"GET\",\n },\n );\n },\n getOrganizationTeamMember: async (\n organizationId: string,\n teamId: string,\n memberId: string,\n ): Promise<GetOrganizationTeamMemberResponse> => {\n return wrappedFetch(\n client,\n `/organizations/${organizationId}/teams/${teamId}/members/${memberId}`,\n {\n method: \"GET\",\n },\n );\n },\n deleteOrganizationTeamMember: async (\n organizationId: string,\n teamId: string,\n memberId: string,\n ): Promise<DeleteOrganizationTeamMemberResponse> => {\n return wrappedFetch(\n client,\n `/organizations/${organizationId}/teams/${teamId}/members/${memberId}`,\n {\n method: \"DELETE\",\n },\n );\n },\n };\n }\n}\n","import type { AuthulaClient } from \"@/client\";\nimport { wrappedFetch } from \"@/fetch\";\nimport type { Plugin } from \"@/types/plugins\";\nimport type {\n DisableResponse,\n EnableResponse,\n GenerateBackupCodesResponse,\n GetTOTPURIResponse,\n VerifyBackupCodeRequest,\n VerifyBackupCodeResponse,\n VerifyTOTPRequest,\n VerifyTOTPResponse,\n} from \"./types\";\n\nexport class TOTPPlugin implements Plugin {\n public readonly id = \"totp\";\n\n public init(client: AuthulaClient) {\n return {\n enable: async (): Promise<EnableResponse> => {\n return wrappedFetch(client, \"/totp/enable\", {\n method: \"POST\",\n });\n },\n disable: async (): Promise<DisableResponse> => {\n return wrappedFetch(client, \"/totp/disable\", {\n method: \"POST\",\n });\n },\n getUri: async (): Promise<GetTOTPURIResponse> => {\n return wrappedFetch(client, \"/totp/get-uri\", {\n method: \"GET\",\n });\n },\n verify: async (data: VerifyTOTPRequest): Promise<VerifyTOTPResponse> => {\n return wrappedFetch(client, \"/totp/verify\", {\n method: \"POST\",\n body: data,\n });\n },\n verifyBackupCode: async (\n data: VerifyBackupCodeRequest,\n ): Promise<VerifyBackupCodeResponse> => {\n return wrappedFetch(client, \"/totp/verify-backup-code\", {\n method: \"POST\",\n body: data,\n });\n },\n generateBackupCodes: async (): Promise<GenerateBackupCodesResponse> => {\n return wrappedFetch(client, \"/totp/generate-backup-codes\", {\n method: \"POST\",\n });\n },\n };\n }\n}\n"],"mappings":"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"}
1
+ {"version":3,"file":"index.js","names":[],"sources":["../../src/plugins/access-control/plugin.ts","../../src/plugins/access-control/types.ts","../../src/plugins/admin/plugin.ts","../../src/plugins/admin/types.ts","../../src/plugins/bearer/plugin.ts","../../src/plugins/csrf/plugin.ts","../../src/plugins/email-password/plugin.ts","../../src/plugins/jwt/plugin.ts","../../src/plugins/magic-link/plugin.ts","../../src/plugins/oauth2/plugin.ts","../../src/plugins/organizations/plugin.ts","../../src/plugins/totp/plugin.ts"],"sourcesContent":["import type { AuthulaClient } from \"@/client\";\nimport { wrappedFetch } from \"@/fetch\";\nimport type { Plugin } from \"@/types\";\nimport type {\n AddRolePermissionRequest,\n AddRolePermissionResponse,\n AssignUserRoleRequest,\n AssignUserRoleResponse,\n CheckUserPermissionsRequest,\n CheckUserPermissionsResponse,\n CreatePermissionRequest,\n CreatePermissionResponse,\n CreateRoleRequest,\n CreateRoleResponse,\n DeletePermissionResponse,\n DeleteRoleResponse,\n GetUserPermissionsResponse,\n RoleDetails,\n Permission,\n UserPermissionInfo,\n UserRoleInfo,\n RemoveRolePermissionResponse,\n RemoveUserRoleResponse,\n ReplaceRolePermissionResponse,\n ReplaceRolePermissionsRequest,\n ReplaceUserRolesRequest,\n ReplaceUserRolesResponse,\n Role,\n UpdatePermissionRequest,\n UpdatePermissionResponse,\n UpdateRoleRequest,\n UpdateRoleResponse,\n} from \"./types\";\n\nexport class AccessControlPlugin implements Plugin {\n public readonly id = \"accessControl\";\n\n constructor() {}\n\n public init(client: AuthulaClient) {\n return {\n // Roles\n createRole: async (\n data: CreateRoleRequest,\n ): Promise<CreateRoleResponse> => {\n return wrappedFetch(client, `/access-control/roles`, {\n method: \"POST\",\n body: data,\n });\n },\n getAllRoles: async (): Promise<Role[]> => {\n return wrappedFetch(client, `/access-control/roles`, {\n method: \"GET\",\n });\n },\n getRoleByName: async (roleName: string): Promise<Role> => {\n return wrappedFetch(\n client,\n `/access-control/roles/by-name/${roleName}`,\n {\n method: \"GET\",\n },\n );\n },\n getRoleById: async (roleId: string): Promise<RoleDetails> => {\n return wrappedFetch(client, `/access-control/roles/${roleId}`, {\n method: \"GET\",\n });\n },\n updateRole: async (\n roleId: string,\n data: UpdateRoleRequest,\n ): Promise<UpdateRoleResponse> => {\n return wrappedFetch(client, `/access-control/roles/${roleId}`, {\n method: \"PATCH\",\n body: data,\n });\n },\n deleteRole: async (roleId: string): Promise<DeleteRoleResponse> => {\n return wrappedFetch(client, `/access-control/roles/${roleId}`, {\n method: \"DELETE\",\n });\n },\n\n // Permissions\n createPermission: async (\n data: CreatePermissionRequest,\n ): Promise<CreatePermissionResponse> => {\n return wrappedFetch(client, `/access-control/permissions`, {\n method: \"POST\",\n body: data,\n });\n },\n getAllPermissions: async (): Promise<Permission[]> => {\n return wrappedFetch(client, `/access-control/permissions`, {\n method: \"GET\",\n });\n },\n getPermissionById: async (permissionId: string): Promise<Permission> => {\n return wrappedFetch(\n client,\n `/access-control/permissions/${permissionId}`,\n {\n method: \"GET\",\n },\n );\n },\n updatePermission: async (\n permissionId: string,\n data: UpdatePermissionRequest,\n ): Promise<UpdatePermissionResponse> => {\n return wrappedFetch(\n client,\n `/access-control/permissions/${permissionId}`,\n {\n method: \"PATCH\",\n body: data,\n },\n );\n },\n deletePermission: async (\n permissionId: string,\n ): Promise<DeletePermissionResponse> => {\n return wrappedFetch(\n client,\n `/access-control/permissions/${permissionId}`,\n {\n method: \"DELETE\",\n },\n );\n },\n\n // Role Permissions\n addRolePermission: async (\n roleId: string,\n data: AddRolePermissionRequest,\n ): Promise<AddRolePermissionResponse> => {\n return wrappedFetch(\n client,\n `/access-control/roles/${roleId}/permissions`,\n {\n method: \"POST\",\n body: data,\n },\n );\n },\n getRolePermissions: async (\n roleId: string,\n ): Promise<UserPermissionInfo[]> => {\n return wrappedFetch(\n client,\n `/access-control/roles/${roleId}/permissions`,\n {\n method: \"GET\",\n },\n );\n },\n replaceRolePermissions: async (\n roleId: string,\n data: ReplaceRolePermissionsRequest,\n ): Promise<ReplaceRolePermissionResponse> => {\n return wrappedFetch(\n client,\n `/access-control/roles/${roleId}/permissions`,\n {\n method: \"PUT\",\n body: data,\n },\n );\n },\n removeRolePermission: async (\n roleId: string,\n permissionId: string,\n ): Promise<RemoveRolePermissionResponse> => {\n return wrappedFetch(\n client,\n `/access-control/roles/${roleId}/permissions/${permissionId}`,\n {\n method: \"DELETE\",\n },\n );\n },\n\n // User Roles\n getUserRoles: async (userId: string): Promise<UserRoleInfo[]> => {\n return wrappedFetch(client, `/access-control/users/${userId}/roles`, {\n method: \"GET\",\n });\n },\n assignUserRole: async (\n userId: string,\n data: AssignUserRoleRequest,\n ): Promise<AssignUserRoleResponse> => {\n return wrappedFetch(client, `/access-control/users/${userId}/roles`, {\n method: \"POST\",\n body: data,\n });\n },\n replaceUserRoles: async (\n userId: string,\n data: ReplaceUserRolesRequest,\n ): Promise<ReplaceUserRolesResponse> => {\n return wrappedFetch(client, `/access-control/users/${userId}/roles`, {\n method: \"PUT\",\n body: data,\n });\n },\n removeUserRole: async (\n userId: string,\n roleId: string,\n ): Promise<RemoveUserRoleResponse> => {\n return wrappedFetch(\n client,\n `/access-control/users/${userId}/roles/${roleId}`,\n {\n method: \"DELETE\",\n },\n );\n },\n\n // User Permissions\n getUserPermissions: async (\n userId: string,\n ): Promise<GetUserPermissionsResponse> => {\n return wrappedFetch(\n client,\n `/access-control/users/${userId}/permissions`,\n {\n method: \"GET\",\n },\n );\n },\n checkUserPermissions: async (\n userId: string,\n data: CheckUserPermissionsRequest,\n ): Promise<CheckUserPermissionsResponse> => {\n return wrappedFetch(\n client,\n `/access-control/users/${userId}/permissions/check`,\n {\n method: \"POST\",\n body: data,\n },\n );\n },\n };\n }\n}\n","import { z } from \"zod\";\n\nimport type { User } from \"@/types\";\n\nexport const roleSchema = z.object({\n id: z.string().nonempty(),\n name: z.string().nonempty(),\n description: z.string().nullish(),\n weight: z.number(),\n isSystem: z.boolean(),\n createdAt: z.iso.datetime(),\n updatedAt: z.iso.datetime(),\n});\nexport type Role = z.infer<typeof roleSchema>;\n\nexport const permissionSchema = z.object({\n id: z.string().nonempty(),\n key: z.string().nonempty(),\n description: z.string().nullish(),\n isSystem: z.boolean(),\n createdAt: z.iso.datetime(),\n updatedAt: z.iso.datetime(),\n});\nexport type Permission = z.infer<typeof permissionSchema>;\n\nexport const permissionGrantSourceSchema = z.object({\n roleId: z.string().nonempty(),\n roleName: z.string().nonempty(),\n grantedByUserId: z.string().nullish(),\n grantedAt: z.iso.datetime().nullish(),\n});\nexport type PermissionGrantSource = z.infer<typeof permissionGrantSourceSchema>;\n\nexport const userPermissionInfoSchema = z.object({\n permissionId: z.string().nonempty(),\n permissionKey: z.string().nonempty(),\n permissionDescription: z.string().nullish(),\n grantedByUserId: z.string().nullish(),\n grantedAt: z.iso.datetime().nullish(),\n sources: z.array(permissionGrantSourceSchema).optional(),\n});\nexport type UserPermissionInfo = z.infer<typeof userPermissionInfoSchema>;\n\nexport const userRoleInfoSchema = z.object({\n roleId: z.string().nonempty(),\n roleName: z.string().nonempty(),\n roleDescription: z.string().nullish(),\n assignedByUserId: z.string().nullish(),\n assignedAt: z.iso.datetime().nullish(),\n expiresAt: z.iso.datetime().nullish(),\n});\nexport type UserRoleInfo = z.infer<typeof userRoleInfoSchema>;\n\nexport const roleDetailsSchema = z.object({\n role: roleSchema,\n permissions: z.array(userPermissionInfoSchema),\n});\nexport type RoleDetails = z.infer<typeof roleDetailsSchema>;\n\nexport const getUserPermissionsResponseSchema = z.object({\n permissions: z.array(userPermissionInfoSchema),\n});\nexport type GetUserPermissionsResponse = z.infer<\n typeof getUserPermissionsResponseSchema\n>;\n\nexport const checkUserPermissionsResponseSchema = z.object({\n hasPermissions: z.boolean(),\n});\nexport type CheckUserPermissionsResponse = z.infer<\n typeof checkUserPermissionsResponseSchema\n>;\n\nexport type CreateRoleRequest = {\n name: string;\n description?: string | null;\n weight?: number;\n isSystem?: boolean;\n};\n\nexport type CreateRoleResponse = {\n role: Role;\n};\n\nexport type UpdateRoleRequest = {\n name?: string | null;\n description?: string | null;\n weight?: number;\n};\n\nexport type UpdateRoleResponse = {\n role: Role;\n};\n\nexport type DeleteRoleResponse = {\n message: string;\n};\n\nexport type CreatePermissionRequest = {\n key: string;\n description?: string | null;\n isSystem?: boolean;\n};\n\nexport type CreatePermissionResponse = {\n permission: Permission;\n};\n\nexport type UpdatePermissionRequest = {\n description?: string | null;\n};\n\nexport type UpdatePermissionResponse = {\n permission: Permission;\n};\n\nexport type DeletePermissionResponse = {\n message: string;\n};\n\nexport type AddRolePermissionRequest = {\n permissionId: string;\n};\n\nexport type AddRolePermissionResponse = {\n message: string;\n};\n\nexport type ReplaceRolePermissionsRequest = {\n permissionIds: string[];\n};\n\nexport type ReplaceRolePermissionResponse = {\n message: string;\n};\n\nexport type RemoveRolePermissionResponse = {\n message: string;\n};\n\nexport type AssignUserRoleRequest = {\n roleId: string;\n expiresAt?: string | null;\n};\n\nexport type ReplaceUserRolesRequest = {\n roleIds: string[];\n};\n\nexport type ReplaceUserRolesResponse = {\n message: string;\n};\n\nexport type AssignUserRoleResponse = {\n message: string;\n};\n\nexport type RemoveUserRoleResponse = {\n message: string;\n};\n\nexport type CheckUserPermissionsRequest = {\n permissionKeys: string[];\n};\n\nexport type UserWithPermissions = {\n user: User;\n permissions: UserPermissionInfo[];\n};\n\nexport type UserAuthorizationProfile = {\n user: User;\n roles: UserRoleInfo[];\n permissions: UserPermissionInfo[];\n};\n\nexport type UserWithRoles = {\n user: User;\n roles: UserRoleInfo[];\n};\n","import type { AuthulaClient } from \"@/client\";\nimport { wrappedFetch } from \"@/fetch\";\nimport type { Plugin } from \"@/types\";\nimport type {\n BanUserRequest,\n BanUserResponse,\n CreateUserRequest,\n CreateUserResponse,\n DeleteSessionStateResponse,\n DeleteUserStateResponse,\n StopImpersonationResponse,\n GetAllImpersonationsResponse,\n GetAllUsersResponse,\n GetBannedUserStatesResponse,\n GetImpersonationByIdResponse,\n GetRevokedSessionStatesResponse,\n GetSessionStateResponse,\n GetUserAdminSessionsResponse,\n GetUserByIdResponse,\n GetUserStateResponse,\n RevokeSessionRequest,\n RevokeSessionResponse,\n StartImpersonationRequest,\n StartImpersonationResponse,\n UnbanUserResponse,\n UpdateUserRequest,\n UpdateUserResponse,\n DeleteUserResponse,\n CreateAccountRequest,\n CreateAccountResponse,\n GetUserAccountsResponse,\n GetAccountByIdResponse,\n UpdateAccountRequest,\n UpdateAccountResponse,\n DeleteAccountResponse,\n CreateUserStateRequest,\n CreateUserStateResponse,\n UpdateUserStateRequest,\n UpdateUserStateResponse,\n CreateSessionStateRequest,\n CreateSessionStateResponse,\n UpdateSessionStateRequest,\n UpdateSessionStateResponse,\n} from \"./types\";\n\nexport class AdminPlugin implements Plugin {\n public readonly id = \"admin\";\n\n constructor() {}\n\n public init(client: AuthulaClient) {\n return {\n // User management\n\n createUser: async (\n data: CreateUserRequest,\n ): Promise<CreateUserResponse> => {\n return wrappedFetch(client, \"/admin/users\", {\n method: \"POST\",\n body: data,\n });\n },\n getAllUsers: async (limit?: number): Promise<GetAllUsersResponse> => {\n const urlSearchParams = new URLSearchParams();\n if (limit) {\n urlSearchParams.append(\"limit\", limit.toString());\n }\n const params = urlSearchParams.toString()\n ? `?${urlSearchParams.toString()}`\n : \"\";\n return wrappedFetch(client, `/admin/users${params}`, {\n method: \"GET\",\n });\n },\n getUserById: async (userId: string): Promise<GetUserByIdResponse> => {\n return wrappedFetch(client, `/admin/users/${userId}`, {\n method: \"GET\",\n });\n },\n updateUser: async (\n userId: string,\n data: UpdateUserRequest,\n ): Promise<UpdateUserResponse> => {\n return wrappedFetch(client, `/admin/users/${userId}`, {\n method: \"PATCH\",\n body: data,\n });\n },\n deleteUser: async (userId: string): Promise<DeleteUserResponse> => {\n return wrappedFetch(client, `/admin/users/${userId}`, {\n method: \"DELETE\",\n });\n },\n\n // Account management\n\n createAccount: async (\n userId: string,\n data: CreateAccountRequest,\n ): Promise<CreateAccountResponse> => {\n return wrappedFetch(client, `/admin/users/${userId}/accounts`, {\n method: \"POST\",\n body: data,\n });\n },\n getUserAccounts: async (\n userId: string,\n ): Promise<GetUserAccountsResponse> => {\n return wrappedFetch(client, `/admin/users/${userId}/accounts`, {\n method: \"GET\",\n });\n },\n getAccountById: async (id: string): Promise<GetAccountByIdResponse> => {\n return wrappedFetch(client, `/admin/accounts/${id}`, {\n method: \"GET\",\n });\n },\n updateAccount: async (\n id: string,\n data: UpdateAccountRequest,\n ): Promise<UpdateAccountResponse> => {\n return wrappedFetch(client, `/admin/accounts/${id}`, {\n method: \"PATCH\",\n body: data,\n });\n },\n deleteAccount: async (id: string): Promise<DeleteAccountResponse> => {\n return wrappedFetch(client, `/admin/accounts/${id}`, {\n method: \"DELETE\",\n });\n },\n\n // User state management\n\n getUserState: async (userId: string): Promise<GetUserStateResponse> => {\n return wrappedFetch(client, `/admin/users/${userId}/state`, {\n method: \"GET\",\n });\n },\n createUserState: async (\n userId: string,\n data: CreateUserStateRequest,\n ): Promise<CreateUserStateResponse> => {\n return wrappedFetch(client, `/admin/users/${userId}/state`, {\n method: \"POST\",\n body: data,\n });\n },\n updateUserState: async (\n userId: string,\n data: UpdateUserStateRequest,\n ): Promise<UpdateUserStateResponse> => {\n return wrappedFetch(client, `/admin/users/${userId}/state`, {\n method: \"PATCH\",\n body: data,\n });\n },\n deleteUserState: async (\n userId: string,\n ): Promise<DeleteUserStateResponse> => {\n return wrappedFetch(client, `/admin/users/${userId}/state`, {\n method: \"DELETE\",\n });\n },\n getBannedUserStates: async (): Promise<GetBannedUserStatesResponse> => {\n return wrappedFetch(client, `/admin/users/states/banned`, {\n method: \"GET\",\n });\n },\n banUser: async (\n userId: string,\n data: BanUserRequest,\n ): Promise<BanUserResponse> => {\n return wrappedFetch(client, `/admin/users/${userId}/ban`, {\n method: \"POST\",\n body: data,\n });\n },\n unbanUser: async (userId: string): Promise<UnbanUserResponse> => {\n return wrappedFetch(client, `/admin/users/${userId}/unban`, {\n method: \"POST\",\n });\n },\n getUserAdminSessions: async (\n userId: string,\n ): Promise<GetUserAdminSessionsResponse> => {\n return wrappedFetch(client, `/admin/users/${userId}/sessions`, {\n method: \"GET\",\n });\n },\n\n // Session state management\n\n getSessionState: async (\n sessionId: string,\n ): Promise<GetSessionStateResponse> => {\n return wrappedFetch(client, `/admin/sessions/${sessionId}/state`, {\n method: \"GET\",\n });\n },\n createSessionState: async (\n sessionId: string,\n data: CreateSessionStateRequest,\n ): Promise<CreateSessionStateResponse> => {\n return wrappedFetch(client, `/admin/sessions/${sessionId}/state`, {\n method: \"POST\",\n body: data,\n });\n },\n updateSessionState: async (\n sessionId: string,\n data: UpdateSessionStateRequest,\n ): Promise<UpdateSessionStateResponse> => {\n return wrappedFetch(client, `/admin/sessions/${sessionId}/state`, {\n method: \"PATCH\",\n body: data,\n });\n },\n deleteSessionState: async (\n sessionId: string,\n ): Promise<DeleteSessionStateResponse> => {\n return wrappedFetch(client, `/admin/sessions/${sessionId}/state`, {\n method: \"DELETE\",\n });\n },\n getRevokedSessionStates:\n async (): Promise<GetRevokedSessionStatesResponse> => {\n return wrappedFetch(client, `/admin/sessions/states/revoked`, {\n method: \"GET\",\n });\n },\n revokeSession: async (\n sessionId: string,\n data: RevokeSessionRequest,\n ): Promise<RevokeSessionResponse> => {\n return wrappedFetch(client, `/admin/sessions/${sessionId}/revoke`, {\n method: \"POST\",\n body: data,\n });\n },\n\n // Impersonations\n\n getAllImpersonations: async (): Promise<GetAllImpersonationsResponse> => {\n return wrappedFetch(client, \"/admin/impersonations\", {\n method: \"GET\",\n });\n },\n getImpersonationById: async (\n impersonationId: string,\n ): Promise<GetImpersonationByIdResponse> => {\n return wrappedFetch(\n client,\n `/admin/impersonations/${impersonationId}`,\n {\n method: \"GET\",\n },\n );\n },\n startImpersonation: async (\n data: StartImpersonationRequest,\n ): Promise<StartImpersonationResponse> => {\n return wrappedFetch(client, \"/admin/impersonations\", {\n method: \"POST\",\n body: data,\n });\n },\n stopImpersonation: async (\n impersonationId: string,\n ): Promise<StopImpersonationResponse> => {\n return wrappedFetch(\n client,\n `/admin/impersonations/${impersonationId}/stop`,\n {\n method: \"POST\",\n },\n );\n },\n };\n }\n}\n","import { z } from \"zod\";\n\nimport { sessionSchema, type Account, type User } from \"@/types\";\n\n// ------------------------------\n// SCHEMAS\n// ------------------------------\n\nexport const adminUserStateSchema = z.object({\n userId: z.string().nonempty(),\n isBanned: z.boolean(),\n bannedAt: z.iso.datetime().nullable(),\n bannedUntil: z.iso.datetime().nullable(),\n bannedReason: z.string().nullable(),\n bannedByUserId: z.string().nullable(),\n createdAt: z.iso.datetime(),\n updatedAt: z.iso.datetime(),\n});\nexport type AdminUserState = z.infer<typeof adminUserStateSchema>;\n\nexport const adminSessionStateSchema = z.object({\n sessionId: z.string().nonempty(),\n revokedAt: z.iso.datetime().nullable(),\n revokedReason: z.string().nullable(),\n revokedByUserId: z.string().nullable(),\n impersonatorUserId: z.string().nullable(),\n impersonationReason: z.string().nullable(),\n impersonationExpiresAt: z.iso.datetime().nullable(),\n createdAt: z.iso.datetime(),\n updatedAt: z.iso.datetime(),\n});\nexport type AdminSessionState = z.infer<typeof adminSessionStateSchema>;\n\nexport const adminUserSessionSchema = z.object({\n session: sessionSchema,\n state: adminSessionStateSchema.nullable(),\n});\nexport type AdminUserSession = z.infer<typeof adminUserSessionSchema>;\n\nexport const impersonationSchema = z.object({\n id: z.string().nonempty(),\n actorUserId: z.string().nonempty(),\n targetUserId: z.string().nonempty(),\n actorSessionId: z.string().nullable(),\n impersonationSessionId: z.string().nullable(),\n reason: z.string().nonempty(),\n startedAt: z.iso.datetime(),\n expiresAt: z.iso.datetime(),\n endedAt: z.iso.datetime().nullable(),\n endedByUserId: z.string().nullable(),\n createdAt: z.iso.datetime(),\n updatedAt: z.iso.datetime(),\n});\nexport type Impersonation = z.infer<typeof impersonationSchema>;\n\n// ------------------------------\n// API response types\n// ------------------------------\n\n// User management\n\nexport type CreateUserRequest = {\n name: string;\n email: string;\n emailVerified?: boolean;\n image?: string;\n metadata?: Record<string, unknown>;\n};\n\nexport type CreateUserResponse = {\n user: User;\n};\n\nexport type GetAllUsersResponse = {\n users: Array<User>;\n nextCursor?: string | null;\n};\n\nexport type GetUserByIdResponse = {\n user: User;\n};\n\nexport type UpdateUserRequest = {\n name?: string;\n email?: string;\n emailVerified?: boolean;\n image?: string;\n metadata?: Record<string, unknown>;\n};\n\nexport type UpdateUserResponse = {\n user: User;\n};\n\nexport type DeleteUserResponse = {\n message: string;\n};\n\n// Account management\n\nexport type CreateAccountRequest = {\n providerId: string;\n accountId: string;\n accessToken?: string;\n refreshToken?: string;\n idToken?: string;\n accessTokenExpiresAt?: string;\n refreshTokenExpiresAt?: string;\n scope?: string;\n password?: string;\n};\n\nexport type CreateAccountResponse = {\n account: Account;\n};\n\nexport type GetUserAccountsResponse = {\n accounts: Array<Account>;\n};\n\nexport type GetAccountByIdResponse = {\n account: Account;\n};\n\nexport type UpdateAccountRequest = {\n providerId?: string;\n accountId?: string;\n accessToken?: string;\n refreshToken?: string;\n idToken?: string;\n accessTokenExpiresAt?: string;\n refreshTokenExpiresAt?: string;\n scope?: string;\n password?: string;\n};\n\nexport type UpdateAccountResponse = {\n account: Account;\n};\n\nexport type DeleteAccountResponse = {\n message: string;\n};\n\n// User state management\n\nexport type GetUserStateResponse = {\n state: AdminUserState;\n};\n\nexport type CreateUserStateRequest = {\n banned: boolean;\n bannedUntil?: string;\n bannedReason?: string;\n};\n\nexport type UpdateUserStateRequest = {\n banned: boolean;\n bannedUntil?: string;\n bannedReason?: string;\n};\n\nexport type CreateUserStateResponse = {\n userState: AdminUserState;\n};\n\nexport type UpdateUserStateResponse = {\n userState: AdminUserState;\n};\n\nexport type DeleteUserStateResponse = {\n message: string;\n};\n\nexport type GetBannedUserStatesResponse = Array<AdminUserState>;\n\nexport type BanUserRequest = {\n bannedUntil?: string;\n reason?: string;\n};\n\nexport type BanUserResponse = {\n state: AdminUserState;\n};\n\nexport type UnbanUserResponse = {\n state: AdminUserState;\n};\n\nexport type GetUserAdminSessionsResponse = Array<AdminUserSession>;\n\n// Session state management\n\nexport type GetSessionStateResponse = {\n state: AdminSessionState;\n};\n\nexport type CreateSessionStateRequest = {\n revoke: boolean;\n revokedReason?: string;\n impersonatorUserId?: string;\n impersonationReason?: string;\n impersonationExpiresAt?: string;\n};\n\nexport type UpdateSessionStateRequest = {\n revoke: boolean;\n revokedReason?: string;\n impersonatorUserId?: string;\n impersonationReason?: string;\n impersonationExpiresAt?: string;\n};\n\nexport type CreateSessionStateResponse = {\n state: AdminSessionState;\n};\n\nexport type UpdateSessionStateResponse = {\n state: AdminSessionState;\n};\n\nexport type DeleteSessionStateResponse = {\n message: string;\n};\n\nexport type GetRevokedSessionStatesResponse = Array<AdminSessionState>;\n\nexport type RevokeSessionRequest = {\n reason?: string;\n};\n\nexport type RevokeSessionResponse = {\n sessionState: AdminSessionState;\n};\n\n// Impersonation\n\nexport type GetAllImpersonationsResponse = Array<Impersonation>;\n\nexport type GetImpersonationByIdResponse = {\n impersonation: Impersonation;\n};\n\nexport type StartImpersonationRequest = {\n targetUserId: string;\n reason: string;\n expiresInSeconds?: number;\n};\n\nexport type StartImpersonationResponse = {\n impersonation: Impersonation;\n};\n\nexport type StopImpersonationResponse = {\n message: string;\n};\n","import type { FetchContext, Plugin } from \"@/types\";\nimport type { BearerPluginOptions } from \"./types\";\nimport type { JWTPlugin } from \"../jwt/plugin\";\nimport type { ClientWithPlugins } from \"@/sdk\";\n\nexport class BearerPlugin implements Plugin {\n public readonly id = \"bearer\";\n private refreshPromise: Promise<any> | null = null;\n\n constructor(private readonly options?: BearerPluginOptions) {}\n\n public init(client: ClientWithPlugins<[JWTPlugin]>) {\n client.registerBeforeFetch(async (ctx: FetchContext) => {\n if (typeof document === \"undefined\") {\n return;\n }\n\n const headerName = this.options?.headerName ?? \"Authorization\";\n const token = localStorage.getItem(\"accessToken\");\n if (token) {\n ctx.init.headers = {\n ...ctx.init.headers,\n [headerName]: `Bearer ${token}`,\n };\n }\n });\n\n client.registerAfterFetch(async (ctx: FetchContext, res: Response) => {\n if (typeof document === \"undefined\") {\n return;\n }\n if (res.status !== 401) {\n return;\n }\n if (ctx.meta.retry) {\n return;\n }\n\n const refreshToken = localStorage.getItem(\"refreshToken\");\n if (!refreshToken) {\n return;\n }\n\n if (!client.jwt) {\n console.warn(\"JWT Plugin is required for Bearer token refresh.\");\n return;\n }\n\n // 🔒 SINGLE FLIGHT REFRESH\n if (!this.refreshPromise) {\n this.refreshPromise = (async () => {\n try {\n const response = await client.jwt.refreshToken({\n refreshToken: refreshToken,\n });\n if (!response) {\n return null;\n }\n\n localStorage.setItem(\"accessToken\", response.accessToken);\n localStorage.setItem(\"refreshToken\", response.refreshToken);\n\n return response;\n } finally {\n this.refreshPromise = null;\n }\n })();\n }\n\n const refreshed = await this.refreshPromise;\n if (!refreshed) {\n return;\n }\n\n const headerName = this.options?.headerName ?? \"Authorization\";\n ctx.init.headers = {\n ...ctx.init.headers,\n [headerName]: `Bearer ${refreshed.accessToken}`,\n };\n\n return \"retry\";\n });\n\n return {};\n }\n}\n","import { parse } from \"cookie\";\n\nimport type { FetchContext, Plugin } from \"@/types\";\nimport type { CSRFPluginOptions } from \"./types\";\nimport type { AuthulaClient } from \"@/client\";\n\nexport class CSRFPlugin implements Plugin {\n public readonly id = \"csrf\";\n\n constructor(private readonly options: CSRFPluginOptions) {}\n\n public init(client: AuthulaClient) {\n client.registerBeforeFetch(async (ctx: FetchContext) => {\n // Client-side\n if (typeof document !== \"undefined\") {\n if ([\"OPTIONS\", \"HEAD\", \"GET\"].includes(ctx.init.method || \"GET\")) {\n return;\n }\n\n const cookies = parse(document.cookie);\n const value = cookies[this.options.cookieName];\n\n if (!value) return;\n\n ctx.init.headers = new Headers(ctx.init.headers);\n ctx.init.headers.set(this.options.headerName, value);\n return;\n }\n\n // SSR\n if (this.cookies) {\n if ([\"OPTIONS\", \"HEAD\", \"GET\"].includes(ctx.init.method || \"GET\")) {\n return;\n }\n\n const store = await this.cookies();\n const cookie = store.get(this.options.cookieName);\n\n if (!cookie) return;\n\n ctx.init.headers = new Headers(ctx.init.headers);\n ctx.init.headers.set(this.options.headerName, cookie.value);\n }\n });\n\n return {};\n }\n\n // Injected by client\n private cookies?: () => Promise<any>;\n attachCookies(fn: () => Promise<any>) {\n this.cookies = fn;\n }\n}\n","import type { AuthulaClient } from \"@/client\";\nimport { wrappedFetch } from \"@/fetch\";\nimport type { Plugin } from \"@/types\";\nimport type {\n ChangePasswordRequest,\n RequestEmailChangeRequest,\n RequestPasswordResetRequest,\n SendEmailVerificationRequest,\n SignInRequest,\n SignUpRequest,\n} from \"./types\";\n\nexport class EmailPasswordPlugin implements Plugin {\n public readonly id = \"emailPassword\";\n\n public init(client: AuthulaClient) {\n return {\n signUp: async <T>(data: SignUpRequest): Promise<T> => {\n return wrappedFetch<T>(client, \"/email-password/sign-up\", {\n method: \"POST\",\n body: data,\n });\n },\n signIn: async <T>(data: SignInRequest): Promise<T> => {\n return wrappedFetch<T>(client, \"/email-password/sign-in\", {\n method: \"POST\",\n body: data,\n });\n },\n sendEmailVerification: async (\n data: SendEmailVerificationRequest,\n ): Promise<void> => {\n return wrappedFetch(client, `/email-password/send-email-verification`, {\n method: \"POST\",\n body: data,\n });\n },\n requestPasswordReset: async (\n data: RequestPasswordResetRequest,\n ): Promise<void> => {\n return wrappedFetch(client, `/email-password/request-password-reset`, {\n method: \"POST\",\n body: data,\n });\n },\n changePassword: async (data: ChangePasswordRequest): Promise<void> => {\n return wrappedFetch(client, `/email-password/change-password`, {\n method: \"POST\",\n body: data,\n });\n },\n requestEmailChange: async (\n data: RequestEmailChangeRequest,\n ): Promise<void> => {\n return wrappedFetch(client, `/email-password/request-email-change`, {\n method: \"POST\",\n body: data,\n });\n },\n };\n }\n}\n","import type { AuthulaClient } from \"@/client\";\nimport { wrappedFetch } from \"@/fetch\";\nimport type { Plugin } from \"@/types\";\nimport type {\n JWKSKey,\n TokenRefreshRequest,\n TokenRefreshResponse,\n} from \"./types\";\n\nexport class JWTPlugin implements Plugin {\n public readonly id = \"jwt\";\n\n constructor() {}\n\n public init(client: AuthulaClient) {\n return {\n refreshToken: async (\n data: TokenRefreshRequest,\n ): Promise<TokenRefreshResponse> => {\n return wrappedFetch(client, \"/token/refresh\", {\n method: \"POST\",\n body: data,\n });\n },\n getJWKSKeys: async (): Promise<Array<JWKSKey>> => {\n return wrappedFetch(client, \"/.well-known/jwks.json\", {\n method: \"GET\",\n });\n },\n };\n }\n}\n","import type { AuthulaClient } from \"@/client\";\nimport { wrappedFetch } from \"@/fetch\";\nimport type { Plugin } from \"@/types\";\nimport type {\n MagicLinkSignInRequest,\n MagicLinkSignInResponse,\n MagicLinkExchangeRequest,\n MagicLinkVerifyRequest,\n MagicLinkVerifyResponse,\n} from \"./types\";\n\nexport class MagicLinkPlugin implements Plugin {\n public readonly id = \"magicLink\";\n\n constructor() {}\n\n public init(client: AuthulaClient) {\n return {\n signIn: async (\n data: MagicLinkSignInRequest,\n ): Promise<MagicLinkSignInResponse> => {\n return wrappedFetch(client, \"/magic-link/sign-in\", {\n method: \"POST\",\n body: data,\n });\n },\n verify: async (\n data: MagicLinkVerifyRequest,\n ): Promise<MagicLinkVerifyResponse> => {\n const searchParams = new URLSearchParams();\n searchParams.append(\"token\", data.token);\n if (data.callbackUrl) {\n searchParams.append(\"callback_url\", data.callbackUrl);\n }\n return wrappedFetch(\n client,\n `/magic-link/verify?${searchParams.toString()}`,\n {\n method: \"GET\",\n },\n );\n },\n exchange: async <T>(data: MagicLinkExchangeRequest): Promise<T> => {\n return wrappedFetch(client, \"/magic-link/exchange\", {\n method: \"POST\",\n body: data,\n });\n },\n };\n }\n}\n","import type { AuthulaClient } from \"@/client\";\nimport { wrappedFetch } from \"@/fetch\";\nimport type { Plugin } from \"@/types/plugins\";\nimport type {\n SignInWithOAuth2Request,\n SignInWithOAuth2Response,\n} from \"./types\";\n\nexport class OAuth2Plugin implements Plugin {\n public readonly id = \"oauth2\";\n\n public init(client: AuthulaClient) {\n return {\n signIn: async (\n data: SignInWithOAuth2Request,\n ): Promise<SignInWithOAuth2Response> => {\n return wrappedFetch(\n client,\n `/oauth2/authorize/${data.provider}?redirect_to=${data.redirectTo}`,\n {\n method: \"GET\",\n },\n );\n },\n };\n }\n}\n","import type { AuthulaClient } from \"@/client\";\nimport { wrappedFetch } from \"@/fetch\";\nimport type { Plugin } from \"@/types\";\nimport type {\n AcceptOrganizationInvitationRequest,\n AcceptOrganizationInvitationResponse,\n AddOrganizationMemberRequest,\n AddOrganizationMemberResponse,\n AddOrganizationTeamMemberRequest,\n AddOrganizationTeamMemberResponse,\n CreateOrganizationInvitationRequest,\n CreateOrganizationInvitationResponse,\n CreateOrganizationRequest,\n CreateOrganizationResponse,\n CreateOrganizationTeamRequest,\n CreateOrganizationTeamResponse,\n DeleteOrganizationMemberResponse,\n DeleteOrganizationResponse,\n DeleteOrganizationTeamMemberResponse,\n DeleteOrganizationTeamResponse,\n GetAllOrganizationsResponse,\n GetOrganizationByIdResponse,\n GetOrganizationInvitationResponse,\n GetAllOrganizationInvitationsResponse,\n GetOrganizationMemberResponse,\n GetOrganizationMembersResponse,\n GetOrganizationTeamMemberResponse,\n GetAllOrganizationTeamMembersResponse,\n GetAllOrganizationTeamsResponse,\n RejectOrganizationInvitationResponse,\n RevokeOrganizationInvitationResponse,\n UpdateOrganizationMemberRequest,\n UpdateOrganizationMemberResponse,\n UpdateOrganizationRequest,\n UpdateOrganizationResponse,\n UpdateOrganizationTeamRequest,\n UpdateOrganizationTeamResponse,\n GetOrganizationTeamResponse,\n} from \"./types\";\n\nexport class OrganizationsPlugin implements Plugin {\n public readonly id = \"organizations\";\n\n public init(client: AuthulaClient) {\n return {\n // Organizations\n\n createOrganization: async (\n data: CreateOrganizationRequest,\n ): Promise<CreateOrganizationResponse> => {\n return wrappedFetch(client, \"/organizations\", {\n method: \"POST\",\n body: data,\n });\n },\n getAllOrganizations: async (): Promise<GetAllOrganizationsResponse> => {\n return wrappedFetch(client, \"/organizations\", {\n method: \"GET\",\n });\n },\n getOrganizationById: async (\n organizationId: string,\n ): Promise<GetOrganizationByIdResponse> => {\n return wrappedFetch(client, `/organizations/${organizationId}`, {\n method: \"GET\",\n });\n },\n updateOrganization: async (\n organizationId: string,\n data: UpdateOrganizationRequest,\n ): Promise<UpdateOrganizationResponse> => {\n return wrappedFetch(client, `/organizations/${organizationId}`, {\n method: \"PATCH\",\n body: data,\n });\n },\n deleteOrganization: async (\n organizationId: string,\n ): Promise<DeleteOrganizationResponse> => {\n return wrappedFetch(client, `/organizations/${organizationId}`, {\n method: \"DELETE\",\n });\n },\n\n // Invitations\n\n createOrganizationInvitation: async (\n organizationId: string,\n data: CreateOrganizationInvitationRequest,\n ): Promise<CreateOrganizationInvitationResponse> => {\n return wrappedFetch(\n client,\n `/organizations/${organizationId}/invitations`,\n {\n method: \"POST\",\n body: data,\n },\n );\n },\n getAllOrganizationInvitations: async (\n organizationId: string,\n ): Promise<GetAllOrganizationInvitationsResponse> => {\n return wrappedFetch(\n client,\n `/organizations/${organizationId}/invitations`,\n {\n method: \"GET\",\n },\n );\n },\n getOrganizationInvitation: async (\n organizationId: string,\n invitationId: string,\n ): Promise<GetOrganizationInvitationResponse> => {\n return wrappedFetch(\n client,\n `/organizations/${organizationId}/invitations/${invitationId}`,\n {\n method: \"GET\",\n },\n );\n },\n revokeOrganizationInvitation: async (\n organizationId: string,\n invitationId: string,\n ): Promise<RevokeOrganizationInvitationResponse> => {\n return wrappedFetch(\n client,\n `/organizations/${organizationId}/invitations/${invitationId}`,\n {\n method: \"PATCH\",\n },\n );\n },\n acceptOrganizationInvitation: async (\n organizationId: string,\n invitationId: string,\n data?: AcceptOrganizationInvitationRequest,\n ): Promise<AcceptOrganizationInvitationResponse> => {\n return wrappedFetch(\n client,\n `/organizations/${organizationId}/invitations/${invitationId}/accept`,\n {\n method: \"POST\",\n body: data,\n },\n );\n },\n rejectOrganizationInvitation: async (\n organizationId: string,\n invitationId: string,\n ): Promise<RejectOrganizationInvitationResponse> => {\n return wrappedFetch(\n client,\n `/organizations/${organizationId}/invitations/${invitationId}/reject`,\n {\n method: \"POST\",\n },\n );\n },\n\n // Members\n\n addOrganizationMember: async (\n organizationId: string,\n data: AddOrganizationMemberRequest,\n ): Promise<AddOrganizationMemberResponse> => {\n return wrappedFetch(\n client,\n `/organizations/${organizationId}/members`,\n {\n method: \"POST\",\n body: data,\n },\n );\n },\n getAllOrganizationMembers: async (\n organizationId: string,\n ): Promise<GetOrganizationMembersResponse> => {\n return wrappedFetch(\n client,\n `/organizations/${organizationId}/members`,\n {\n method: \"GET\",\n },\n );\n },\n getOrganizationMember: async (\n organizationId: string,\n memberId: string,\n ): Promise<GetOrganizationMemberResponse> => {\n return wrappedFetch(\n client,\n `/organizations/${organizationId}/members/${memberId}`,\n {\n method: \"GET\",\n },\n );\n },\n updateOrganizationMember: async (\n organizationId: string,\n memberId: string,\n data: UpdateOrganizationMemberRequest,\n ): Promise<UpdateOrganizationMemberResponse> => {\n return wrappedFetch(\n client,\n `/organizations/${organizationId}/members/${memberId}`,\n {\n method: \"PATCH\",\n body: data,\n },\n );\n },\n deleteOrganizationMember: async (\n organizationId: string,\n memberId: string,\n ): Promise<DeleteOrganizationMemberResponse> => {\n return wrappedFetch(\n client,\n `/organizations/${organizationId}/members/${memberId}`,\n {\n method: \"DELETE\",\n },\n );\n },\n\n // Teams\n\n createOrganizationTeam: async (\n organizationId: string,\n data: CreateOrganizationTeamRequest,\n ): Promise<CreateOrganizationTeamResponse> => {\n return wrappedFetch(client, `/organizations/${organizationId}/teams`, {\n method: \"POST\",\n body: data,\n });\n },\n getAllOrganizationTeams: async (\n organizationId: string,\n ): Promise<GetAllOrganizationTeamsResponse> => {\n return wrappedFetch(client, `/organizations/${organizationId}/teams`, {\n method: \"GET\",\n });\n },\n getOrganizationTeam: async (\n organizationId: string,\n teamId: string,\n ): Promise<GetOrganizationTeamResponse> => {\n return wrappedFetch(\n client,\n `/organizations/${organizationId}/teams/${teamId}`,\n {\n method: \"GET\",\n },\n );\n },\n updateOrganizationTeam: async (\n organizationId: string,\n teamId: string,\n data: UpdateOrganizationTeamRequest,\n ): Promise<UpdateOrganizationTeamResponse> => {\n return wrappedFetch(\n client,\n `/organizations/${organizationId}/teams/${teamId}`,\n {\n method: \"PATCH\",\n body: data,\n },\n );\n },\n deleteOrganizationTeam: async (\n organizationId: string,\n teamId: string,\n ): Promise<DeleteOrganizationTeamResponse> => {\n return wrappedFetch(\n client,\n `/organizations/${organizationId}/teams/${teamId}`,\n {\n method: \"DELETE\",\n },\n );\n },\n\n // Team members\n\n addOrganizationTeamMember: async (\n organizationId: string,\n teamId: string,\n data: AddOrganizationTeamMemberRequest,\n ): Promise<AddOrganizationTeamMemberResponse> => {\n return wrappedFetch(\n client,\n `/organizations/${organizationId}/teams/${teamId}/members`,\n {\n method: \"POST\",\n body: data,\n },\n );\n },\n getAllOrganizationTeamMembers: async (\n organizationId: string,\n teamId: string,\n ): Promise<GetAllOrganizationTeamMembersResponse> => {\n return wrappedFetch(\n client,\n `/organizations/${organizationId}/teams/${teamId}/members`,\n {\n method: \"GET\",\n },\n );\n },\n getOrganizationTeamMember: async (\n organizationId: string,\n teamId: string,\n memberId: string,\n ): Promise<GetOrganizationTeamMemberResponse> => {\n return wrappedFetch(\n client,\n `/organizations/${organizationId}/teams/${teamId}/members/${memberId}`,\n {\n method: \"GET\",\n },\n );\n },\n deleteOrganizationTeamMember: async (\n organizationId: string,\n teamId: string,\n memberId: string,\n ): Promise<DeleteOrganizationTeamMemberResponse> => {\n return wrappedFetch(\n client,\n `/organizations/${organizationId}/teams/${teamId}/members/${memberId}`,\n {\n method: \"DELETE\",\n },\n );\n },\n };\n }\n}\n","import type { AuthulaClient } from \"@/client\";\nimport { wrappedFetch } from \"@/fetch\";\nimport type { Plugin } from \"@/types/plugins\";\nimport type {\n DisableResponse,\n EnableResponse,\n GenerateBackupCodesResponse,\n GetTOTPURIResponse,\n VerifyBackupCodeRequest,\n VerifyBackupCodeResponse,\n VerifyTOTPRequest,\n VerifyTOTPResponse,\n} from \"./types\";\n\nexport class TOTPPlugin implements Plugin {\n public readonly id = \"totp\";\n\n public init(client: AuthulaClient) {\n return {\n enable: async (): Promise<EnableResponse> => {\n return wrappedFetch(client, \"/totp/enable\", {\n method: \"POST\",\n });\n },\n disable: async (): Promise<DisableResponse> => {\n return wrappedFetch(client, \"/totp/disable\", {\n method: \"POST\",\n });\n },\n getUri: async (): Promise<GetTOTPURIResponse> => {\n return wrappedFetch(client, \"/totp/get-uri\", {\n method: \"GET\",\n });\n },\n verify: async (data: VerifyTOTPRequest): Promise<VerifyTOTPResponse> => {\n return wrappedFetch(client, \"/totp/verify\", {\n method: \"POST\",\n body: data,\n });\n },\n verifyBackupCode: async (\n data: VerifyBackupCodeRequest,\n ): Promise<VerifyBackupCodeResponse> => {\n return wrappedFetch(client, \"/totp/verify-backup-code\", {\n method: \"POST\",\n body: data,\n });\n },\n generateBackupCodes: async (): Promise<GenerateBackupCodesResponse> => {\n return wrappedFetch(client, \"/totp/generate-backup-codes\", {\n method: \"POST\",\n });\n },\n };\n }\n}\n"],"mappings":"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"}
package/package.json CHANGED
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "name": "authula",
3
3
  "type": "module",
4
- "version": "0.4.0",
4
+ "version": "0.5.0",
5
5
  "description": "Official SDK for Authula.",
6
6
  "license": "Apache-2.0",
7
7
  "homepage": "https://github.com/Authula/authula-node-sdk#readme",
@@ -40,7 +40,7 @@
40
40
  },
41
41
  "dependencies": {
42
42
  "cookie": "^1.1.1",
43
- "es-toolkit": "^1.45.1",
43
+ "es-toolkit": "^1.46.0",
44
44
  "zod": "^4.3.6"
45
45
  },
46
46
  "devDependencies": {
@@ -48,6 +48,6 @@
48
48
  "bumpp": "^11.0.1",
49
49
  "tsdown": "^0.21.9",
50
50
  "typescript": "^6.0.3",
51
- "vitest": "^4.1.4"
51
+ "vitest": "^4.1.5"
52
52
  }
53
53
  }