@choiceform/shared-auth 0.1.22 → 0.1.24

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (47) hide show
  1. package/dist/core.d.ts +3 -0
  2. package/dist/core.d.ts.map +1 -1
  3. package/dist/core.js +9 -0
  4. package/dist/index.d.ts +2 -2
  5. package/dist/index.d.ts.map +1 -1
  6. package/dist/index.js +7 -1
  7. package/dist/init.d.ts +3 -0
  8. package/dist/init.d.ts.map +1 -1
  9. package/dist/services/api-key-service.d.ts +29 -0
  10. package/dist/services/api-key-service.d.ts.map +1 -0
  11. package/dist/services/api-key-service.js +140 -0
  12. package/dist/services/credit-service.d.ts +33 -0
  13. package/dist/services/credit-service.d.ts.map +1 -0
  14. package/dist/services/credit-service.js +228 -0
  15. package/dist/services/index.d.ts +5 -1
  16. package/dist/services/index.d.ts.map +1 -1
  17. package/dist/services/index.js +3 -0
  18. package/dist/services/referral-service.d.ts +4 -47
  19. package/dist/services/referral-service.d.ts.map +1 -1
  20. package/dist/services/referral-service.js +81 -25
  21. package/dist/services/stripe-service.d.ts +39 -0
  22. package/dist/services/stripe-service.d.ts.map +1 -0
  23. package/dist/services/stripe-service.js +291 -0
  24. package/dist/types/api-key.d.ts +174 -0
  25. package/dist/types/api-key.d.ts.map +1 -0
  26. package/dist/types/api-key.js +10 -0
  27. package/dist/types/credit.d.ts +226 -0
  28. package/dist/types/credit.d.ts.map +1 -0
  29. package/dist/types/credit.js +12 -0
  30. package/dist/types/index.d.ts +4 -0
  31. package/dist/types/index.d.ts.map +1 -1
  32. package/dist/types/referral.d.ts +85 -0
  33. package/dist/types/referral.d.ts.map +1 -0
  34. package/dist/types/referral.js +10 -0
  35. package/dist/types/stripe.d.ts +275 -0
  36. package/dist/types/stripe.d.ts.map +1 -0
  37. package/dist/types/stripe.js +10 -0
  38. package/dist/utils/error-mapper.d.ts +15 -0
  39. package/dist/utils/error-mapper.d.ts.map +1 -0
  40. package/dist/utils/error-mapper.js +27 -0
  41. package/dist/utils/index.d.ts +2 -0
  42. package/dist/utils/index.d.ts.map +1 -1
  43. package/dist/utils/index.js +2 -0
  44. package/dist/utils/query-string.d.ts +24 -0
  45. package/dist/utils/query-string.d.ts.map +1 -0
  46. package/dist/utils/query-string.js +30 -0
  47. package/package.json +11 -9
package/dist/core.d.ts CHANGED
@@ -153,6 +153,9 @@ export declare function createAuth(config: AuthConfig): {
153
153
  }>;
154
154
  };
155
155
  referralService: import("./services").ReferralService;
156
+ apiKeyService: import("./services").ApiKeyService;
157
+ creditService: import("./services").CreditService;
158
+ stripeService: import("./services").StripeService;
156
159
  setActiveOrganization: (request: SetActiveOrganizationRequest) => Promise<Organization>;
157
160
  setActiveTeam: (request: SetActiveTeamRequest) => Promise<void>;
158
161
  setActiveOrganizationAndTeam: (organizationId: string, teamId: string) => Promise<Organization>;
