@kaiz11/stack-client 0.0.14

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 (263) hide show
  1. package/LICENSE +32 -0
  2. package/README.md +586 -0
  3. package/dist/accounts/accounts-client.d.ts +188 -0
  4. package/dist/accounts/accounts-client.d.ts.map +1 -0
  5. package/dist/accounts/accounts-client.js +264 -0
  6. package/dist/accounts/accounts-client.js.map +1 -0
  7. package/dist/accounts/index.d.ts +8 -0
  8. package/dist/accounts/index.d.ts.map +1 -0
  9. package/dist/accounts/index.js +8 -0
  10. package/dist/accounts/index.js.map +1 -0
  11. package/dist/accounts/mock-accounts.d.ts +90 -0
  12. package/dist/accounts/mock-accounts.d.ts.map +1 -0
  13. package/dist/accounts/mock-accounts.js +434 -0
  14. package/dist/accounts/mock-accounts.js.map +1 -0
  15. package/dist/accounts/types.d.ts +180 -0
  16. package/dist/accounts/types.d.ts.map +1 -0
  17. package/dist/accounts/types.js +59 -0
  18. package/dist/accounts/types.js.map +1 -0
  19. package/dist/auth/auth-client.d.ts +224 -0
  20. package/dist/auth/auth-client.d.ts.map +1 -0
  21. package/dist/auth/auth-client.js +230 -0
  22. package/dist/auth/auth-client.js.map +1 -0
  23. package/dist/auth/base-auth.d.ts +44 -0
  24. package/dist/auth/base-auth.d.ts.map +1 -0
  25. package/dist/auth/base-auth.js +55 -0
  26. package/dist/auth/base-auth.js.map +1 -0
  27. package/dist/auth/index.d.ts +11 -0
  28. package/dist/auth/index.d.ts.map +1 -0
  29. package/dist/auth/index.js +11 -0
  30. package/dist/auth/index.js.map +1 -0
  31. package/dist/auth/methods/admin.d.ts +59 -0
  32. package/dist/auth/methods/admin.d.ts.map +1 -0
  33. package/dist/auth/methods/admin.js +55 -0
  34. package/dist/auth/methods/admin.js.map +1 -0
  35. package/dist/auth/methods/index.d.ts +9 -0
  36. package/dist/auth/methods/index.d.ts.map +1 -0
  37. package/dist/auth/methods/index.js +8 -0
  38. package/dist/auth/methods/index.js.map +1 -0
  39. package/dist/auth/methods/magic-link.d.ts +27 -0
  40. package/dist/auth/methods/magic-link.d.ts.map +1 -0
  41. package/dist/auth/methods/magic-link.js +37 -0
  42. package/dist/auth/methods/magic-link.js.map +1 -0
  43. package/dist/auth/methods/mfa.d.ts +92 -0
  44. package/dist/auth/methods/mfa.d.ts.map +1 -0
  45. package/dist/auth/methods/mfa.js +153 -0
  46. package/dist/auth/methods/mfa.js.map +1 -0
  47. package/dist/auth/methods/oauth.d.ts +62 -0
  48. package/dist/auth/methods/oauth.d.ts.map +1 -0
  49. package/dist/auth/methods/oauth.js +165 -0
  50. package/dist/auth/methods/oauth.js.map +1 -0
  51. package/dist/auth/methods/otp.d.ts +43 -0
  52. package/dist/auth/methods/otp.d.ts.map +1 -0
  53. package/dist/auth/methods/otp.js +66 -0
  54. package/dist/auth/methods/otp.js.map +1 -0
  55. package/dist/auth/methods/password.d.ts +64 -0
  56. package/dist/auth/methods/password.d.ts.map +1 -0
  57. package/dist/auth/methods/password.js +116 -0
  58. package/dist/auth/methods/password.js.map +1 -0
  59. package/dist/auth/methods/recovery.d.ts +62 -0
  60. package/dist/auth/methods/recovery.d.ts.map +1 -0
  61. package/dist/auth/methods/recovery.js +100 -0
  62. package/dist/auth/methods/recovery.js.map +1 -0
  63. package/dist/auth/mock-auth.d.ts +135 -0
  64. package/dist/auth/mock-auth.d.ts.map +1 -0
  65. package/dist/auth/mock-auth.js +417 -0
  66. package/dist/auth/mock-auth.js.map +1 -0
  67. package/dist/auth/server/helpers.d.ts +215 -0
  68. package/dist/auth/server/helpers.d.ts.map +1 -0
  69. package/dist/auth/server/helpers.js +241 -0
  70. package/dist/auth/server/helpers.js.map +1 -0
  71. package/dist/auth/server/index.d.ts +24 -0
  72. package/dist/auth/server/index.d.ts.map +1 -0
  73. package/dist/auth/server/index.js +40 -0
  74. package/dist/auth/server/index.js.map +1 -0
  75. package/dist/auth/server/middleware.d.ts +305 -0
  76. package/dist/auth/server/middleware.d.ts.map +1 -0
  77. package/dist/auth/server/middleware.js +405 -0
  78. package/dist/auth/server/middleware.js.map +1 -0
  79. package/dist/auth/server/verify.d.ts +184 -0
  80. package/dist/auth/server/verify.d.ts.map +1 -0
  81. package/dist/auth/server/verify.js +222 -0
  82. package/dist/auth/server/verify.js.map +1 -0
  83. package/dist/auth/token-manager.d.ts +94 -0
  84. package/dist/auth/token-manager.d.ts.map +1 -0
  85. package/dist/auth/token-manager.js +231 -0
  86. package/dist/auth/token-manager.js.map +1 -0
  87. package/dist/auth/types.d.ts +412 -0
  88. package/dist/auth/types.d.ts.map +1 -0
  89. package/dist/auth/types.js +66 -0
  90. package/dist/auth/types.js.map +1 -0
  91. package/dist/auth/user/identities.d.ts +62 -0
  92. package/dist/auth/user/identities.d.ts.map +1 -0
  93. package/dist/auth/user/identities.js +88 -0
  94. package/dist/auth/user/identities.js.map +1 -0
  95. package/dist/auth/user/index.d.ts +4 -0
  96. package/dist/auth/user/index.d.ts.map +1 -0
  97. package/dist/auth/user/index.js +4 -0
  98. package/dist/auth/user/index.js.map +1 -0
  99. package/dist/auth/user/user.d.ts +64 -0
  100. package/dist/auth/user/user.d.ts.map +1 -0
  101. package/dist/auth/user/user.js +105 -0
  102. package/dist/auth/user/user.js.map +1 -0
  103. package/dist/auth/user/verification.d.ts +49 -0
  104. package/dist/auth/user/verification.d.ts.map +1 -0
  105. package/dist/auth/user/verification.js +71 -0
  106. package/dist/auth/user/verification.js.map +1 -0
  107. package/dist/cli/browser.d.ts +11 -0
  108. package/dist/cli/browser.d.ts.map +1 -0
  109. package/dist/cli/browser.js +35 -0
  110. package/dist/cli/browser.js.map +1 -0
  111. package/dist/cli/callback-server.d.ts +30 -0
  112. package/dist/cli/callback-server.d.ts.map +1 -0
  113. package/dist/cli/callback-server.js +100 -0
  114. package/dist/cli/callback-server.js.map +1 -0
  115. package/dist/cli/file-token-store.d.ts +79 -0
  116. package/dist/cli/file-token-store.d.ts.map +1 -0
  117. package/dist/cli/file-token-store.js +138 -0
  118. package/dist/cli/file-token-store.js.map +1 -0
  119. package/dist/cli/index.d.ts +33 -0
  120. package/dist/cli/index.d.ts.map +1 -0
  121. package/dist/cli/index.js +38 -0
  122. package/dist/cli/index.js.map +1 -0
  123. package/dist/cli/oauth.d.ts +67 -0
  124. package/dist/cli/oauth.d.ts.map +1 -0
  125. package/dist/cli/oauth.js +101 -0
  126. package/dist/cli/oauth.js.map +1 -0
  127. package/dist/cli/pkce.d.ts +35 -0
  128. package/dist/cli/pkce.d.ts.map +1 -0
  129. package/dist/cli/pkce.js +43 -0
  130. package/dist/cli/pkce.js.map +1 -0
  131. package/dist/client.d.ts +22 -0
  132. package/dist/client.d.ts.map +1 -0
  133. package/dist/client.js +99 -0
  134. package/dist/client.js.map +1 -0
  135. package/dist/db/client.d.ts +9 -0
  136. package/dist/db/client.d.ts.map +1 -0
  137. package/dist/db/client.js +19 -0
  138. package/dist/db/client.js.map +1 -0
  139. package/dist/db/errors.d.ts +19 -0
  140. package/dist/db/errors.d.ts.map +1 -0
  141. package/dist/db/errors.js +57 -0
  142. package/dist/db/errors.js.map +1 -0
  143. package/dist/db/index.d.ts +7 -0
  144. package/dist/db/index.d.ts.map +1 -0
  145. package/dist/db/index.js +5 -0
  146. package/dist/db/index.js.map +1 -0
  147. package/dist/db/mock.d.ts +28 -0
  148. package/dist/db/mock.d.ts.map +1 -0
  149. package/dist/db/mock.js +459 -0
  150. package/dist/db/mock.js.map +1 -0
  151. package/dist/db/types.d.ts +73 -0
  152. package/dist/db/types.d.ts.map +1 -0
  153. package/dist/db/types.js +2 -0
  154. package/dist/db/types.js.map +1 -0
  155. package/dist/index.d.ts +21 -0
  156. package/dist/index.d.ts.map +1 -0
  157. package/dist/index.js +20 -0
  158. package/dist/index.js.map +1 -0
  159. package/dist/lib/errors.d.ts +33 -0
  160. package/dist/lib/errors.d.ts.map +1 -0
  161. package/dist/lib/errors.js +76 -0
  162. package/dist/lib/errors.js.map +1 -0
  163. package/dist/lib/http.d.ts +81 -0
  164. package/dist/lib/http.d.ts.map +1 -0
  165. package/dist/lib/http.js +163 -0
  166. package/dist/lib/http.js.map +1 -0
  167. package/dist/lib/keys.d.ts +87 -0
  168. package/dist/lib/keys.d.ts.map +1 -0
  169. package/dist/lib/keys.js +147 -0
  170. package/dist/lib/keys.js.map +1 -0
  171. package/dist/lib/paths.d.ts +37 -0
  172. package/dist/lib/paths.d.ts.map +1 -0
  173. package/dist/lib/paths.js +49 -0
  174. package/dist/lib/paths.js.map +1 -0
  175. package/dist/lib/token-store.d.ts +42 -0
  176. package/dist/lib/token-store.d.ts.map +1 -0
  177. package/dist/lib/token-store.js +75 -0
  178. package/dist/lib/token-store.js.map +1 -0
  179. package/dist/mocks/handlers.d.ts +29 -0
  180. package/dist/mocks/handlers.d.ts.map +1 -0
  181. package/dist/mocks/handlers.js +79 -0
  182. package/dist/mocks/handlers.js.map +1 -0
  183. package/dist/mocks/index.d.ts +5 -0
  184. package/dist/mocks/index.d.ts.map +1 -0
  185. package/dist/mocks/index.js +9 -0
  186. package/dist/mocks/index.js.map +1 -0
  187. package/dist/mocks/responses.d.ts +76 -0
  188. package/dist/mocks/responses.d.ts.map +1 -0
  189. package/dist/mocks/responses.js +91 -0
  190. package/dist/mocks/responses.js.map +1 -0
  191. package/dist/mocks/server.d.ts +7 -0
  192. package/dist/mocks/server.d.ts.map +1 -0
  193. package/dist/mocks/server.js +9 -0
  194. package/dist/mocks/server.js.map +1 -0
  195. package/dist/mocks/state.d.ts +86 -0
  196. package/dist/mocks/state.d.ts.map +1 -0
  197. package/dist/mocks/state.js +77 -0
  198. package/dist/mocks/state.js.map +1 -0
  199. package/dist/storage/bucket-ref.d.ts +183 -0
  200. package/dist/storage/bucket-ref.d.ts.map +1 -0
  201. package/dist/storage/bucket-ref.js +529 -0
  202. package/dist/storage/bucket-ref.js.map +1 -0
  203. package/dist/storage/errors.d.ts +27 -0
  204. package/dist/storage/errors.d.ts.map +1 -0
  205. package/dist/storage/errors.js +89 -0
  206. package/dist/storage/errors.js.map +1 -0
  207. package/dist/storage/index.d.ts +13 -0
  208. package/dist/storage/index.d.ts.map +1 -0
  209. package/dist/storage/index.js +11 -0
  210. package/dist/storage/index.js.map +1 -0
  211. package/dist/storage/interface.d.ts +245 -0
  212. package/dist/storage/interface.d.ts.map +1 -0
  213. package/dist/storage/interface.js +2 -0
  214. package/dist/storage/interface.js.map +1 -0
  215. package/dist/storage/mock-storage.d.ts +67 -0
  216. package/dist/storage/mock-storage.d.ts.map +1 -0
  217. package/dist/storage/mock-storage.js +478 -0
  218. package/dist/storage/mock-storage.js.map +1 -0
  219. package/dist/storage/policies-client.d.ts +77 -0
  220. package/dist/storage/policies-client.d.ts.map +1 -0
  221. package/dist/storage/policies-client.js +115 -0
  222. package/dist/storage/policies-client.js.map +1 -0
  223. package/dist/storage/policy-templates.d.ts +6 -0
  224. package/dist/storage/policy-templates.d.ts.map +1 -0
  225. package/dist/storage/policy-templates.js +290 -0
  226. package/dist/storage/policy-templates.js.map +1 -0
  227. package/dist/storage/policy-types.d.ts +98 -0
  228. package/dist/storage/policy-types.d.ts.map +1 -0
  229. package/dist/storage/policy-types.js +20 -0
  230. package/dist/storage/policy-types.js.map +1 -0
  231. package/dist/storage/storage-client.d.ts +32 -0
  232. package/dist/storage/storage-client.d.ts.map +1 -0
  233. package/dist/storage/storage-client.js +94 -0
  234. package/dist/storage/storage-client.js.map +1 -0
  235. package/dist/storage/tus-upload.d.ts +56 -0
  236. package/dist/storage/tus-upload.d.ts.map +1 -0
  237. package/dist/storage/tus-upload.js +236 -0
  238. package/dist/storage/tus-upload.js.map +1 -0
  239. package/dist/storage/types.d.ts +335 -0
  240. package/dist/storage/types.d.ts.map +1 -0
  241. package/dist/storage/types.js +39 -0
  242. package/dist/storage/types.js.map +1 -0
  243. package/dist/test/auth/helpers.d.ts +33 -0
  244. package/dist/test/auth/helpers.d.ts.map +1 -0
  245. package/dist/test/auth/helpers.js +80 -0
  246. package/dist/test/auth/helpers.js.map +1 -0
  247. package/dist/test/helpers/jwt.d.ts +61 -0
  248. package/dist/test/helpers/jwt.d.ts.map +1 -0
  249. package/dist/test/helpers/jwt.js +132 -0
  250. package/dist/test/helpers/jwt.js.map +1 -0
  251. package/dist/test/helpers/mailpit.d.ts +61 -0
  252. package/dist/test/helpers/mailpit.d.ts.map +1 -0
  253. package/dist/test/helpers/mailpit.js +107 -0
  254. package/dist/test/helpers/mailpit.js.map +1 -0
  255. package/dist/test/setup.d.ts +2 -0
  256. package/dist/test/setup.d.ts.map +1 -0
  257. package/dist/test/setup.js +17 -0
  258. package/dist/test/setup.js.map +1 -0
  259. package/dist/types.d.ts +96 -0
  260. package/dist/types.d.ts.map +1 -0
  261. package/dist/types.js +5 -0
  262. package/dist/types.js.map +1 -0
  263. package/package.json +78 -0
