@meistrari/auth-core 1.2.0 → 1.3.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.
package/dist/index.d.mts CHANGED
@@ -1,13 +1,14 @@
1
1
  import * as better_auth_client from 'better-auth/client';
2
2
  import { BetterFetchOption } from 'better-auth/client';
3
- export { BetterFetchError as APIError } from 'better-auth/client';
4
3
  import * as better_auth from 'better-auth';
5
4
  import { JWTPayload } from 'better-auth';
6
5
  import * as better_auth_plugins from 'better-auth/plugins';
7
6
  import * as jose from 'jose';
8
7
  import * as _better_auth_sso from '@better-auth/sso';
8
+ import * as better_call from 'better-call';
9
9
  import * as nanostores from 'nanostores';
10
10
  import * as _better_fetch_fetch from '@better-fetch/fetch';
11
+ export { BetterFetchError as APIError } from '@better-fetch/fetch';
11
12
  import * as better_auth_client_plugins from 'better-auth/client/plugins';
12
13
 
13
14
  declare const ac: {
@@ -301,11 +302,15 @@ declare function createAPIClient(apiUrl: string, fetchOptions?: BetterFetchOptio
301
302
  };
302
303
  };
303
304
  } & {
304
- handshake: <FetchOptions extends better_auth.ClientFetchOption<never, Partial<Record<string, any>> & Record<string, any>, Record<string, any> | undefined>>(data_0?: better_auth_client_plugins.Prettify<{
305
- query?: Record<string, any> | undefined;
305
+ handshake: <FetchOptions extends better_auth.ClientFetchOption<never, Partial<{
306
+ origin: string;
307
+ }> & Record<string, any>, Record<string, any> | undefined>>(data_0: better_auth_client_plugins.Prettify<{
308
+ query: {
309
+ origin: string;
310
+ };
306
311
  fetchOptions?: FetchOptions | undefined;
307
- }> | undefined, data_1?: FetchOptions | undefined) => Promise<_better_fetch_fetch.BetterFetchResponse<{
308
- status: ("OK" | "CREATED" | "ACCEPTED" | "NO_CONTENT" | "MULTIPLE_CHOICES" | "MOVED_PERMANENTLY" | "FOUND" | "SEE_OTHER" | "NOT_MODIFIED" | "TEMPORARY_REDIRECT" | "BAD_REQUEST" | "UNAUTHORIZED" | "PAYMENT_REQUIRED" | "FORBIDDEN" | "NOT_FOUND" | "METHOD_NOT_ALLOWED" | "NOT_ACCEPTABLE" | "PROXY_AUTHENTICATION_REQUIRED" | "REQUEST_TIMEOUT" | "CONFLICT" | "GONE" | "LENGTH_REQUIRED" | "PRECONDITION_FAILED" | "PAYLOAD_TOO_LARGE" | "URI_TOO_LONG" | "UNSUPPORTED_MEDIA_TYPE" | "RANGE_NOT_SATISFIABLE" | "EXPECTATION_FAILED" | "I'M_A_TEAPOT" | "MISDIRECTED_REQUEST" | "UNPROCESSABLE_ENTITY" | "LOCKED" | "FAILED_DEPENDENCY" | "TOO_EARLY" | "UPGRADE_REQUIRED" | "PRECONDITION_REQUIRED" | "TOO_MANY_REQUESTS" | "REQUEST_HEADER_FIELDS_TOO_LARGE" | "UNAVAILABLE_FOR_LEGAL_REASONS" | "INTERNAL_SERVER_ERROR" | "NOT_IMPLEMENTED" | "BAD_GATEWAY" | "SERVICE_UNAVAILABLE" | "GATEWAY_TIMEOUT" | "HTTP_VERSION_NOT_SUPPORTED" | "VARIANT_ALSO_NEGOTIATES" | "INSUFFICIENT_STORAGE" | "LOOP_DETECTED" | "NOT_EXTENDED" | "NETWORK_AUTHENTICATION_REQUIRED") | better_auth.Status;
312
+ }>, data_1?: FetchOptions | undefined) => Promise<_better_fetch_fetch.BetterFetchResponse<{
313
+ status: ("OK" | "CREATED" | "ACCEPTED" | "NO_CONTENT" | "MULTIPLE_CHOICES" | "MOVED_PERMANENTLY" | "FOUND" | "SEE_OTHER" | "NOT_MODIFIED" | "TEMPORARY_REDIRECT" | "BAD_REQUEST" | "UNAUTHORIZED" | "PAYMENT_REQUIRED" | "FORBIDDEN" | "NOT_FOUND" | "METHOD_NOT_ALLOWED" | "NOT_ACCEPTABLE" | "PROXY_AUTHENTICATION_REQUIRED" | "REQUEST_TIMEOUT" | "CONFLICT" | "GONE" | "LENGTH_REQUIRED" | "PRECONDITION_FAILED" | "PAYLOAD_TOO_LARGE" | "URI_TOO_LONG" | "UNSUPPORTED_MEDIA_TYPE" | "RANGE_NOT_SATISFIABLE" | "EXPECTATION_FAILED" | "I'M_A_TEAPOT" | "MISDIRECTED_REQUEST" | "UNPROCESSABLE_ENTITY" | "LOCKED" | "FAILED_DEPENDENCY" | "TOO_EARLY" | "UPGRADE_REQUIRED" | "PRECONDITION_REQUIRED" | "TOO_MANY_REQUESTS" | "REQUEST_HEADER_FIELDS_TOO_LARGE" | "UNAVAILABLE_FOR_LEGAL_REASONS" | "INTERNAL_SERVER_ERROR" | "NOT_IMPLEMENTED" | "BAD_GATEWAY" | "SERVICE_UNAVAILABLE" | "GATEWAY_TIMEOUT" | "HTTP_VERSION_NOT_SUPPORTED" | "VARIANT_ALSO_NEGOTIATES" | "INSUFFICIENT_STORAGE" | "LOOP_DETECTED" | "NOT_EXTENDED" | "NETWORK_AUTHENTICATION_REQUIRED") | better_call.Status;
309
314
  body: ({
310
315
  message?: string;
311
316
  code?: string;
@@ -3074,11 +3079,15 @@ declare const stub: {
3074
3079
  };
3075
3080
  };
3076
3081
  } & {
3077
- handshake: <FetchOptions extends better_auth.ClientFetchOption<never, Partial<Record<string, any>> & Record<string, any>, Record<string, any> | undefined>>(data_0?: better_auth_client_plugins.Prettify<{
3078
- query?: Record<string, any> | undefined;
3082
+ handshake: <FetchOptions extends better_auth.ClientFetchOption<never, Partial<{
3083
+ origin: string;
3084
+ }> & Record<string, any>, Record<string, any> | undefined>>(data_0: better_auth_client_plugins.Prettify<{
3085
+ query: {
3086
+ origin: string;
3087
+ };
3079
3088
  fetchOptions?: FetchOptions | undefined;
3080
- }> | undefined, data_1?: FetchOptions | undefined) => Promise<_better_fetch_fetch.BetterFetchResponse<{
3081
- status: ("OK" | "CREATED" | "ACCEPTED" | "NO_CONTENT" | "MULTIPLE_CHOICES" | "MOVED_PERMANENTLY" | "FOUND" | "SEE_OTHER" | "NOT_MODIFIED" | "TEMPORARY_REDIRECT" | "BAD_REQUEST" | "UNAUTHORIZED" | "PAYMENT_REQUIRED" | "FORBIDDEN" | "NOT_FOUND" | "METHOD_NOT_ALLOWED" | "NOT_ACCEPTABLE" | "PROXY_AUTHENTICATION_REQUIRED" | "REQUEST_TIMEOUT" | "CONFLICT" | "GONE" | "LENGTH_REQUIRED" | "PRECONDITION_FAILED" | "PAYLOAD_TOO_LARGE" | "URI_TOO_LONG" | "UNSUPPORTED_MEDIA_TYPE" | "RANGE_NOT_SATISFIABLE" | "EXPECTATION_FAILED" | "I'M_A_TEAPOT" | "MISDIRECTED_REQUEST" | "UNPROCESSABLE_ENTITY" | "LOCKED" | "FAILED_DEPENDENCY" | "TOO_EARLY" | "UPGRADE_REQUIRED" | "PRECONDITION_REQUIRED" | "TOO_MANY_REQUESTS" | "REQUEST_HEADER_FIELDS_TOO_LARGE" | "UNAVAILABLE_FOR_LEGAL_REASONS" | "INTERNAL_SERVER_ERROR" | "NOT_IMPLEMENTED" | "BAD_GATEWAY" | "SERVICE_UNAVAILABLE" | "GATEWAY_TIMEOUT" | "HTTP_VERSION_NOT_SUPPORTED" | "VARIANT_ALSO_NEGOTIATES" | "INSUFFICIENT_STORAGE" | "LOOP_DETECTED" | "NOT_EXTENDED" | "NETWORK_AUTHENTICATION_REQUIRED") | better_auth.Status;
3089
+ }>, data_1?: FetchOptions | undefined) => Promise<_better_fetch_fetch.BetterFetchResponse<{
3090
+ status: ("OK" | "CREATED" | "ACCEPTED" | "NO_CONTENT" | "MULTIPLE_CHOICES" | "MOVED_PERMANENTLY" | "FOUND" | "SEE_OTHER" | "NOT_MODIFIED" | "TEMPORARY_REDIRECT" | "BAD_REQUEST" | "UNAUTHORIZED" | "PAYMENT_REQUIRED" | "FORBIDDEN" | "NOT_FOUND" | "METHOD_NOT_ALLOWED" | "NOT_ACCEPTABLE" | "PROXY_AUTHENTICATION_REQUIRED" | "REQUEST_TIMEOUT" | "CONFLICT" | "GONE" | "LENGTH_REQUIRED" | "PRECONDITION_FAILED" | "PAYLOAD_TOO_LARGE" | "URI_TOO_LONG" | "UNSUPPORTED_MEDIA_TYPE" | "RANGE_NOT_SATISFIABLE" | "EXPECTATION_FAILED" | "I'M_A_TEAPOT" | "MISDIRECTED_REQUEST" | "UNPROCESSABLE_ENTITY" | "LOCKED" | "FAILED_DEPENDENCY" | "TOO_EARLY" | "UPGRADE_REQUIRED" | "PRECONDITION_REQUIRED" | "TOO_MANY_REQUESTS" | "REQUEST_HEADER_FIELDS_TOO_LARGE" | "UNAVAILABLE_FOR_LEGAL_REASONS" | "INTERNAL_SERVER_ERROR" | "NOT_IMPLEMENTED" | "BAD_GATEWAY" | "SERVICE_UNAVAILABLE" | "GATEWAY_TIMEOUT" | "HTTP_VERSION_NOT_SUPPORTED" | "VARIANT_ALSO_NEGOTIATES" | "INSUFFICIENT_STORAGE" | "LOOP_DETECTED" | "NOT_EXTENDED" | "NETWORK_AUTHENTICATION_REQUIRED") | better_call.Status;
3082
3091
  body: ({
3083
3092
  message?: string;
3084
3093
  code?: string;
@@ -6068,6 +6077,7 @@ declare class OrganizationService {
6068
6077
  *
6069
6078
  * @param teamId - The team ID
6070
6079
  * @param userId - The user ID to add
6080
+ * @returns The added team member
6071
6081
  */
6072
6082
  addTeamMember(teamId: string, userId: string): Promise<{
6073
6083
  id: string;
@@ -6223,6 +6233,141 @@ declare class SessionService {
6223
6233
  }>;
6224
6234
  }
6225
6235
 
6236
+ type CreateApiKeyPayload = {
6237
+ name?: string;
6238
+ expiresIn?: number;
6239
+ prefix?: string;
6240
+ metadata?: ApiKeyMetadata;
6241
+ };
6242
+ type UpdateApiKeyPayload = {
6243
+ id: string;
6244
+ name?: string;
6245
+ };
6246
+ type ApiKeyMetadata = {
6247
+ user: {
6248
+ id: string;
6249
+ email: string;
6250
+ };
6251
+ workspace: {
6252
+ id: string;
6253
+ title: string;
6254
+ };
6255
+ } & Record<string, unknown>;
6256
+
6257
+ /**
6258
+ * Service for managing API keys
6259
+ *
6260
+ * Provides comprehensive API key management including:
6261
+ * - API key CRUD operations
6262
+ */
6263
+ declare class ApiKeyService {
6264
+ private client;
6265
+ /**
6266
+ * Creates a new ApiKeyService instance.
6267
+ *
6268
+ * @param client - The API client for making API key requests
6269
+ */
6270
+ constructor(client: APIClient);
6271
+ createApiKey(payload: CreateApiKeyPayload): Promise<{
6272
+ key: string;
6273
+ metadata: any;
6274
+ permissions: any;
6275
+ id: string;
6276
+ name: string | null;
6277
+ start: string | null;
6278
+ prefix: string | null;
6279
+ userId: string;
6280
+ refillInterval: number | null;
6281
+ refillAmount: number | null;
6282
+ lastRefillAt: Date | null;
6283
+ enabled: boolean;
6284
+ rateLimitEnabled: boolean;
6285
+ rateLimitTimeWindow: number | null;
6286
+ rateLimitMax: number | null;
6287
+ requestCount: number;
6288
+ remaining: number | null;
6289
+ lastRequest: Date | null;
6290
+ expiresAt: Date | null;
6291
+ createdAt: Date;
6292
+ updatedAt: Date;
6293
+ }>;
6294
+ getApiKey(id: string): Promise<{
6295
+ permissions: {
6296
+ [key: string]: string[];
6297
+ } | null;
6298
+ id: string;
6299
+ name: string | null;
6300
+ start: string | null;
6301
+ prefix: string | null;
6302
+ userId: string;
6303
+ refillInterval: number | null;
6304
+ refillAmount: number | null;
6305
+ lastRefillAt: Date | null;
6306
+ enabled: boolean;
6307
+ rateLimitEnabled: boolean;
6308
+ rateLimitTimeWindow: number | null;
6309
+ rateLimitMax: number | null;
6310
+ requestCount: number;
6311
+ remaining: number | null;
6312
+ lastRequest: Date | null;
6313
+ expiresAt: Date | null;
6314
+ createdAt: Date;
6315
+ updatedAt: Date;
6316
+ metadata: Record<string, any> | null;
6317
+ }>;
6318
+ listApiKeys(): Promise<{
6319
+ permissions: {
6320
+ [key: string]: string[];
6321
+ } | null;
6322
+ id: string;
6323
+ name: string | null;
6324
+ start: string | null;
6325
+ prefix: string | null;
6326
+ userId: string;
6327
+ refillInterval: number | null;
6328
+ refillAmount: number | null;
6329
+ lastRefillAt: Date | null;
6330
+ enabled: boolean;
6331
+ rateLimitEnabled: boolean;
6332
+ rateLimitTimeWindow: number | null;
6333
+ rateLimitMax: number | null;
6334
+ requestCount: number;
6335
+ remaining: number | null;
6336
+ lastRequest: Date | null;
6337
+ expiresAt: Date | null;
6338
+ createdAt: Date;
6339
+ updatedAt: Date;
6340
+ metadata: Record<string, any> | null;
6341
+ }[]>;
6342
+ updateApiKey(payload: UpdateApiKeyPayload): Promise<{
6343
+ permissions: {
6344
+ [key: string]: string[];
6345
+ } | null;
6346
+ id: string;
6347
+ name: string | null;
6348
+ start: string | null;
6349
+ prefix: string | null;
6350
+ userId: string;
6351
+ refillInterval: number | null;
6352
+ refillAmount: number | null;
6353
+ lastRefillAt: Date | null;
6354
+ enabled: boolean;
6355
+ rateLimitEnabled: boolean;
6356
+ rateLimitTimeWindow: number | null;
6357
+ rateLimitMax: number | null;
6358
+ requestCount: number;
6359
+ remaining: number | null;
6360
+ lastRequest: Date | null;
6361
+ expiresAt: Date | null;
6362
+ createdAt: Date;
6363
+ updatedAt: Date;
6364
+ metadata: Record<string, any> | null;
6365
+ }>;
6366
+ deleteApiKey(id: string): Promise<{
6367
+ success: boolean;
6368
+ }>;
6369
+ }
6370
+
6226
6371
  declare class BaseError extends Error {
6227
6372
  code: string;
6228
6373
  constructor(code: string, message: string, options?: ErrorOptions);
@@ -6280,6 +6425,10 @@ declare class AuthClient {
6280
6425
  * Organization management service for multi-tenant operations
6281
6426
  */
6282
6427
  organization: OrganizationService;
6428
+ /**
6429
+ * API key management service for API key operations
6430
+ */
6431
+ apiKey: ApiKeyService;
6283
6432
  /**
6284
6433
  * Creates a new AuthClient instance.
6285
6434
  *
@@ -6343,4 +6492,4 @@ declare function validateToken(token: string, apiUrl: string): Promise<boolean>;
6343
6492
  declare function extractTokenPayload(token: string): JWTTokenPayload;
6344
6493
 
6345
6494
  export { AuthClient, EmailRequired, InvalidCallbackURL, InvalidSocialProvider, Roles, ac, createAPIClient, extractTokenPayload, isTokenExpired, organizationAdditionalFields, rolesAccessControl, userAdditionalFields, validateToken };
6346
- export type { APIClient, CreateTeamPayload, FullOrganization, GetOrganizationOptions, Invitation, InviteUserToOrganizationOptions, JWTTokenPayload, ListMembersOptions, ExtendedMember as Member, ExtendedOrganization as Organization, RemoveUserFromOrganizationOptions, Role, Session, SignInWithEmailAndPasswordOptions, SignInWithSamlOptions, SocialSignInOptions, Team, TeamMember, UpdateMemberRoleOptions, UpdateOrganizationPayload, UpdateTeamPayload, User };
6495
+ export type { APIClient, ApiKeyMetadata, CreateApiKeyPayload, CreateTeamPayload, FullOrganization, GetOrganizationOptions, Invitation, InviteUserToOrganizationOptions, JWTTokenPayload, ListMembersOptions, ExtendedMember as Member, ExtendedOrganization as Organization, RemoveUserFromOrganizationOptions, Role, Session, SignInWithEmailAndPasswordOptions, SignInWithSamlOptions, SocialSignInOptions, Team, TeamMember, UpdateApiKeyPayload, UpdateMemberRoleOptions, UpdateOrganizationPayload, UpdateTeamPayload, User };
package/dist/index.d.ts CHANGED
@@ -1,13 +1,14 @@
1
1
  import * as better_auth_client from 'better-auth/client';
2
2
  import { BetterFetchOption } from 'better-auth/client';
3
- export { BetterFetchError as APIError } from 'better-auth/client';
4
3
  import * as better_auth from 'better-auth';
5
4
  import { JWTPayload } from 'better-auth';
6
5
  import * as better_auth_plugins from 'better-auth/plugins';
7
6
  import * as jose from 'jose';
8
7
  import * as _better_auth_sso from '@better-auth/sso';
8
+ import * as better_call from 'better-call';
9
9
  import * as nanostores from 'nanostores';
10
10
  import * as _better_fetch_fetch from '@better-fetch/fetch';
11
+ export { BetterFetchError as APIError } from '@better-fetch/fetch';
11
12
  import * as better_auth_client_plugins from 'better-auth/client/plugins';
12
13
 
13
14
  declare const ac: {
@@ -301,11 +302,15 @@ declare function createAPIClient(apiUrl: string, fetchOptions?: BetterFetchOptio
301
302
  };
302
303
  };
303
304
  } & {
304
- handshake: <FetchOptions extends better_auth.ClientFetchOption<never, Partial<Record<string, any>> & Record<string, any>, Record<string, any> | undefined>>(data_0?: better_auth_client_plugins.Prettify<{
305
- query?: Record<string, any> | undefined;
305
+ handshake: <FetchOptions extends better_auth.ClientFetchOption<never, Partial<{
306
+ origin: string;
307
+ }> & Record<string, any>, Record<string, any> | undefined>>(data_0: better_auth_client_plugins.Prettify<{
308
+ query: {
309
+ origin: string;
310
+ };
306
311
  fetchOptions?: FetchOptions | undefined;
307
- }> | undefined, data_1?: FetchOptions | undefined) => Promise<_better_fetch_fetch.BetterFetchResponse<{
308
- status: ("OK" | "CREATED" | "ACCEPTED" | "NO_CONTENT" | "MULTIPLE_CHOICES" | "MOVED_PERMANENTLY" | "FOUND" | "SEE_OTHER" | "NOT_MODIFIED" | "TEMPORARY_REDIRECT" | "BAD_REQUEST" | "UNAUTHORIZED" | "PAYMENT_REQUIRED" | "FORBIDDEN" | "NOT_FOUND" | "METHOD_NOT_ALLOWED" | "NOT_ACCEPTABLE" | "PROXY_AUTHENTICATION_REQUIRED" | "REQUEST_TIMEOUT" | "CONFLICT" | "GONE" | "LENGTH_REQUIRED" | "PRECONDITION_FAILED" | "PAYLOAD_TOO_LARGE" | "URI_TOO_LONG" | "UNSUPPORTED_MEDIA_TYPE" | "RANGE_NOT_SATISFIABLE" | "EXPECTATION_FAILED" | "I'M_A_TEAPOT" | "MISDIRECTED_REQUEST" | "UNPROCESSABLE_ENTITY" | "LOCKED" | "FAILED_DEPENDENCY" | "TOO_EARLY" | "UPGRADE_REQUIRED" | "PRECONDITION_REQUIRED" | "TOO_MANY_REQUESTS" | "REQUEST_HEADER_FIELDS_TOO_LARGE" | "UNAVAILABLE_FOR_LEGAL_REASONS" | "INTERNAL_SERVER_ERROR" | "NOT_IMPLEMENTED" | "BAD_GATEWAY" | "SERVICE_UNAVAILABLE" | "GATEWAY_TIMEOUT" | "HTTP_VERSION_NOT_SUPPORTED" | "VARIANT_ALSO_NEGOTIATES" | "INSUFFICIENT_STORAGE" | "LOOP_DETECTED" | "NOT_EXTENDED" | "NETWORK_AUTHENTICATION_REQUIRED") | better_auth.Status;
312
+ }>, data_1?: FetchOptions | undefined) => Promise<_better_fetch_fetch.BetterFetchResponse<{
313
+ status: ("OK" | "CREATED" | "ACCEPTED" | "NO_CONTENT" | "MULTIPLE_CHOICES" | "MOVED_PERMANENTLY" | "FOUND" | "SEE_OTHER" | "NOT_MODIFIED" | "TEMPORARY_REDIRECT" | "BAD_REQUEST" | "UNAUTHORIZED" | "PAYMENT_REQUIRED" | "FORBIDDEN" | "NOT_FOUND" | "METHOD_NOT_ALLOWED" | "NOT_ACCEPTABLE" | "PROXY_AUTHENTICATION_REQUIRED" | "REQUEST_TIMEOUT" | "CONFLICT" | "GONE" | "LENGTH_REQUIRED" | "PRECONDITION_FAILED" | "PAYLOAD_TOO_LARGE" | "URI_TOO_LONG" | "UNSUPPORTED_MEDIA_TYPE" | "RANGE_NOT_SATISFIABLE" | "EXPECTATION_FAILED" | "I'M_A_TEAPOT" | "MISDIRECTED_REQUEST" | "UNPROCESSABLE_ENTITY" | "LOCKED" | "FAILED_DEPENDENCY" | "TOO_EARLY" | "UPGRADE_REQUIRED" | "PRECONDITION_REQUIRED" | "TOO_MANY_REQUESTS" | "REQUEST_HEADER_FIELDS_TOO_LARGE" | "UNAVAILABLE_FOR_LEGAL_REASONS" | "INTERNAL_SERVER_ERROR" | "NOT_IMPLEMENTED" | "BAD_GATEWAY" | "SERVICE_UNAVAILABLE" | "GATEWAY_TIMEOUT" | "HTTP_VERSION_NOT_SUPPORTED" | "VARIANT_ALSO_NEGOTIATES" | "INSUFFICIENT_STORAGE" | "LOOP_DETECTED" | "NOT_EXTENDED" | "NETWORK_AUTHENTICATION_REQUIRED") | better_call.Status;
309
314
  body: ({
310
315
  message?: string;
311
316
  code?: string;
@@ -3074,11 +3079,15 @@ declare const stub: {
3074
3079
  };
3075
3080
  };
3076
3081
  } & {
3077
- handshake: <FetchOptions extends better_auth.ClientFetchOption<never, Partial<Record<string, any>> & Record<string, any>, Record<string, any> | undefined>>(data_0?: better_auth_client_plugins.Prettify<{
3078
- query?: Record<string, any> | undefined;
3082
+ handshake: <FetchOptions extends better_auth.ClientFetchOption<never, Partial<{
3083
+ origin: string;
3084
+ }> & Record<string, any>, Record<string, any> | undefined>>(data_0: better_auth_client_plugins.Prettify<{
3085
+ query: {
3086
+ origin: string;
3087
+ };
3079
3088
  fetchOptions?: FetchOptions | undefined;
3080
- }> | undefined, data_1?: FetchOptions | undefined) => Promise<_better_fetch_fetch.BetterFetchResponse<{
3081
- status: ("OK" | "CREATED" | "ACCEPTED" | "NO_CONTENT" | "MULTIPLE_CHOICES" | "MOVED_PERMANENTLY" | "FOUND" | "SEE_OTHER" | "NOT_MODIFIED" | "TEMPORARY_REDIRECT" | "BAD_REQUEST" | "UNAUTHORIZED" | "PAYMENT_REQUIRED" | "FORBIDDEN" | "NOT_FOUND" | "METHOD_NOT_ALLOWED" | "NOT_ACCEPTABLE" | "PROXY_AUTHENTICATION_REQUIRED" | "REQUEST_TIMEOUT" | "CONFLICT" | "GONE" | "LENGTH_REQUIRED" | "PRECONDITION_FAILED" | "PAYLOAD_TOO_LARGE" | "URI_TOO_LONG" | "UNSUPPORTED_MEDIA_TYPE" | "RANGE_NOT_SATISFIABLE" | "EXPECTATION_FAILED" | "I'M_A_TEAPOT" | "MISDIRECTED_REQUEST" | "UNPROCESSABLE_ENTITY" | "LOCKED" | "FAILED_DEPENDENCY" | "TOO_EARLY" | "UPGRADE_REQUIRED" | "PRECONDITION_REQUIRED" | "TOO_MANY_REQUESTS" | "REQUEST_HEADER_FIELDS_TOO_LARGE" | "UNAVAILABLE_FOR_LEGAL_REASONS" | "INTERNAL_SERVER_ERROR" | "NOT_IMPLEMENTED" | "BAD_GATEWAY" | "SERVICE_UNAVAILABLE" | "GATEWAY_TIMEOUT" | "HTTP_VERSION_NOT_SUPPORTED" | "VARIANT_ALSO_NEGOTIATES" | "INSUFFICIENT_STORAGE" | "LOOP_DETECTED" | "NOT_EXTENDED" | "NETWORK_AUTHENTICATION_REQUIRED") | better_auth.Status;
3089
+ }>, data_1?: FetchOptions | undefined) => Promise<_better_fetch_fetch.BetterFetchResponse<{
3090
+ status: ("OK" | "CREATED" | "ACCEPTED" | "NO_CONTENT" | "MULTIPLE_CHOICES" | "MOVED_PERMANENTLY" | "FOUND" | "SEE_OTHER" | "NOT_MODIFIED" | "TEMPORARY_REDIRECT" | "BAD_REQUEST" | "UNAUTHORIZED" | "PAYMENT_REQUIRED" | "FORBIDDEN" | "NOT_FOUND" | "METHOD_NOT_ALLOWED" | "NOT_ACCEPTABLE" | "PROXY_AUTHENTICATION_REQUIRED" | "REQUEST_TIMEOUT" | "CONFLICT" | "GONE" | "LENGTH_REQUIRED" | "PRECONDITION_FAILED" | "PAYLOAD_TOO_LARGE" | "URI_TOO_LONG" | "UNSUPPORTED_MEDIA_TYPE" | "RANGE_NOT_SATISFIABLE" | "EXPECTATION_FAILED" | "I'M_A_TEAPOT" | "MISDIRECTED_REQUEST" | "UNPROCESSABLE_ENTITY" | "LOCKED" | "FAILED_DEPENDENCY" | "TOO_EARLY" | "UPGRADE_REQUIRED" | "PRECONDITION_REQUIRED" | "TOO_MANY_REQUESTS" | "REQUEST_HEADER_FIELDS_TOO_LARGE" | "UNAVAILABLE_FOR_LEGAL_REASONS" | "INTERNAL_SERVER_ERROR" | "NOT_IMPLEMENTED" | "BAD_GATEWAY" | "SERVICE_UNAVAILABLE" | "GATEWAY_TIMEOUT" | "HTTP_VERSION_NOT_SUPPORTED" | "VARIANT_ALSO_NEGOTIATES" | "INSUFFICIENT_STORAGE" | "LOOP_DETECTED" | "NOT_EXTENDED" | "NETWORK_AUTHENTICATION_REQUIRED") | better_call.Status;
3082
3091
  body: ({
3083
3092
  message?: string;
3084
3093
  code?: string;
@@ -6068,6 +6077,7 @@ declare class OrganizationService {
6068
6077
  *
6069
6078
  * @param teamId - The team ID
6070
6079
  * @param userId - The user ID to add
6080
+ * @returns The added team member
6071
6081
  */
6072
6082
  addTeamMember(teamId: string, userId: string): Promise<{
6073
6083
  id: string;
@@ -6223,6 +6233,141 @@ declare class SessionService {
6223
6233
  }>;
6224
6234
  }
6225
6235
 
6236
+ type CreateApiKeyPayload = {
6237
+ name?: string;
6238
+ expiresIn?: number;
6239
+ prefix?: string;
6240
+ metadata?: ApiKeyMetadata;
6241
+ };
6242
+ type UpdateApiKeyPayload = {
6243
+ id: string;
6244
+ name?: string;
6245
+ };
6246
+ type ApiKeyMetadata = {
6247
+ user: {
6248
+ id: string;
6249
+ email: string;
6250
+ };
6251
+ workspace: {
6252
+ id: string;
6253
+ title: string;
6254
+ };
6255
+ } & Record<string, unknown>;
6256
+
6257
+ /**
6258
+ * Service for managing API keys
6259
+ *
6260
+ * Provides comprehensive API key management including:
6261
+ * - API key CRUD operations
6262
+ */
6263
+ declare class ApiKeyService {
6264
+ private client;
6265
+ /**
6266
+ * Creates a new ApiKeyService instance.
6267
+ *
6268
+ * @param client - The API client for making API key requests
6269
+ */
6270
+ constructor(client: APIClient);
6271
+ createApiKey(payload: CreateApiKeyPayload): Promise<{
6272
+ key: string;
6273
+ metadata: any;
6274
+ permissions: any;
6275
+ id: string;
6276
+ name: string | null;
6277
+ start: string | null;
6278
+ prefix: string | null;
6279
+ userId: string;
6280
+ refillInterval: number | null;
6281
+ refillAmount: number | null;
6282
+ lastRefillAt: Date | null;
6283
+ enabled: boolean;
6284
+ rateLimitEnabled: boolean;
6285
+ rateLimitTimeWindow: number | null;
6286
+ rateLimitMax: number | null;
6287
+ requestCount: number;
6288
+ remaining: number | null;
6289
+ lastRequest: Date | null;
6290
+ expiresAt: Date | null;
6291
+ createdAt: Date;
6292
+ updatedAt: Date;
6293
+ }>;
6294
+ getApiKey(id: string): Promise<{
6295
+ permissions: {
6296
+ [key: string]: string[];
6297
+ } | null;
6298
+ id: string;
6299
+ name: string | null;
6300
+ start: string | null;
6301
+ prefix: string | null;
6302
+ userId: string;
6303
+ refillInterval: number | null;
6304
+ refillAmount: number | null;
6305
+ lastRefillAt: Date | null;
6306
+ enabled: boolean;
6307
+ rateLimitEnabled: boolean;
6308
+ rateLimitTimeWindow: number | null;
6309
+ rateLimitMax: number | null;
6310
+ requestCount: number;
6311
+ remaining: number | null;
6312
+ lastRequest: Date | null;
6313
+ expiresAt: Date | null;
6314
+ createdAt: Date;
6315
+ updatedAt: Date;
6316
+ metadata: Record<string, any> | null;
6317
+ }>;
6318
+ listApiKeys(): Promise<{
6319
+ permissions: {
6320
+ [key: string]: string[];
6321
+ } | null;
6322
+ id: string;
6323
+ name: string | null;
6324
+ start: string | null;
6325
+ prefix: string | null;
6326
+ userId: string;
6327
+ refillInterval: number | null;
6328
+ refillAmount: number | null;
6329
+ lastRefillAt: Date | null;
6330
+ enabled: boolean;
6331
+ rateLimitEnabled: boolean;
6332
+ rateLimitTimeWindow: number | null;
6333
+ rateLimitMax: number | null;
6334
+ requestCount: number;
6335
+ remaining: number | null;
6336
+ lastRequest: Date | null;
6337
+ expiresAt: Date | null;
6338
+ createdAt: Date;
6339
+ updatedAt: Date;
6340
+ metadata: Record<string, any> | null;
6341
+ }[]>;
6342
+ updateApiKey(payload: UpdateApiKeyPayload): Promise<{
6343
+ permissions: {
6344
+ [key: string]: string[];
6345
+ } | null;
6346
+ id: string;
6347
+ name: string | null;
6348
+ start: string | null;
6349
+ prefix: string | null;
6350
+ userId: string;
6351
+ refillInterval: number | null;
6352
+ refillAmount: number | null;
6353
+ lastRefillAt: Date | null;
6354
+ enabled: boolean;
6355
+ rateLimitEnabled: boolean;
6356
+ rateLimitTimeWindow: number | null;
6357
+ rateLimitMax: number | null;
6358
+ requestCount: number;
6359
+ remaining: number | null;
6360
+ lastRequest: Date | null;
6361
+ expiresAt: Date | null;
6362
+ createdAt: Date;
6363
+ updatedAt: Date;
6364
+ metadata: Record<string, any> | null;
6365
+ }>;
6366
+ deleteApiKey(id: string): Promise<{
6367
+ success: boolean;
6368
+ }>;
6369
+ }
6370
+
6226
6371
  declare class BaseError extends Error {
6227
6372
  code: string;
6228
6373
  constructor(code: string, message: string, options?: ErrorOptions);
@@ -6280,6 +6425,10 @@ declare class AuthClient {
6280
6425
  * Organization management service for multi-tenant operations
6281
6426
  */
6282
6427
  organization: OrganizationService;
6428
+ /**
6429
+ * API key management service for API key operations
6430
+ */
6431
+ apiKey: ApiKeyService;
6283
6432
  /**
6284
6433
  * Creates a new AuthClient instance.
6285
6434
  *
@@ -6343,4 +6492,4 @@ declare function validateToken(token: string, apiUrl: string): Promise<boolean>;
6343
6492
  declare function extractTokenPayload(token: string): JWTTokenPayload;
6344
6493
 
6345
6494
  export { AuthClient, EmailRequired, InvalidCallbackURL, InvalidSocialProvider, Roles, ac, createAPIClient, extractTokenPayload, isTokenExpired, organizationAdditionalFields, rolesAccessControl, userAdditionalFields, validateToken };
6346
- export type { APIClient, CreateTeamPayload, FullOrganization, GetOrganizationOptions, Invitation, InviteUserToOrganizationOptions, JWTTokenPayload, ListMembersOptions, ExtendedMember as Member, ExtendedOrganization as Organization, RemoveUserFromOrganizationOptions, Role, Session, SignInWithEmailAndPasswordOptions, SignInWithSamlOptions, SocialSignInOptions, Team, TeamMember, UpdateMemberRoleOptions, UpdateOrganizationPayload, UpdateTeamPayload, User };
6495
+ export type { APIClient, ApiKeyMetadata, CreateApiKeyPayload, CreateTeamPayload, FullOrganization, GetOrganizationOptions, Invitation, InviteUserToOrganizationOptions, JWTTokenPayload, ListMembersOptions, ExtendedMember as Member, ExtendedOrganization as Organization, RemoveUserFromOrganizationOptions, Role, Session, SignInWithEmailAndPasswordOptions, SignInWithSamlOptions, SocialSignInOptions, Team, TeamMember, UpdateApiKeyPayload, UpdateMemberRoleOptions, UpdateOrganizationPayload, UpdateTeamPayload, User };
package/dist/index.mjs CHANGED
@@ -4,8 +4,9 @@ import { createAuthClient } from 'better-auth/client';
4
4
  import { organizationClient, twoFactorClient, jwtClient, apiKeyClient, adminClient, inferAdditionalFields } from 'better-auth/client/plugins';
5
5
  import { createAccessControl } from 'better-auth/plugins/access';
6
6
  import { defaultStatements } from 'better-auth/plugins/organization/access';
7
+ export { BetterFetchError as APIError } from '@better-fetch/fetch';
7
8
 
8
- const version = "1.2.0";
9
+ const version = "1.3.0";
9
10
 
10
11
  const statements = {
11
12
  ...defaultStatements,
@@ -99,7 +100,7 @@ function createAPIClient(apiUrl, fetchOptions = {}) {
99
100
  ...fetchOptions,
100
101
  credentials: "include",
101
102
  headers: {
102
- "User-Agent": userAgent,
103
+ "X-User-Agent": userAgent,
103
104
  ...fetchOptions.headers ?? {}
104
105
  },
105
106
  throw: true
@@ -339,6 +340,7 @@ class OrganizationService {
339
340
  *
340
341
  * @param teamId - The team ID
341
342
  * @param userId - The user ID to add
343
+ * @returns The added team member
342
344
  */
343
345
  async addTeamMember(teamId, userId) {
344
346
  return this.client.organization.addTeamMember({
@@ -556,6 +558,46 @@ class SessionService {
556
558
  }
557
559
  }
558
560
 
561
+ class ApiKeyService {
562
+ /**
563
+ * Creates a new ApiKeyService instance.
564
+ *
565
+ * @param client - The API client for making API key requests
566
+ */
567
+ constructor(client) {
568
+ this.client = client;
569
+ }
570
+ async createApiKey(payload) {
571
+ return this.client.apiKey.create({
572
+ name: payload.name,
573
+ expiresIn: payload.expiresIn,
574
+ prefix: payload.prefix,
575
+ metadata: payload.metadata
576
+ });
577
+ }
578
+ async getApiKey(id) {
579
+ return this.client.apiKey.get({
580
+ query: {
581
+ id
582
+ }
583
+ });
584
+ }
585
+ async listApiKeys() {
586
+ return this.client.apiKey.list();
587
+ }
588
+ async updateApiKey(payload) {
589
+ return this.client.apiKey.update({
590
+ keyId: payload.id,
591
+ name: payload.name
592
+ });
593
+ }
594
+ async deleteApiKey(id) {
595
+ return this.client.apiKey.delete({
596
+ keyId: id
597
+ });
598
+ }
599
+ }
600
+
559
601
  class AuthClient {
560
602
  client;
561
603
  /**
@@ -566,6 +608,10 @@ class AuthClient {
566
608
  * Organization management service for multi-tenant operations
567
609
  */
568
610
  organization;
611
+ /**
612
+ * API key management service for API key operations
613
+ */
614
+ apiKey;
569
615
  /**
570
616
  * Creates a new AuthClient instance.
571
617
  *
@@ -576,6 +622,7 @@ class AuthClient {
576
622
  this.client = createAPIClient(apiUrl, fetchOptions);
577
623
  this.session = new SessionService(this.client, apiUrl);
578
624
  this.organization = new OrganizationService(this.client);
625
+ this.apiKey = new ApiKeyService(this.client);
579
626
  }
580
627
  }
581
628
 
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@meistrari/auth-core",
3
- "version": "1.2.0",
3
+ "version": "1.3.0",
4
4
  "type": "module",
5
5
  "exports": {
6
6
  ".": {
@@ -22,11 +22,11 @@
22
22
  "jose": "6.1.0",
23
23
  "nanostores": "1.0.1",
24
24
  "@better-fetch/fetch": "1.1.18",
25
- "better-call": "1.1.5"
25
+ "better-call": "1.1.0"
26
26
  },
27
27
  "devDependencies": {
28
28
  "@types/node": "latest",
29
29
  "typescript": "5.9.2",
30
30
  "unbuild": "3.6.1"
31
31
  }
32
- }
32
+ }