@@ -1 +1 @@
1
- {"version":3,"file":"core.d.ts","sourceRoot":"","sources":["../src/core.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;GAsBG;AAUH,OAAO,KAAK,EACV,UAAU,EAEV,YAAY,EACZ,4BAA4B,EAC5B,oBAAoB,EAIrB,MAAM,SAAS,CAAA;AAEhB,wBAAgB,UAAU,CAAC,MAAM,EAAE,UAAU;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;yBA0HtB,CAAC;;;;yBAsB2iD,CAAC;;;;;;;;;;qCA1EvjD,4BAA4B,KACpC,OAAO,CAAC,YAAY,CAAC;6BAUc,oBAAoB,KAAG,OAAO,CAAC,IAAI,CAAC;mDAUxD,MAAM,UACd,MAAM,KACb,OAAO,CAAC,YAAY,CAAC;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;iCA1ER,CAAC;qBAAe,CAAC;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;iBA+C1B,CAAC;;mBACP,CAAC;;;;;oBAOgE,CAAC;uBAGxC,CAAC;qBACxB,CAAC;qBAGK,CAAC;gBAA+B,CAAC;oBACxC,CAAC;oBAA2C,CAAC;0BAC1C,CAAC;kBACgB,CAAC;kBACtB,CAAF;mBAEwB,CAAC;uBAKvB,CAAC;6BACI,CAAC;;mBACa,CAAA;;;iBAEF,CAAC;gBAGE,CAAC;;;;;;;;;;;;gBAyBI,CAAC;iBAChB,CAAC;kBAGX,CAAA;kBAAiB,CAAC;;iBAEM,CAAC;wBAExB,CAAC;kBACF,CAAF;uBAEI,CAAA;6BACoC,CAAC;yBAE9B,CAAC;;;2BAC+B,CAAC;mHAKwE,CAAC;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;0BAV/F,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC;;;;;;EAO7C;AAED,MAAM,MAAM,YAAY,GAAG,UAAU,CAAC,OAAO,UAAU,CAAC,CAAA"}
1
+ {"version":3,"file":"core.d.ts","sourceRoot":"","sources":["../src/core.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;GAsBG;AAaH,OAAO,KAAK,EACV,UAAU,EAEV,YAAY,EACZ,4BAA4B,EAC5B,oBAAoB,EAIrB,MAAM,SAAS,CAAA;AAEhB,wBAAgB,UAAU,CAAC,MAAM,EAAE,UAAU;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;yBAwGT,CAAC;;;;yBA8C+nC,CAAC;;;;;;;;;;;;;qCA7ExpC,4BAA4B,KACpC,OAAO,CAAC,YAAY,CAAC;6BAUc,oBAAoB,KAAG,OAAO,CAAC,IAAI,CAAC;mDAUxD,MAAM,UACd,MAAM,KACb,OAAO,CAAC,YAAY,CAAC;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;iCAnFxB,CAAA;qBAEU,CAAC;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;iBA2CoB,CAAC;;mBAIZ,CAAC;;;;;oBAOuB,CAAC;uBACpB,CAAC;qBAET,CAAC;qBACL,CAAC;gBACX,CAAC;oBACU,CAAC;oBAA2C,CAAC;0BACnD,CAAC;kBACgB,CAAC;kBAA8C,CAAC;mBAGvD,CAAC;uBAIiB,CAAC;6BAAwB,CAAA;;mBACtC,CAAC;;;iBAEC,CAAC;gBAA+B,CAAC;;;;;;;;;;;;gBAoBxD,CADH;iBACG,CAAH;kBACG,CAAA;kBACI,CAAC;;iBAMO,CAAC;wBAKT,CAAC;kBAEL,CAAF;uBAKc,CAAC;6BAIX,CAAC;yBAGW,CAAC;;;2BAEN,CAAC;mHAIY,CAAC;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;0BAAH,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC;;;;;;EAO7C;AAED,MAAM,MAAM,YAAY,GAAG,UAAU,CAAC,OAAO,UAAU,CAAC,CAAA"}
package/dist/core.js CHANGED
@@ -29,6 +29,9 @@ import { waitForAuth as waitForAuthUtil, createUserManager } from "./store/utils
29
29
  import { createApiClient, createAuthApi, createOrganizationApi, createTeamApi } from "./api";
30
30
  import { createAuthService } from "./services/auth-service";
31
31
  import { createReferralService } from "./services/referral-service";
32
+ import { createApiKeyService } from "./services/api-key-service";
33
+ import { createCreditService } from "./services/credit-service";
34
+ import { createStripeService } from "./services/stripe-service";
32
35
  export function createAuth(config) {
33
36
  // ============================================================
34
37
  // 1. Better Auth 客户端
@@ -75,6 +78,9 @@ export function createAuth(config) {
75
78
  signUp: signUp ? { email: signUp.email } : undefined,
76
79
  });
77
80
  const referralService = createReferralService(apiClient);
81
+ const apiKeyService = createApiKeyService(apiClient);
82
+ const creditService = createCreditService(apiClient);
83
+ const stripeService = createStripeService(apiClient);
78
84
  // ============================================================
79
85
  // 5. Active 状态管理
80
86
  // ============================================================
@@ -116,6 +122,9 @@ export function createAuth(config) {
116
122
  // Service Layer
117
123
  authService,
118
124
  referralService,
125
+ apiKeyService,
126
+ creditService,
127
+ stripeService,
119
128
  // Active 状态管理
120
129
  setActiveOrganization,
121
130
  setActiveTeam,
package/dist/index.d.ts CHANGED
@@ -11,12 +11,12 @@
11
11
  export { createAuth, type AuthInstance } from "./core";
12
12
  export { initAuth } from "./init";
13
13
  export { defaultAuthConfig } from "./config";
14
- export type { SessionUser, SessionUserMetadata, Session, AuthState, AuthConfig, BetterAuthPlugin, DefaultAuthConfig, UpdateUserRequest, MagicLinkRequest, SignInWithMagicLink, CompanionTeamOptions, AuthClientMethods, AuthClientSignIn, Account, UserSession, RevokeSessionRequest, Organization, OrganizationMetadata, FullOrganization, CreateOrganizationRequest, UpdateOrganizationRequest, DeleteOrganizationRequest, SetActiveOrganizationRequest, CheckSlugRequest, MemberRole, Member, MemberUser, UserMetadata, MemberWithUser, RemoveMemberRequest, UpdateMemberRoleRequest, InvitationStatus, Invitation, InvitationDetail, InviteMemberRequest, CancelInvitationRequest, AcceptInvitationRequest, RejectInvitationRequest, InvitationResponse, Team, TeamMetadata, CreateTeamRequest, UpdateTeamRequest, DeleteTeamRequest, SetActiveTeamRequest, TeamMember, AddTeamMemberRequest, RemoveTeamMemberRequest, ListTeamMembersRequest, CallbackType, CallbackResult, CallbackConfig, } from "./types";
14
+ export type { SessionUser, SessionUserMetadata, Session, AuthState, AuthConfig, BetterAuthPlugin, DefaultAuthConfig, UpdateUserRequest, MagicLinkRequest, SignInWithMagicLink, CompanionTeamOptions, AuthClientMethods, AuthClientSignIn, Account, UserSession, RevokeSessionRequest, Organization, OrganizationMetadata, FullOrganization, CreateOrganizationRequest, UpdateOrganizationRequest, DeleteOrganizationRequest, SetActiveOrganizationRequest, CheckSlugRequest, MemberRole, Member, MemberUser, UserMetadata, MemberWithUser, RemoveMemberRequest, UpdateMemberRoleRequest, InvitationStatus, Invitation, InvitationDetail, InviteMemberRequest, CancelInvitationRequest, AcceptInvitationRequest, RejectInvitationRequest, InvitationResponse, Team, TeamMetadata, CreateTeamRequest, UpdateTeamRequest, DeleteTeamRequest, SetActiveTeamRequest, TeamMember, AddTeamMemberRequest, RemoveTeamMemberRequest, ListTeamMembersRequest, CallbackType, CallbackResult, CallbackConfig, ApiKey, ApiKeyWithSecret, CreateApiKeyRequest, UpdateApiKeyRequest, DeleteApiKeyRequest, GetApiKeyRequest, DeleteApiKeyResponse, ApiKeyErrorType, ApiKeyResult, CreateApiKeyResult, GetApiKeyResult, UpdateApiKeyResult, ListApiKeysResult, CreditOwnerType, CreditSource, CreditMeta, CreditAvailable, GetCreditAvailableRequest, CreditBatch, ListCreditBatchesRequest, CreateCreditBatchRequest, UpdateCreditBatchRequest, CreditConsumptionMetadata, CreditConsumption, ListCreditConsumptionsRequest, CreateCreditConsumptionRequest, CreditApiResponse, CreditErrorType, GetCreditAvailableResult, ListCreditBatchesResult, GetCreditBatchResult, CreateCreditBatchResult, UpdateCreditBatchResult, ListCreditConsumptionsResult, CreateCreditConsumptionResult, StripeCustomerType, StripePlanInterval, StripeProduct, ListStripeProductsRequest, StripePrice, ListStripePricesRequest, StripePlan, ListStripePlansRequest, UpgradeSubscriptionRequest, CancelSubscriptionRequest, RestoreSubscriptionRequest, CreateBillingPortalRequest, SubscriptionActionResponse, StripeErrorType, StripeResult, StripeRedirectResult, ListStripeProductsResult, GetStripeProductResult, ListStripePricesResult, GetStripePriceResult, ListStripePlansResult, GetStripePlanResult, ReferralRecord, SubmitReferralRequest, RemoveReferralRequest, ReferralResponse, ListReferralsResponse, ReferralErrorType, RemoveReferralErrorType, ReferralResult, RemoveReferralResult, ListReferralsResult, NeedsReferralOptions, } from "./types";
15
15
  export { createAuthStore, createTokenStorage } from "./store/state";
16
16
  export { createStoreActions, type StoreActions } from "./store/actions";
17
17
  export { createAuthComputed } from "./store/computed";
18
18
  export { getCurrentUser, getCurrentUserId, isAuthenticated, isLoading, isLoaded, waitForAuth, getAuthToken, getAuthTokenSync, getAuthHeaders, getAuthHeadersSync, handle401Response, createUserManager, } from "./store/utils";
19
- export { createAuthService, type AuthService, type AuthServiceConfig, type BetterAuthClientMethods, setupCompanionTeam, createCallbackService, type CallbackService, createReferralService, needsReferral, getReferralFields, type ReferralService, type ReferralResponse, type ReferralRecord, type ListReferralsResponse, type ReferralErrorType, type ReferralResult, type RemoveReferralErrorType, type RemoveReferralResult, type NeedsReferralOptions, } from "./services";
19
+ export { createAuthService, type AuthService, type AuthServiceConfig, type BetterAuthClientMethods, setupCompanionTeam, createCallbackService, type CallbackService, createReferralService, needsReferral, getReferralFields, type ReferralService, createApiKeyService, type ApiKeyService, createCreditService, type CreditService, createStripeService, type StripeService, } from "./services";
20
20
  export { createApiClient, createAuthApi, createOrganizationApi, createTeamApi, parseErrorResponse, } from "./api";
21
21
  export type { ApiClient, ApiClientConfig, ApiResponse, TokenStorage, UnauthorizedHandler, AuthApi, OrganizationApi, TeamApi, } from "./api";
22
22
  export { useAuthInit, initializeAuth, useAuthSync, type UseAuthSyncConfig, type UseAuthSyncResult, useProtectedRoute, type UseProtectedRouteConfig, type UseProtectedRouteResult, type ProtectionStatus, useEmailVerification, type UseEmailVerificationConfig, type UseEmailVerificationResult, } from "./hooks";
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
package/dist/index.js CHANGED
@@ -32,7 +32,13 @@ setupCompanionTeam,
32
32
  // 回调服务
33
33
  createCallbackService,
34
34
  // 邀请码服务
35
- createReferralService, needsReferral, getReferralFields, } from "./services";
35
+ createReferralService, needsReferral, getReferralFields,
36
+ // API Key 服务
37
+ createApiKeyService,
38
+ // Credit 服务
39
+ createCreditService,
40
+ // Stripe 服务
41
+ createStripeService, } from "./services";
36
42
  // ============================================================
37
43
  // API Layer - HTTP 请求
38
44
  // ============================================================
package/dist/init.d.ts CHANGED
@@ -155,6 +155,9 @@ export declare function initAuth(config: InitAuthConfig): {
155
155
  }>;
156
156
  };