@@ -0,0 +1,188 @@
1
+ import type { HttpClient } from "../lib/http.js";
2
+ import type { Account, AccountMember, AccountRoleInfo, CreateAccountOptions, GetMembersOptions, UpdateAccountOptions, UpdateMemberRoleOptions, Invitation, InvitationLookup, AcceptedInvitation, CreateInvitationOptions, GetInvitationsOptions } from "./types.js";
3
+ /**
4
+ * Accounts client interface
5
+ */
6
+ export interface IAccountsClient {
7
+ list(): Promise<Account[]>;
8
+ get(accountId: string): Promise<Account>;
9
+ getBySlug(slug: string): Promise<Account>;
10
+ getPersonal(): Promise<Account>;
11
+ create(options?: CreateAccountOptions): Promise<Account>;
12
+ update(accountId: string, options: UpdateAccountOptions): Promise<Account>;
13
+ getAccountId(slug: string): Promise<string>;
14
+ getCurrentRole(accountId: string): Promise<AccountRoleInfo>;
15
+ getMembers(accountId: string, options?: GetMembersOptions): Promise<AccountMember[]>;
16
+ removeMember(accountId: string, userId: string): Promise<void>;
17
+ updateMemberRole(options: UpdateMemberRoleOptions): Promise<void>;
18
+ invitations: {
19
+ create(options: CreateInvitationOptions): Promise<{
20
+ token: string;
21
+ }>;
22
+ list(accountId: string, options?: GetInvitationsOptions): Promise<Invitation[]>;
23
+ lookup(token: string): Promise<InvitationLookup>;
24
+ accept(token: string): Promise<AcceptedInvitation>;
25
+ delete(invitationId: string): Promise<void>;
26
+ };
27
+ }
28
+ /**
29
+ * Accounts client configuration
30
+ */
31
+ export interface AccountsClientConfig {
32
+ http: HttpClient;
33
+ tenantId: string;
34
+ }
35
+ /**
36
+ * Accounts client for Basejump account operations
37
+ */
38
+ export declare class AccountsClient implements IAccountsClient {
39
+ private readonly http;
40
+ private readonly tenantId;
41
+ constructor(config: AccountsClientConfig);
42
+ /**
43
+ * Build REST RPC path
44
+ */
45
+ private rpcPath;
46
+ /**
47
+ * Make an RPC call to a PostgREST function in the basepublic schema
48
+ */
49
+ private rpc;
50
+ /**
51
+ * Get all accounts the current user belongs to (as owner or member)
52
+ *
53
+ * Returns personal account plus any team accounts the user has joined.
54
+ * Each account includes the user's role via `accountRole`.
55
+ *
56
+ * @example
57
+ * const accounts = await client.accounts.list();
58
+ * const owned = accounts.filter(a => a.accountRole === "owner");
59
+ * const teamAccounts = accounts.filter(a => !a.personalAccount);
60
+ */
61
+ list(): Promise<Account[]>;
62
+ /**
63
+ * Get a specific account by ID
64
+ *
65
+ * Only returns accounts the current user is a member of.
66
+ * Throws if the account doesn't exist or user lacks access.
67
+ *
68
+ * @example
69
+ * const account = await client.accounts.get(accountId);
70
+ */
71
+ get(accountId: string): Promise<Account>;
72
+ /**
73
+ * Get an account by its slug
74
+ *
75
+ * Only returns accounts the current user is a member of.
76
+ * Throws if the account doesn't exist or user lacks access.
77
+ *
78
+ * @example
79
+ * const account = await client.accounts.getBySlug("acme-corp");
80
+ */
81
+ getBySlug(slug: string): Promise<Account>;
82
+ /**
83
+ * Get the current user's personal account
84
+ *
85
+ * @example
86
+ * const personal = await client.accounts.getPersonal();
87
+ */
88
+ getPersonal(): Promise<Account>;
89
+ /**
90
+ * Create a new team account
91
+ *
92
+ * @example
93
+ * const account = await client.accounts.create({
94
+ * name: "Acme Corporation",
95
+ * slug: "acme-corp",
96
+ * });
97
+ */
98
+ create(options?: CreateAccountOptions): Promise<Account>;
99
+ /**
100
+ * Update an account
101
+ *
102
+ * Only account owners can update. Throws if user is not an owner.
103
+ * Service role bypasses this check.
104
+ *
105
+ * @example
106
+ * const account = await client.accounts.update(accountId, {
107
+ * name: "New Name",
108
+ * publicMetadata: { theme: "dark" },
109
+ * });
110
+ */
111
+ update(accountId: string, options: UpdateAccountOptions): Promise<Account>;
112
+ /**
113
+ * Get account ID from slug
114
+ *
115
+ * Public lookup - any authenticated user can resolve any slug to ID.
116
+ * Does not verify membership. Returns the account ID or throws if not found.
117
+ *
118
+ * @example
119
+ * const accountId = await client.accounts.getAccountId("acme-corp");
120
+ */
121
+ getAccountId(slug: string): Promise<string>;
122
+ /**
123
+ * Get the current user's role in an account
124
+ *
125
+ * Only returns role if user is a member. Throws "Not found" if user
126
+ * is not a member of the account.
127
+ *
128
+ * @example
129
+ * const role = await client.accounts.getCurrentRole(accountId);
130
+ * if (role.accountRole === "owner") {
131
+ * // Can manage billing, invite members, etc.
132
+ * }
133
+ */
134
+ getCurrentRole(accountId: string): Promise<AccountRoleInfo>;
135
+ /**
136
+ * Get members of an account
137
+ *
138
+ * Only account owners can list members. Throws if user is not an owner.
139
+ *
140
+ * @example
141
+ * const members = await client.accounts.getMembers(accountId);
142
+ * const owners = members.filter(m => m.accountRole === "owner");
143
+ */
144
+ getMembers(accountId: string, options?: GetMembersOptions): Promise<AccountMember[]>;
145
+ /**
146
+ * Remove a member from an account
147
+ *
148
+ * Only account owners can remove members. Throws if user is not an owner.
149
+ * Cannot remove the primary owner.
150
+ *
151
+ * @example
152
+ * await client.accounts.removeMember(accountId, userId);
153
+ */
154
+ removeMember(accountId: string, userId: string): Promise<void>;
155
+ /**
156
+ * Update a member's role in an account
157
+ *
158
+ * Only account owners can update roles. Throws if user is not an owner.
159
+ * Only the primary owner can transfer primary ownership.
160
+ *
161
+ * @example
162
+ * // Promote to owner
163
+ * await client.accounts.updateMemberRole({
164
+ * accountId,
165
+ * userId,
166
+ * newRole: "owner",
167
+ * });
168
+ *
169
+ * // Transfer primary ownership (must be primary owner)
170
+ * await client.accounts.updateMemberRole({
171
+ * accountId,
172
+ * userId,
173
+ * newRole: "owner",
174
+ * makePrimaryOwner: true,
175
+ * });
176
+ */
177
+ updateMemberRole(options: UpdateMemberRoleOptions): Promise<void>;
178
+ get invitations(): {
179
+ create: (options: CreateInvitationOptions) => Promise<{
180
+ token: string;
181
+ }>;
182
+ list: (accountId: string, options?: GetInvitationsOptions) => Promise<Invitation[]>;
183
+ lookup: (token: string) => Promise<InvitationLookup>;
184
+ accept: (token: string) => Promise<AcceptedInvitation>;
185
+ delete: (invitationId: string) => Promise<void>;
186
+ };
187
+ }
188
+ //# sourceMappingURL=accounts-client.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"accounts-client.d.ts","sourceRoot":"","sources":["../../src/accounts/accounts-client.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,264 @@
1
+ import { restPath } from "../lib/paths.js";
2
+ import { normalizeAccount, normalizeMember, normalizeRoleInfo, normalizeInvitation, normalizeAcceptedInvitation, } from "./types.js";
3
+ /**
4
+ * Accounts client for Basejump account operations
5
+ */
6
+ export class AccountsClient {
7
+ http;
8
+ tenantId;
9
+ constructor(config) {
10
+ this.http = config.http;
11
+ this.tenantId = config.tenantId;
12
+ }
13
+ /**
14
+ * Build REST RPC path
15
+ */
16
+ rpcPath(functionName) {
17
+ return restPath(this.tenantId, `/rpc/${functionName}`);
18
+ }
19
+ /**
20
+ * Make an RPC call to a PostgREST function in the basepublic schema
21
+ */
22
+ async rpc(functionName, params) {
23
+ return this.http.post(this.rpcPath(functionName), params ?? {}, {
24
+ headers: { "Content-Profile": "basepublic" },
25
+ });
26
+ }
27
+ // ============================================
28
+ // Account CRUD
29
+ // ============================================
30
+ /**
31
+ * Get all accounts the current user belongs to (as owner or member)
32
+ *
33
+ * Returns personal account plus any team accounts the user has joined.
34
+ * Each account includes the user's role via `accountRole`.
35
+ *
36
+ * @example
37
+ * const accounts = await client.accounts.list();
38
+ * const owned = accounts.filter(a => a.accountRole === "owner");
39
+ * const teamAccounts = accounts.filter(a => !a.personalAccount);
40
+ */
41
+ async list() {
42
+ const raw = await this.rpc("get_accounts");
43
+ return raw.map(normalizeAccount);
44
+ }
45
+ /**
46
+ * Get a specific account by ID
47
+ *
48
+ * Only returns accounts the current user is a member of.
49
+ * Throws if the account doesn't exist or user lacks access.
50
+ *
51
+ * @example
52
+ * const account = await client.accounts.get(accountId);
53
+ */
54
+ async get(accountId) {
55
+ const raw = await this.rpc("get_account", {
56
+ account_id: accountId,
57
+ });
58
+ return normalizeAccount(raw);
59
+ }
60
+ /**
61
+ * Get an account by its slug
62
+ *
63
+ * Only returns accounts the current user is a member of.
64
+ * Throws if the account doesn't exist or user lacks access.
65
+ *
66
+ * @example
67
+ * const account = await client.accounts.getBySlug("acme-corp");
68
+ */
69
+ async getBySlug(slug) {
70
+ const raw = await this.rpc("get_account_by_slug", { slug });
71
+ return normalizeAccount(raw);
72
+ }
73
+ /**
74
+ * Get the current user's personal account
75
+ *
76
+ * @example
77
+ * const personal = await client.accounts.getPersonal();
78
+ */
79
+ async getPersonal() {
80
+ const raw = await this.rpc("get_personal_account");
81
+ return normalizeAccount(raw);
82
+ }
83
+ /**
84
+ * Create a new team account
85
+ *
86
+ * @example
87
+ * const account = await client.accounts.create({
88
+ * name: "Acme Corporation",
89
+ * slug: "acme-corp",
90
+ * });
91
+ */
92
+ async create(options = {}) {
93
+ const raw = await this.rpc("create_account", {
94
+ slug: options.slug,
95
+ name: options.name,
96
+ });
97
+ return normalizeAccount(raw);
98
+ }
99
+ /**
100
+ * Update an account
101
+ *
102
+ * Only account owners can update. Throws if user is not an owner.
103
+ * Service role bypasses this check.
104
+ *
105
+ * @example
106
+ * const account = await client.accounts.update(accountId, {
107
+ * name: "New Name",
108
+ * publicMetadata: { theme: "dark" },
109
+ * });
110
+ */
111
+ async update(accountId, options) {
112
+ const raw = await this.rpc("update_account", {
113
+ account_id: accountId,
114
+ slug: options.slug,
115
+ name: options.name,
116
+ public_metadata: options.publicMetadata,
117
+ replace_metadata: options.replaceMetadata ?? false,
118
+ });
119
+ return normalizeAccount(raw);
120
+ }
121
+ // ============================================
122
+ // Account ID lookup
123
+ // ============================================
124
+ /**
125
+ * Get account ID from slug
126
+ *
127
+ * Public lookup - any authenticated user can resolve any slug to ID.
128
+ * Does not verify membership. Returns the account ID or throws if not found.
129
+ *
130
+ * @example
131
+ * const accountId = await client.accounts.getAccountId("acme-corp");
132
+ */
133
+ async getAccountId(slug) {
134
+ const id = await this.rpc("get_account_id", { slug });
135
+ if (!id) {
136
+ throw new Error("Account not found");
137
+ }
138
+ return id;
139
+ }
140
+ // ============================================
141
+ // Current user's role
142
+ // ============================================
143
+ /**
144
+ * Get the current user's role in an account
145
+ *
146
+ * Only returns role if user is a member. Throws "Not found" if user
147
+ * is not a member of the account.
148
+ *
149
+ * @example
150
+ * const role = await client.accounts.getCurrentRole(accountId);
151
+ * if (role.accountRole === "owner") {
152
+ * // Can manage billing, invite members, etc.
153
+ * }
154
+ */
155
+ async getCurrentRole(accountId) {
156
+ const raw = await this.rpc("current_user_account_role", {
157
+ account_id: accountId,
158
+ });
159
+ return normalizeRoleInfo(raw);
160
+ }
161
+ // ============================================
162
+ // Members
163
+ // ============================================
164
+ /**
165
+ * Get members of an account
166
+ *
167
+ * Only account owners can list members. Throws if user is not an owner.
168
+ *
169
+ * @example
170
+ * const members = await client.accounts.getMembers(accountId);
171
+ * const owners = members.filter(m => m.accountRole === "owner");
172
+ */
173
+ async getMembers(accountId, options = {}) {
174
+ const raw = await this.rpc("get_account_members", {
175
+ account_id: accountId,
176
+ results_limit: options.limit ?? 50,
177
+ results_offset: options.offset ?? 0,
178
+ });
179
+ return raw.map(normalizeMember);
180
+ }
181
+ /**
182
+ * Remove a member from an account
183
+ *
184
+ * Only account owners can remove members. Throws if user is not an owner.
185
+ * Cannot remove the primary owner.
186
+ *
187
+ * @example
188
+ * await client.accounts.removeMember(accountId, userId);
189
+ */
190
+ async removeMember(accountId, userId) {
191
+ await this.rpc("remove_account_member", {
192
+ account_id: accountId,
193
+ user_id: userId,
194
+ });
195
+ }
196
+ /**
197
+ * Update a member's role in an account
198
+ *
199
+ * Only account owners can update roles. Throws if user is not an owner.
200
+ * Only the primary owner can transfer primary ownership.
201
+ *
202
+ * @example
203
+ * // Promote to owner
204
+ * await client.accounts.updateMemberRole({
205
+ * accountId,
206
+ * userId,
207
+ * newRole: "owner",
208
+ * });
209
+ *
210
+ * // Transfer primary ownership (must be primary owner)
211
+ * await client.accounts.updateMemberRole({
212
+ * accountId,
213
+ * userId,
214
+ * newRole: "owner",
215
+ * makePrimaryOwner: true,
216
+ * });
217
+ */
218
+ async updateMemberRole(options) {
219
+ await this.rpc("update_account_user_role", {
220
+ account_id: options.accountId,
221
+ user_id: options.userId,
222
+ new_account_role: options.newRole,
223
+ make_primary_owner: options.makePrimaryOwner ?? false,
224
+ });
225
+ }
226
+ get invitations() {
227
+ return {
228
+ create: async (options) => {
229
+ return this.rpc("create_invitation", {
230
+ account_id: options.accountId,
231
+ account_role: options.role,
232
+ invitation_type: options.type,
233
+ });
234
+ },
235
+ list: async (accountId, options = {}) => {
236
+ const raw = await this.rpc("get_account_invitations", {
237
+ account_id: accountId,
238
+ results_limit: options.limit ?? 25,
239
+ results_offset: options.offset ?? 0,
240
+ });
241
+ return (raw ?? []).map(normalizeInvitation);
242
+ },
243
+ lookup: async (token) => {
244
+ const result = await this.rpc("lookup_invitation", { lookup_invitation_token: token });
245
+ return {
246
+ active: result.active,
247
+ accountName: result.account_name,
248
+ };
249
+ },
250
+ accept: async (token) => {
251
+ const raw = await this.rpc("accept_invitation", {
252
+ lookup_invitation_token: token,
253
+ });
254
+ return normalizeAcceptedInvitation(raw);
255
+ },
256
+ delete: async (invitationId) => {
257
+ await this.rpc("delete_invitation", {
258
+ invitation_id: invitationId,
259
+ });
260
+ },
261
+ };
262
+ }
263
+ }
264
+ //# sourceMappingURL=accounts-client.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"accounts-client.js","sourceRoot":"","sources":["../../src/accounts/accounts-client.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,8 @@
1
+ export { AccountsClient } from "./accounts-client.js";
2
+ export type { IAccountsClient, AccountsClientConfig, } from "./accounts-client.js";
3
+ export { MockAccountsClient } from "./mock-accounts.js";
4
+ export { mockAccountsState, accountsRequestCounts, createMockAccount, addMockMember, setMockCurrentUser, } from "./mock-accounts.js";
5
+ export type { MockAccountsState } from "./mock-accounts.js";
6
+ export type { Account, AccountMember, AccountRole, AccountRoleInfo, CreateAccountOptions, UpdateAccountOptions, GetMembersOptions, UpdateMemberRoleOptions, Invitation, InvitationLookup, AcceptedInvitation, InvitationType, CreateInvitationOptions, GetInvitationsOptions, RawAccount, RawAccountMember, RawAccountRoleInfo, RawInvitation, RawAcceptedInvitation, } from "./types.js";
7
+ export { normalizeAccount, normalizeMember, normalizeRoleInfo, normalizeInvitation, normalizeAcceptedInvitation, } from "./types.js";
8
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/accounts/index.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,cAAc,EAAE,MAAM,sBAAsB,CAAC;AACtD,YAAY,EACV,eAAe,EACf,oBAAoB,GACrB,MAAM,sBAAsB,CAAC;AAG9B,OAAO,EAAE,kBAAkB,EAAE,MAAM,oBAAoB,CAAC;AACxD,OAAO,EACL,iBAAiB,EACjB,qBAAqB,EACrB,iBAAiB,EACjB,aAAa,EACb,kBAAkB,GACnB,MAAM,oBAAoB,CAAC;AAC5B,YAAY,EAAE,iBAAiB,EAAE,MAAM,oBAAoB,CAAC;AAG5D,YAAY,EAEV,OAAO,EACP,aAAa,EACb,WAAW,EACX,eAAe,EAGf,oBAAoB,EACpB,oBAAoB,EACpB,iBAAiB,EACjB,uBAAuB,EAGvB,UAAU,EACV,gBAAgB,EAChB,kBAAkB,EAClB,cAAc,EACd,uBAAuB,EACvB,qBAAqB,EAGrB,UAAU,EACV,gBAAgB,EAChB,kBAAkB,EAClB,aAAa,EACb,qBAAqB,GACtB,MAAM,YAAY,CAAC;AAGpB,OAAO,EACL,gBAAgB,EAChB,eAAe,EACf,iBAAiB,EACjB,mBAAmB,EACnB,2BAA2B,GAC5B,MAAM,YAAY,CAAC"}
@@ -0,0 +1,8 @@
1
+ // Main client
2
+ export { AccountsClient } from "./accounts-client.js";
3
+ // Mock client
4
+ export { MockAccountsClient } from "./mock-accounts.js";
5
+ export { mockAccountsState, accountsRequestCounts, createMockAccount, addMockMember, setMockCurrentUser, } from "./mock-accounts.js";
6
+ // Normalizers (for advanced use)
7
+ export { normalizeAccount, normalizeMember, normalizeRoleInfo, normalizeInvitation, normalizeAcceptedInvitation, } from "./types.js";
8
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/accounts/index.ts"],"names":[],"mappings":"AAAA,cAAc;AACd,OAAO,EAAE,cAAc,EAAE,MAAM,sBAAsB,CAAC;AAMtD,cAAc;AACd,OAAO,EAAE,kBAAkB,EAAE,MAAM,oBAAoB,CAAC;AACxD,OAAO,EACL,iBAAiB,EACjB,qBAAqB,EACrB,iBAAiB,EACjB,aAAa,EACb,kBAAkB,GACnB,MAAM,oBAAoB,CAAC;AAiC5B,iCAAiC;AACjC,OAAO,EACL,gBAAgB,EAChB,eAAe,EACf,iBAAiB,EACjB,mBAAmB,EACnB,2BAA2B,GAC5B,MAAM,YAAY,CAAC"}
@@ -0,0 +1,90 @@
1
+ import { StackError } from "../lib/errors.js";
2
+ import type { IAccountsClient } from "./accounts-client.js";
3
+ import type { Account, AccountMember, AccountRole, AccountRoleInfo, CreateAccountOptions, GetMembersOptions, UpdateAccountOptions, UpdateMemberRoleOptions, Invitation, InvitationLookup, AcceptedInvitation, CreateInvitationOptions, GetInvitationsOptions, InvitationType } from "./types.js";
4
+ /**
5
+ * Mock accounts state for testing
6
+ */
7
+ export interface MockAccountsState {
8
+ currentUserId: string | null;
9
+ accounts: Map<string, Account>;
10
+ memberships: Map<string, {
11
+ role: AccountRole;
12
+ isPrimaryOwner: boolean;
13
+ }>;
14
+ invitations: Map<string, {
15
+ token: string;
16
+ accountId: string;
17
+ accountRole: AccountRole;
18
+ invitationType: InvitationType;
19
+ accountName: string | null;
20
+ createdAt: string;
21
+ }>;
22
+ shouldFail: boolean;
23
+ error: StackError | null;
24
+ reset(): void;
25
+ }
26
+ /**
27
+ * Global mock accounts state
28
+ */
29
+ export declare const mockAccountsState: MockAccountsState;
30
+ /**
31
+ * Request counts for testing
32
+ */
33
+ export declare const accountsRequestCounts: {
34
+ list: number;
35
+ get: number;
36
+ create: number;
37
+ update: number;
38
+ getMembers: number;
39
+ removeMember: number;
40
+ updateMemberRole: number;
41
+ reset(): void;
42
+ };
43
+ /**
44
+ * Mock accounts client for testing
45
+ */
46
+ export declare class MockAccountsClient implements IAccountsClient {
47
+ list(): Promise<Account[]>;
48
+ get(accountId: string): Promise<Account>;
49
+ getBySlug(slug: string): Promise<Account>;
50
+ getPersonal(): Promise<Account>;
51
+ create(options?: CreateAccountOptions): Promise<Account>;
52
+ update(accountId: string, options: UpdateAccountOptions): Promise<Account>;
53
+ getAccountId(slug: string): Promise<string>;
54
+ getCurrentRole(accountId: string): Promise<AccountRoleInfo>;
55
+ getMembers(accountId: string, options?: GetMembersOptions): Promise<AccountMember[]>;
56
+ removeMember(accountId: string, userId: string): Promise<void>;
57
+ updateMemberRole(options: UpdateMemberRoleOptions): Promise<void>;
58
+ get invitations(): {
59
+ create: (options: CreateInvitationOptions) => Promise<{
60
+ token: string;
61
+ }>;
62
+ list: (accountId: string, options?: GetInvitationsOptions) => Promise<Invitation[]>;
63
+ lookup: (token: string) => Promise<InvitationLookup>;
64
+ accept: (token: string) => Promise<AcceptedInvitation>;
65
+ delete: (invitationId: string) => Promise<void>;
66
+ };
67
+ }
68
+ /**
69
+ * Create a mock account for testing
70
+ */
71
+ export declare function createMockAccount(userId: string, options?: {
72
+ accountId?: string;
73
+ name?: string;
74
+ slug?: string;
75
+ personalAccount?: boolean;
76
+ role?: AccountRole;
77
+ isPrimaryOwner?: boolean;
78
+ }): Account;
79
+ /**
80
+ * Add a member to an existing mock account
81
+ */
82
+ export declare function addMockMember(accountId: string, userId: string, options?: {
83
+ role?: AccountRole;
84
+ isPrimaryOwner?: boolean;
85
+ }): void;
86
+ /**
87
+ * Set the current mock user ID
88
+ */
89
+ export declare function setMockCurrentUser(userId: string | null): void;
90
+ //# sourceMappingURL=mock-accounts.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"mock-accounts.d.ts","sourceRoot":"","sources":["../../src/accounts/mock-accounts.ts"],"names":[],"mappings":"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"}