157
157
  referralService: import("./services").ReferralService;
158
+ apiKeyService: import("./services").ApiKeyService;
159
+ creditService: import("./services").CreditService;
160
+ stripeService: import("./services").StripeService;
158
161
  setActiveOrganization: (request: import("./types").SetActiveOrganizationRequest) => Promise<import("./types").Organization>;
159
162
  setActiveTeam: (request: import("./types").SetActiveTeamRequest) => Promise<void>;
160
163
  setActiveOrganizationAndTeam: (organizationId: string, teamId: string) => Promise<import("./types").Organization>;
@@ -1 +1 @@
1
- {"version":3,"file":"init.d.ts","sourceRoot":"","sources":["../src/init.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAGH,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,SAAS,CAAA;AAGzC;;GAEG;AACH,UAAU,cAAc;IACtB,6BAA6B;IAC7B,OAAO,EAAE,MAAM,CAAA;IACf,qDAAqD;IACrD,OAAO,CAAC,EAAE,UAAU,CAAC,SAAS,CAAC,CAAA;IAC/B,6BAA6B;IAC7B,uBAAuB,CAAC,EAAE,OAAO,CAAA;IACjC,iCAAiC;IACjC,eAAe,CAAC,EAAE,MAAM,CAAA;CACzB;AAED;;;;;;GAMG;AACH,wBAAgB,QAAQ,CAAC,MAAM,EAAE,cAAc;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;yBAgBypH,CAAC;;;;yBAAitE,CAAC;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;iCAA5nK,CAAC;qBAAe,CAAC;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;iBAAi4C,CAAC;;mBAA2D,CAAC;;;;;oBAA8U,CAAC;uBAA8C,CAAC;qBAAmC,CAAC;qBAAmC,CAAC;gBAA+B,CAAC;oBAAuC,CAAC;oBAA2C,CAAC;0BAAwC,CAAC;kBAAwC,CAAC;kBAA8C,CAAC;mBAA+B,CAAC;uBAA0G,CAAC;6BAAuB,CAAC;;mBAAyC,CAAC;;;iBAA2G,CAAC;gBAA+B,CAAC;;;;;;;;;;;;gBAA+e,CAAC;iBAAgB,CAAC;kBAAiB,CAAC;kBAAiB,CAAC;;iBAA8F,CAAC;wBAAkE,CAAC;kBAAgC,CAAC;uBAAmG,CAAC;6BAA2E,CAAC;yBAAwC,CAAC;;;2BAAkF,CAAC;mHAAuL,CAAC;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;EAD78I"}
1
+ {"version":3,"file":"init.d.ts","sourceRoot":"","sources":["../src/init.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAGH,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,SAAS,CAAA;AAGzC;;GAEG;AACH,UAAU,cAAc;IACtB,6BAA6B;IAC7B,OAAO,EAAE,MAAM,CAAA;IACf,qDAAqD;IACrD,OAAO,CAAC,EAAE,UAAU,CAAC,SAAS,CAAC,CAAA;IAC/B,6BAA6B;IAC7B,uBAAuB,CAAC,EAAE,OAAO,CAAA;IACjC,iCAAiC;IACjC,eAAe,CAAC,EAAE,MAAM,CAAA;CACzB;AAED;;;;;;GAMG;AACH,wBAAgB,QAAQ,CAAC,MAAM,EAAE,cAAc;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;yBAgBypH,CAAC;;;;yBAAitE,CAAC;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;iCAA5nK,CAAC;qBAAe,CAAC;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;iBAAi4C,CAAC;;mBAA2D,CAAC;;;;;oBAA8U,CAAC;uBAA8C,CAAC;qBAAmC,CAAC;qBAAmC,CAAC;gBAA+B,CAAC;oBAAuC,CAAC;oBAA2C,CAAC;0BAAwC,CAAC;kBAAwC,CAAC;kBAA8C,CAAC;mBAA+B,CAAC;uBAA0G,CAAC;6BAAuB,CAAC;;mBAAyC,CAAC;;;iBAA2G,CAAC;gBAA+B,CAAC;;;;;;;;;;;;gBAA+e,CAAC;iBAAgB,CAAC;kBAAiB,CAAC;kBAAiB,CAAC;;iBAA8F,CAAC;wBAAkE,CAAC;kBAAgC,CAAC;uBAAmG,CAAC;6BAA2E,CAAC;yBAAwC,CAAC;;;2BAAkF,CAAC;mHAAuL,CAAC;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;EAD78I"}
@@ -0,0 +1,29 @@
1
+ /**
2
+ * API Key 服务
3
+ *
4
+ * 提供 API Key 相关的业务逻辑:
5
+ * - 创建 API Key
6
+ * - 获取 API Key
7
+ * - 更新 API Key
8
+ * - 删除 API Key
9
+ * - 列出所有 API Keys
10
+ */
11
+ import type { ApiClient } from "../api";
12
+ import type { CreateApiKeyRequest, CreateApiKeyResult, GetApiKeyResult, ListApiKeysResult, UpdateApiKeyRequest, UpdateApiKeyResult, ApiKeyResult } from "../types";
13
+ export interface ApiKeyService {
14
+ /** 创建新的 API Key */
15
+ createApiKey: (request: CreateApiKeyRequest) => Promise<CreateApiKeyResult>;
16
+ /** 删除 API Key */
17
+ deleteApiKey: (keyId: string) => Promise<ApiKeyResult>;
18
+ /** 根据 ID 获取 API Key */
19
+ getApiKey: (id: string) => Promise<GetApiKeyResult>;
20
+ /** 列出当前用户的所有 API Keys */
21
+ listApiKeys: () => Promise<ListApiKeysResult>;
22
+ /** 更新 API Key */
23
+ updateApiKey: (request: UpdateApiKeyRequest) => Promise<UpdateApiKeyResult>;
24
+ }
25
+ /**
26
+ * 创建 API Key 服务
27
+ */
28
+ export declare function createApiKeyService(apiClient: ApiClient): ApiKeyService;
29
+ //# sourceMappingURL=api-key-service.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"api-key-service.d.ts","sourceRoot":"","sources":["../../src/services/api-key-service.ts"],"names":[],"mappings":"AAAA;;;;;;;;;GASG;AAEH,OAAO,KAAK,EAAE,SAAS,EAAe,MAAM,QAAQ,CAAA;AACpD,OAAO,KAAK,EAIV,mBAAmB,EACnB,kBAAkB,EAGlB,eAAe,EACf,iBAAiB,EACjB,mBAAmB,EACnB,kBAAkB,EAClB,YAAY,EACb,MAAM,UAAU,CAAA;AA8BjB,MAAM,WAAW,aAAa;IAC5B,mBAAmB;IACnB,YAAY,EAAE,CAAC,OAAO,EAAE,mBAAmB,KAAK,OAAO,CAAC,kBAAkB,CAAC,CAAA;IAC3E,iBAAiB;IACjB,YAAY,EAAE,CAAC,KAAK,EAAE,MAAM,KAAK,OAAO,CAAC,YAAY,CAAC,CAAA;IACtD,uBAAuB;IACvB,SAAS,EAAE,CAAC,EAAE,EAAE,MAAM,KAAK,OAAO,CAAC,eAAe,CAAC,CAAA;IACnD,yBAAyB;IACzB,WAAW,EAAE,MAAM,OAAO,CAAC,iBAAiB,CAAC,CAAA;IAC7C,iBAAiB;IACjB,YAAY,EAAE,CAAC,OAAO,EAAE,mBAAmB,KAAK,OAAO,CAAC,kBAAkB,CAAC,CAAA;CAC5E;AAID;;GAEG;AACH,wBAAgB,mBAAmB,CAAC,SAAS,EAAE,SAAS,GAAG,aAAa,CA8HvE"}
@@ -0,0 +1,140 @@
1
+ /**
2
+ * API Key 服务
3
+ *
4
+ * 提供 API Key 相关的业务逻辑:
5
+ * - 创建 API Key
6
+ * - 获取 API Key
7
+ * - 更新 API Key
8
+ * - 删除 API Key
9
+ * - 列出所有 API Keys
10
+ */
11
+ // ===== Constants =====
12
+ const BASE_PATH = "/v1/auth/api-key";
13
+ // ===== Helper Functions =====
14
+ /**
15
+ * 根据 HTTP 状态码映射错误类型
16
+ */
17
+ function mapStatusToError(status) {
18
+ switch (status) {
19
+ case 400:
20
+ return "bad_request";
21
+ case 401:
22
+ return "unauthorized";
23
+ case 403:
24
+ return "forbidden";
25
+ case 404:
26
+ return "not_found";
27
+ case 429:
28
+ return "rate_limited";
29
+ default:
30
+ return "unknown";
31
+ }
32
+ }
33
+ // ===== Service Implementation =====
34
+ /**
35
+ * 创建 API Key 服务
36
+ */
37
+ export function createApiKeyService(apiClient) {
38
+ /**
39
+ * 创建新的 API Key
40
+ */
41
+ async function createApiKey(request) {
42
+ try {
43
+ const response = await apiClient.post(`${BASE_PATH}/create`, request);
44
+ if (response.ok) {
45
+ return { success: true, apiKey: response.data, error: undefined };
46
+ }
47
+ return {
48
+ success: false,
49
+ apiKey: undefined,
50
+ error: mapStatusToError(response.status),
51
+ };
52
+ }
53
+ catch {
54
+ return { success: false, apiKey: undefined, error: "unknown" };
55
+ }
56
+ }
57
+ /**
58
+ * 根据 ID 获取 API Key
59
+ */
60
+ async function getApiKey(id) {
61
+ try {
62
+ const response = await apiClient.get(`${BASE_PATH}/get?id=${encodeURIComponent(id)}`);
63
+ if (response.ok) {
64
+ return { success: true, apiKey: response.data, error: undefined };
65
+ }
66
+ return {
67
+ success: false,
68
+ apiKey: undefined,
69
+ error: mapStatusToError(response.status),
70
+ };
71
+ }
72
+ catch {
73
+ return { success: false, apiKey: undefined, error: "unknown" };
74
+ }
75
+ }
76
+ /**
77
+ * 更新 API Key
78
+ */
79
+ async function updateApiKey(request) {
80
+ try {
81
+ const response = await apiClient.post(`${BASE_PATH}/update`, request);
82
+ if (response.ok) {
83
+ return { success: true, apiKey: response.data, error: undefined };
84
+ }
85
+ return {
86
+ success: false,
87
+ apiKey: undefined,
88
+ error: mapStatusToError(response.status),
89
+ };
90
+ }
91
+ catch {
92
+ return { success: false, apiKey: undefined, error: "unknown" };
93
+ }
94
+ }
95
+ /**
96
+ * 删除 API Key
97
+ */
98
+ async function deleteApiKey(keyId) {
99
+ try {
100
+ const request = { keyId };
101
+ const response = await apiClient.post(`${BASE_PATH}/delete`, request);
102
+ if (response.ok && response.data.success) {
103
+ return { success: true, error: undefined };
104
+ }
105
+ return {
106
+ success: false,
107
+ error: mapStatusToError(response.status),
108
+ };
109
+ }
110
+ catch {
111
+ return { success: false, error: "unknown" };
112
+ }
113
+ }
114
+ /**
115
+ * 列出当前用户的所有 API Keys
116
+ */
117
+ async function listApiKeys() {
118
+ try {
119
+ const response = await apiClient.get(`${BASE_PATH}/list`);
120
+ if (response.ok) {
121
+ return { success: true, apiKeys: response.data || [], error: undefined };
122
+ }
123
+ return {
124
+ success: false,
125
+ apiKeys: [],
126
+ error: mapStatusToError(response.status),
127
+ };
128
+ }
129
+ catch {
130
+ return { success: false, apiKeys: [], error: "unknown" };
131
+ }
132
+ }
133
+ return {
134
+ createApiKey,
135
+ deleteApiKey,
136
+ getApiKey,
137
+ listApiKeys,
138
+ updateApiKey,
139
+ };
140
+ }
@@ -0,0 +1,33 @@
1
+ /**
2
+ * Credit 服务
3
+ *
4
+ * 提供 Credit 相关的业务逻辑:
5
+ * - 查询可用 Credits
6
+ * - Credit Batch 管理 (创建、列出、获取、更新)
7
+ * - Credit Consumption 管理 (创建、列出)
8
+ *
9
+ * 注意: Credit API 使用 /v1/credit 前缀,不经过 Better Auth basePath
10
+ */
11
+ import type { ApiClient } from "../api";
12
+ import type { CreateCreditBatchRequest, CreateCreditBatchResult, CreateCreditConsumptionRequest, CreateCreditConsumptionResult, GetCreditAvailableRequest, GetCreditAvailableResult, GetCreditBatchResult, ListCreditBatchesRequest, ListCreditBatchesResult, ListCreditConsumptionsRequest, ListCreditConsumptionsResult, UpdateCreditBatchRequest, UpdateCreditBatchResult } from "../types";
13
+ export interface CreditService {
14
+ /** 创建 Credit Batch */
15
+ createBatch: (request: CreateCreditBatchRequest) => Promise<CreateCreditBatchResult>;
16
+ /** 创建 Credit Consumption (从所有有效 batch 按 FIFO 扣除) */
17
+ createConsumption: (request: CreateCreditConsumptionRequest) => Promise<CreateCreditConsumptionResult>;
18
+ /** 查询可用 Credits (聚合) */
19
+ getAvailable: (request: GetCreditAvailableRequest) => Promise<GetCreditAvailableResult>;
20
+ /** 获取单个 Credit Batch */
21
+ getBatch: (id: string) => Promise<GetCreditBatchResult>;
22
+ /** 列出 Credit Batches */
23
+ listBatches: (request: ListCreditBatchesRequest) => Promise<ListCreditBatchesResult>;
24
+ /** 列出 Credit Consumptions */
25
+ listConsumptions: (request: ListCreditConsumptionsRequest) => Promise<ListCreditConsumptionsResult>;
26
+ /** 更新 Credit Batch */
27
+ updateBatch: (request: UpdateCreditBatchRequest) => Promise<UpdateCreditBatchResult>;
28
+ }
29
+ /**
30
+ * 创建 Credit 服务
31
+ */
32
+ export declare function createCreditService(apiClient: ApiClient): CreditService;
33
+ //# sourceMappingURL=credit-service.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"credit-service.d.ts","sourceRoot":"","sources":["../../src/services/credit-service.ts"],"names":[],"mappings":"AAAA;;;;;;;;;GASG;AAEH,OAAO,KAAK,EAAE,SAAS,EAAe,MAAM,QAAQ,CAAA;AACpD,OAAO,KAAK,EAOV,wBAAwB,EACxB,uBAAuB,EACvB,8BAA8B,EAC9B,6BAA6B,EAC7B,yBAAyB,EACzB,wBAAwB,EACxB,oBAAoB,EACpB,wBAAwB,EACxB,uBAAuB,EACvB,6BAA6B,EAC7B,4BAA4B,EAC5B,wBAAwB,EACxB,uBAAuB,EACxB,MAAM,UAAU,CAAA;AA2DjB,MAAM,WAAW,aAAa;IAC5B,sBAAsB;IACtB,WAAW,EAAE,CACX,OAAO,EAAE,wBAAwB,KAC9B,OAAO,CAAC,uBAAuB,CAAC,CAAA;IACrC,oDAAoD;IACpD,iBAAiB,EAAE,CACjB,OAAO,EAAE,8BAA8B,KACpC,OAAO,CAAC,6BAA6B,CAAC,CAAA;IAC3C,wBAAwB;IACxB,YAAY,EAAE,CACZ,OAAO,EAAE,yBAAyB,KAC/B,OAAO,CAAC,wBAAwB,CAAC,CAAA;IACtC,wBAAwB;IACxB,QAAQ,EAAE,CAAC,EAAE,EAAE,MAAM,KAAK,OAAO,CAAC,oBAAoB,CAAC,CAAA;IACvD,wBAAwB;IACxB,WAAW,EAAE,CACX,OAAO,EAAE,wBAAwB,KAC9B,OAAO,CAAC,uBAAuB,CAAC,CAAA;IACrC,6BAA6B;IAC7B,gBAAgB,EAAE,CAChB,OAAO,EAAE,6BAA6B,KACnC,OAAO,CAAC,4BAA4B,CAAC,CAAA;IAC1C,sBAAsB;IACtB,WAAW,EAAE,CACX,OAAO,EAAE,wBAAwB,KAC9B,OAAO,CAAC,uBAAuB,CAAC,CAAA;CACtC;AAID;;GAEG;AACH,wBAAgB,mBAAmB,CAAC,SAAS,EAAE,SAAS,GAAG,aAAa,CA6OvE"}
@@ -0,0 +1,228 @@
1
+ /**
2
+ * Credit 服务
3
+ *
4
+ * 提供 Credit 相关的业务逻辑:
5
+ * - 查询可用 Credits
6
+ * - Credit Batch 管理 (创建、列出、获取、更新)
7
+ * - Credit Consumption 管理 (创建、列出)
8
+ *
9
+ * 注意: Credit API 使用 /v1/credit 前缀,不经过 Better Auth basePath
10
+ */
11
+ import { buildQueryString } from "../utils/query-string";
12
+ // ===== Constants =====
13
+ const BASE_PATH = "/v1/credit";
14
+ // ===== Helper Functions =====
15
+ /**
16
+ * 将 HTTP 状态码映射为 Credit 错误类型
17
+ */
18
+ function mapStatusToError(status) {
19
+ switch (status) {
20
+ case 400:
21
+ return "bad_request";
22
+ case 401:
23
+ return "unauthorized";
24
+ case 402:
25
+ return "insufficient_credits";
26
+ case 403:
27
+ return "forbidden";
28
+ case 404:
29
+ return "not_found";
30
+ default:
31
+ return "unknown";
32
+ }
33
+ }
34
+ // ===== Service Implementation =====
35
+ /**
36
+ * 创建 Credit 服务
37
+ */
38
+ export function createCreditService(apiClient) {
39
+ /**
40
+ * 查询可用 Credits (聚合)
41
+ */
42
+ async function getAvailable(request) {
43
+ try {
44
+ const query = buildQueryString({
45
+ owner_id: request.ownerId,
46
+ owner_type: request.ownerType,
47
+ from: request.from,
48
+ });
49
+ const response = await apiClient.get(`${BASE_PATH}/available${query}`);
50
+ if (response.ok) {
51
+ const { data } = response.data;
52
+ const available = {
53
+ amount: data.amount,
54
+ createdAt: data.created_at,
55
+ expiresAt: data.expires_at,
56
+ ownerId: data.owner_id,
57
+ ownerType: data.owner_type,
58
+ };
59
+ return { success: true, data: available, error: undefined };
60
+ }
61
+ return {
62
+ success: false,
63
+ data: undefined,
64
+ error: mapStatusToError(response.status),
65
+ };
66
+ }
67
+ catch {
68
+ return { success: false, data: undefined, error: "unknown" };
69
+ }
70
+ }
71
+ /**
72
+ * 列出 Credit Batches
73
+ */
74
+ async function listBatches(request) {
75
+ try {
76
+ const query = buildQueryString({
77
+ ownerId: request.ownerId,
78
+ ownerType: request.ownerType,
79
+ source: request.source,
80
+ });
81
+ const response = await apiClient.get(`${BASE_PATH}/batches${query}`);
82
+ if (response.ok) {
83
+ return {
84
+ success: true,
85
+ data: response.data.data || [],
86
+ meta: response.data.meta,
87
+ error: undefined,
88
+ };
89
+ }
90
+ return {
91
+ success: false,
92
+ data: [],
93
+ meta: null,
94
+ error: mapStatusToError(response.status),
95
+ };
96
+ }
97
+ catch {
98
+ return { success: false, data: [], meta: null, error: "unknown" };
99
+ }
100
+ }
101
+ /**
102
+ * 获取单个 Credit Batch
103
+ */
104
+ async function getBatch(id) {
105
+ try {
106
+ const response = await apiClient.get(`${BASE_PATH}/batches/${encodeURIComponent(id)}`);
107
+ if (response.ok) {
108
+ return { success: true, data: response.data.data, error: undefined };
109
+ }
110
+ return {
111
+ success: false,
112
+ data: undefined,
113
+ error: mapStatusToError(response.status),
114
+ };
115
+ }
116
+ catch {
117
+ return { success: false, data: undefined, error: "unknown" };
118
+ }
119
+ }
120
+ /**
121
+ * 创建 Credit Batch
122
+ */
123
+ async function createBatch(request) {
124
+ try {
125
+ const response = await apiClient.post(`${BASE_PATH}/batches`, request);
126
+ if (response.ok) {
127
+ return { success: true, data: response.data.data, error: undefined };
128
+ }
129
+ return {
130
+ success: false,
131
+ data: undefined,
132
+ error: mapStatusToError(response.status),
133
+ };
134
+ }
135
+ catch {
136
+ return { success: false, data: undefined, error: "unknown" };
137
+ }
138
+ }
139
+ /**
140
+ * 更新 Credit Batch
141
+ */
142
+ async function updateBatch(request) {
143
+ try {
144
+ // API 使用 PATCH 方法
145
+ const response = await apiClient.fetch(`${BASE_PATH}/batches/${encodeURIComponent(request.id)}`, {
146
+ method: "PATCH",
147
+ headers: { "Content-Type": "application/json" },
148
+ body: JSON.stringify({ remainingAmount: request.remainingAmount }),
149
+ });
150
+ if (response.ok) {
151
+ const json = (await response.json());
152
+ return { success: true, data: json.data, error: undefined };
153
+ }
154
+ return {
155
+ success: false,
156
+ data: undefined,
157
+ error: mapStatusToError(response.status),
158
+ };
159
+ }
160
+ catch {
161
+ return { success: false, data: undefined, error: "unknown" };
162
+ }
163
+ }
164
+ /**
165
+ * 列出 Credit Consumptions
166
+ */
167
+ async function listConsumptions(request) {
168
+ try {
169
+ const query = buildQueryString({
170
+ ownerId: request.ownerId,
171
+ ownerType: request.ownerType,
172
+ batchId: request.batchId,
173
+ bookkeeper: request.bookkeeper,
174
+ });
175
+ const response = await apiClient.get(`${BASE_PATH}/consumptions${query}`);
176
+ if (response.ok) {
177
+ return {
178
+ success: true,
179
+ data: response.data.data || [],
180
+ meta: response.data.meta,
181
+ error: undefined,
182
+ };
183
+ }
184
+ return {
185
+ success: false,
186
+ data: [],
187
+ meta: null,
188
+ error: mapStatusToError(response.status),
189
+ };
190
+ }
191
+ catch {
192
+ return { success: false, data: [], meta: null, error: "unknown" };
193
+ }
194
+ }
195
+ /**
196
+ * 创建 Credit Consumption
197
+ * 按 FIFO 顺序从所有有效 batches 扣除,可能返回多条记录
198
+ */
199
+ async function createConsumption(request) {
200
+ try {
201
+ const response = await apiClient.post(`${BASE_PATH}/consumptions`, request);
202
+ if (response.ok) {
203
+ return {
204
+ success: true,
205
+ data: response.data.data || [],
206
+ error: undefined,
207
+ };
208
+ }
209
+ return {
210
+ success: false,
211
+ data: [],
212
+ error: mapStatusToError(response.status),
213
+ };
214
+ }
215
+ catch {
216
+ return { success: false, data: [], error: "unknown" };
217
+ }
218
+ }
219
+ return {
220
+ createBatch,
221
+ createConsumption,
222
+ getAvailable,
223
+ getBatch,
224
+ listBatches,
225
+ listConsumptions,
226
+ updateBatch,
227
+ };
228
+ }
@@ -4,5 +4,9 @@
4
4
  export { setupCompanionTeam } from "./companion-team";
5
5
  export { createAuthService, type AuthService, type AuthServiceConfig, type BetterAuthClientMethods, } from "./auth-service";
6
6
  export { createCallbackService, type CallbackService, } from "./callback-service";
7
- export { createReferralService, needsReferral, getReferralFields, type ReferralService, type ReferralResponse, type ReferralRecord, type ListReferralsResponse, type ReferralErrorType, type ReferralResult, type RemoveReferralErrorType, type RemoveReferralResult, type NeedsReferralOptions, } from "./referral-service";
7
+ export { createReferralService, needsReferral, getReferralFields, type ReferralService, } from "./referral-service";
8
+ export { createApiKeyService, type ApiKeyService, } from "./api-key-service";
9
+ export { createCreditService, type CreditService, } from "./credit-service";
10
+ export { createStripeService, type StripeService, } from "./stripe-service";
11
+ export type { ListReferralsResponse, ListReferralsResult, NeedsReferralOptions, ReferralErrorType, ReferralRecord, ReferralResponse, ReferralResult, RemoveReferralErrorType, RemoveReferralResult, } from "./referral-service";
8
12
  //# sourceMappingURL=index.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/services/index.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,OAAO,EAAE,kBAAkB,EAAE,MAAM,kBAAkB,CAAA;AACrD,OAAO,EACL,iBAAiB,EACjB,KAAK,WAAW,EAChB,KAAK,iBAAiB,EACtB,KAAK,uBAAuB,GAC7B,MAAM,gBAAgB,CAAA;AACvB,OAAO,EACL,qBAAqB,EACrB,KAAK,eAAe,GACrB,MAAM,oBAAoB,CAAA;AAC3B,OAAO,EACL,qBAAqB,EACrB,aAAa,EACb,iBAAiB,EACjB,KAAK,eAAe,EACpB,KAAK,gBAAgB,EACrB,KAAK,cAAc,EACnB,KAAK,qBAAqB,EAC1B,KAAK,iBAAiB,EACtB,KAAK,cAAc,EACnB,KAAK,uBAAuB,EAC5B,KAAK,oBAAoB,EACzB,KAAK,oBAAoB,GAC1B,MAAM,oBAAoB,CAAA"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/services/index.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,OAAO,EAAE,kBAAkB,EAAE,MAAM,kBAAkB,CAAA;AACrD,OAAO,EACL,iBAAiB,EACjB,KAAK,WAAW,EAChB,KAAK,iBAAiB,EACtB,KAAK,uBAAuB,GAC7B,MAAM,gBAAgB,CAAA;AACvB,OAAO,EACL,qBAAqB,EACrB,KAAK,eAAe,GACrB,MAAM,oBAAoB,CAAA;AAC3B,OAAO,EACL,qBAAqB,EACrB,aAAa,EACb,iBAAiB,EACjB,KAAK,eAAe,GACrB,MAAM,oBAAoB,CAAA;AAC3B,OAAO,EACL,mBAAmB,EACnB,KAAK,aAAa,GACnB,MAAM,mBAAmB,CAAA;AAC1B,OAAO,EACL,mBAAmB,EACnB,KAAK,aAAa,GACnB,MAAM,kBAAkB,CAAA;AACzB,OAAO,EACL,mBAAmB,EACnB,KAAK,aAAa,GACnB,MAAM,kBAAkB,CAAA;AAGzB,YAAY,EACV,qBAAqB,EACrB,mBAAmB,EACnB,oBAAoB,EACpB,iBAAiB,EACjB,cAAc,EACd,gBAAgB,EAChB,cAAc,EACd,uBAAuB,EACvB,oBAAoB,GACrB,MAAM,oBAAoB,CAAA"}
@@ -5,3 +5,6 @@ export { setupCompanionTeam } from "./companion-team";
5
5
  export { createAuthService, } from "./auth-service";
6
6
  export { createCallbackService, } from "./callback-service";
7
7
  export { createReferralService, needsReferral, getReferralFields, } from "./referral-service";
8
+ export { createApiKeyService, } from "./api-key-service";
9
+ export { createCreditService, } from "./credit-service";
10
+ export { createStripeService, } from "./stripe-service";