@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,434 @@
1
+ import { delay, mockState } from "../mocks/state.js";
2
+ import { StackError } from "../lib/errors.js";
3
+ /**
4
+ * Global mock accounts state
5
+ */
6
+ export const mockAccountsState = {
7
+ currentUserId: null,
8
+ accounts: new Map(),
9
+ memberships: new Map(),
10
+ invitations: new Map(),
11
+ shouldFail: false,
12
+ error: null,
13
+ reset() {
14
+ this.currentUserId = null;
15
+ this.accounts.clear();
16
+ this.memberships.clear();
17
+ this.invitations.clear();
18
+ this.shouldFail = false;
19
+ this.error = null;
20
+ },
21
+ };
22
+ /**
23
+ * Request counts for testing
24
+ */
25
+ export const accountsRequestCounts = {
26
+ list: 0,
27
+ get: 0,
28
+ create: 0,
29
+ update: 0,
30
+ getMembers: 0,
31
+ removeMember: 0,
32
+ updateMemberRole: 0,
33
+ reset() {
34
+ this.list = 0;
35
+ this.get = 0;
36
+ this.create = 0;
37
+ this.update = 0;
38
+ this.getMembers = 0;
39
+ this.removeMember = 0;
40
+ this.updateMemberRole = 0;
41
+ },
42
+ };
43
+ // ============================================
44
+ // Helper Functions
45
+ // ============================================
46
+ function getMembershipKey(accountId, userId) {
47
+ return `${accountId}:${userId}`;
48
+ }
49
+ function getUserAccounts(userId) {
50
+ const accounts = [];
51
+ for (const [key, membership] of mockAccountsState.memberships) {
52
+ if (key.endsWith(`:${userId}`)) {
53
+ const accountId = key.split(":")[0];
54
+ const account = mockAccountsState.accounts.get(accountId);
55
+ if (account) {
56
+ accounts.push({
57
+ ...account,
58
+ accountRole: membership.role,
59
+ isPrimaryOwner: membership.isPrimaryOwner,
60
+ });
61
+ }
62
+ }
63
+ }
64
+ return accounts;
65
+ }
66
+ function checkAuth() {
67
+ if (!mockAccountsState.currentUserId) {
68
+ throw new StackError("Not authenticated", "not_authenticated", 401);
69
+ }
70
+ return mockAccountsState.currentUserId;
71
+ }
72
+ function checkFailure() {
73
+ if (mockAccountsState.shouldFail) {
74
+ throw (mockAccountsState.error ?? new StackError("Mock error", "mock_error", 500));
75
+ }
76
+ }
77
+ // ============================================
78
+ // Mock Accounts Client
79
+ // ============================================
80
+ /**
81
+ * Mock accounts client for testing
82
+ */
83
+ export class MockAccountsClient {
84
+ async list() {
85
+ await delay(mockState.latency);
86
+ accountsRequestCounts.list++;
87
+ checkFailure();
88
+ const userId = checkAuth();
89
+ return getUserAccounts(userId);
90
+ }
91
+ async get(accountId) {
92
+ await delay(mockState.latency);
93
+ accountsRequestCounts.get++;
94
+ checkFailure();
95
+ const userId = checkAuth();
96
+ const account = mockAccountsState.accounts.get(accountId);
97
+ if (!account) {
98
+ throw new StackError("Account not found", "not_found", 404);
99
+ }
100
+ const membership = mockAccountsState.memberships.get(getMembershipKey(accountId, userId));
101
+ if (!membership) {
102
+ throw new StackError("Not a member of this account", "forbidden", 403);
103
+ }
104
+ return {
105
+ ...account,
106
+ accountRole: membership.role,
107
+ isPrimaryOwner: membership.isPrimaryOwner,
108
+ };
109
+ }
110
+ async getBySlug(slug) {
111
+ await delay(mockState.latency);
112
+ accountsRequestCounts.get++;
113
+ checkFailure();
114
+ const userId = checkAuth();
115
+ let foundAccount = null;
116
+ for (const account of mockAccountsState.accounts.values()) {
117
+ if (account.slug === slug) {
118
+ foundAccount = account;
119
+ break;
120
+ }
121
+ }
122
+ if (!foundAccount) {
123
+ throw new StackError("Account not found", "not_found", 404);
124
+ }
125
+ const membership = mockAccountsState.memberships.get(getMembershipKey(foundAccount.accountId, userId));
126
+ if (!membership) {
127
+ throw new StackError("Not a member of this account", "forbidden", 403);
128
+ }
129
+ return {
130
+ ...foundAccount,
131
+ accountRole: membership.role,
132
+ isPrimaryOwner: membership.isPrimaryOwner,
133
+ };
134
+ }
135
+ async getPersonal() {
136
+ await delay(mockState.latency);
137
+ accountsRequestCounts.get++;
138
+ checkFailure();
139
+ const userId = checkAuth();
140
+ // Personal account ID equals user ID in Basejump
141
+ return this.get(userId);
142
+ }
143
+ async create(options = {}) {
144
+ await delay(mockState.latency);
145
+ accountsRequestCounts.create++;
146
+ checkFailure();
147
+ const userId = checkAuth();
148
+ const accountId = crypto.randomUUID();
149
+ const now = new Date().toISOString();
150
+ const account = {
151
+ accountId,
152
+ accountRole: "owner",
153
+ isPrimaryOwner: true,
154
+ name: options.name ?? null,
155
+ slug: options.slug ?? null,
156
+ personalAccount: false,
157
+ createdAt: now,
158
+ updatedAt: now,
159
+ };
160
+ mockAccountsState.accounts.set(accountId, account);
161
+ mockAccountsState.memberships.set(getMembershipKey(accountId, userId), {
162
+ role: "owner",
163
+ isPrimaryOwner: true,
164
+ });
165
+ return account;
166
+ }
167
+ async update(accountId, options) {
168
+ await delay(mockState.latency);
169
+ accountsRequestCounts.update++;
170
+ checkFailure();
171
+ const userId = checkAuth();
172
+ const account = mockAccountsState.accounts.get(accountId);
173
+ if (!account) {
174
+ throw new StackError("Account not found", "not_found", 404);
175
+ }
176
+ const membership = mockAccountsState.memberships.get(getMembershipKey(accountId, userId));
177
+ if (!membership || membership.role !== "owner") {
178
+ throw new StackError("Only account owners can update an account", "forbidden", 403);
179
+ }
180
+ const updated = {
181
+ ...account,
182
+ name: options.name ?? account.name,
183
+ slug: options.slug ?? account.slug,
184
+ metadata: options.replaceMetadata
185
+ ? options.publicMetadata
186
+ : { ...account.metadata, ...options.publicMetadata },
187
+ updatedAt: new Date().toISOString(),
188
+ accountRole: membership.role,
189
+ isPrimaryOwner: membership.isPrimaryOwner,
190
+ };
191
+ mockAccountsState.accounts.set(accountId, updated);
192
+ return updated;
193
+ }
194
+ async getAccountId(slug) {
195
+ await delay(mockState.latency);
196
+ checkFailure();
197
+ for (const account of mockAccountsState.accounts.values()) {
198
+ if (account.slug === slug) {
199
+ return account.accountId;
200
+ }
201
+ }
202
+ throw new StackError("Account not found", "not_found", 404);
203
+ }
204
+ async getCurrentRole(accountId) {
205
+ await delay(mockState.latency);
206
+ checkFailure();
207
+ const userId = checkAuth();
208
+ const account = mockAccountsState.accounts.get(accountId);
209
+ if (!account) {
210
+ throw new StackError("Account not found", "not_found", 404);
211
+ }
212
+ const membership = mockAccountsState.memberships.get(getMembershipKey(accountId, userId));
213
+ if (!membership) {
214
+ throw new StackError("Not a member of this account", "forbidden", 403);
215
+ }
216
+ return {
217
+ accountRole: membership.role,
218
+ isPrimaryOwner: membership.isPrimaryOwner,
219
+ isPersonalAccount: account.personalAccount,
220
+ };
221
+ }
222
+ async getMembers(accountId, options = {}) {
223
+ await delay(mockState.latency);
224
+ accountsRequestCounts.getMembers++;
225
+ checkFailure();
226
+ const userId = checkAuth();
227
+ const membership = mockAccountsState.memberships.get(getMembershipKey(accountId, userId));
228
+ if (!membership || membership.role !== "owner") {
229
+ throw new StackError("Only account owners can access this function", "forbidden", 403);
230
+ }
231
+ const members = [];
232
+ for (const [key, mem] of mockAccountsState.memberships) {
233
+ if (key.startsWith(`${accountId}:`)) {
234
+ const memberId = key.split(":")[1];
235
+ members.push({
236
+ userId: memberId,
237
+ accountRole: mem.role,
238
+ name: null,
239
+ email: `user-${memberId.slice(0, 8)}@example.com`,
240
+ isPrimaryOwner: mem.isPrimaryOwner,
241
+ });
242
+ }
243
+ }
244
+ const limit = options.limit ?? 50;
245
+ const offset = options.offset ?? 0;
246
+ return members.slice(offset, offset + limit);
247
+ }
248
+ async removeMember(accountId, userId) {
249
+ await delay(mockState.latency);
250
+ accountsRequestCounts.removeMember++;
251
+ checkFailure();
252
+ const currentUserId = checkAuth();
253
+ const membership = mockAccountsState.memberships.get(getMembershipKey(accountId, currentUserId));
254
+ if (!membership || membership.role !== "owner") {
255
+ throw new StackError("Only account owners can access this function", "forbidden", 403);
256
+ }
257
+ const targetMembership = mockAccountsState.memberships.get(getMembershipKey(accountId, userId));
258
+ if (targetMembership?.isPrimaryOwner) {
259
+ throw new StackError("Cannot remove the primary owner", "forbidden", 403);
260
+ }
261
+ mockAccountsState.memberships.delete(getMembershipKey(accountId, userId));
262
+ }
263
+ async updateMemberRole(options) {
264
+ await delay(mockState.latency);
265
+ accountsRequestCounts.updateMemberRole++;
266
+ checkFailure();
267
+ const currentUserId = checkAuth();
268
+ const { accountId, userId, newRole, makePrimaryOwner } = options;
269
+ const currentMembership = mockAccountsState.memberships.get(getMembershipKey(accountId, currentUserId));
270
+ if (!currentMembership || currentMembership.role !== "owner") {
271
+ throw new StackError("You must be an owner of the account to update a users role", "forbidden", 403);
272
+ }
273
+ if (makePrimaryOwner && !currentMembership.isPrimaryOwner) {
274
+ throw new StackError("You must be the primary owner of the account to change the primary owner", "forbidden", 403);
275
+ }
276
+ const targetKey = getMembershipKey(accountId, userId);
277
+ const targetMembership = mockAccountsState.memberships.get(targetKey);
278
+ if (!targetMembership) {
279
+ throw new StackError("User is not a member of this account", "not_found", 404);
280
+ }
281
+ mockAccountsState.memberships.set(targetKey, {
282
+ role: newRole,
283
+ isPrimaryOwner: makePrimaryOwner ?? targetMembership.isPrimaryOwner,
284
+ });
285
+ if (makePrimaryOwner) {
286
+ const currentKey = getMembershipKey(accountId, currentUserId);
287
+ mockAccountsState.memberships.set(currentKey, {
288
+ ...currentMembership,
289
+ isPrimaryOwner: false,
290
+ });
291
+ }
292
+ }
293
+ get invitations() {
294
+ return {
295
+ create: async (options) => {
296
+ await delay(mockState.latency);
297
+ checkFailure();
298
+ const userId = checkAuth();
299
+ const membership = mockAccountsState.memberships.get(getMembershipKey(options.accountId, userId));
300
+ if (!membership || membership.role !== "owner") {
301
+ throw new StackError("Only account owners can access this function", "forbidden", 403);
302
+ }
303
+ const token = `inv-${crypto.randomUUID()}`;
304
+ const account = mockAccountsState.accounts.get(options.accountId);
305
+ mockAccountsState.invitations.set(token, {
306
+ token,
307
+ accountId: options.accountId,
308
+ accountRole: options.role,
309
+ invitationType: options.type,
310
+ accountName: account?.name ?? null,
311
+ createdAt: new Date().toISOString(),
312
+ });
313
+ return { token };
314
+ },
315
+ list: async (accountId, options = {}) => {
316
+ await delay(mockState.latency);
317
+ checkFailure();
318
+ const userId = checkAuth();
319
+ const membership = mockAccountsState.memberships.get(getMembershipKey(accountId, userId));
320
+ if (!membership || membership.role !== "owner") {
321
+ throw new StackError("Only account owners can access this function", "forbidden", 403);
322
+ }
323
+ const invitations = [];
324
+ for (const inv of mockAccountsState.invitations.values()) {
325
+ if (inv.accountId === accountId) {
326
+ invitations.push({
327
+ invitationId: inv.token,
328
+ accountRole: inv.accountRole,
329
+ invitationType: inv.invitationType,
330
+ createdAt: inv.createdAt,
331
+ });
332
+ }
333
+ }
334
+ const limit = options.limit ?? 25;
335
+ const offset = options.offset ?? 0;
336
+ return invitations.slice(offset, offset + limit);
337
+ },
338
+ lookup: async (token) => {
339
+ await delay(mockState.latency);
340
+ checkFailure();
341
+ checkAuth();
342
+ const invitation = mockAccountsState.invitations.get(token);
343
+ return {
344
+ active: invitation !== undefined,
345
+ accountName: invitation?.accountName ?? null,
346
+ };
347
+ },
348
+ accept: async (token) => {
349
+ await delay(mockState.latency);
350
+ checkFailure();
351
+ const userId = checkAuth();
352
+ const invitation = mockAccountsState.invitations.get(token);
353
+ if (!invitation) {
354
+ throw new StackError("Invitation not found", "not_found", 404);
355
+ }
356
+ const existingMembership = mockAccountsState.memberships.get(getMembershipKey(invitation.accountId, userId));
357
+ if (existingMembership) {
358
+ throw new StackError("You are already a member of this account", "conflict", 409);
359
+ }
360
+ mockAccountsState.memberships.set(getMembershipKey(invitation.accountId, userId), {
361
+ role: invitation.accountRole,
362
+ isPrimaryOwner: false,
363
+ });
364
+ if (invitation.invitationType === "one_time") {
365
+ mockAccountsState.invitations.delete(token);
366
+ }
367
+ const account = mockAccountsState.accounts.get(invitation.accountId);
368
+ return {
369
+ accountId: invitation.accountId,
370
+ accountRole: invitation.accountRole,
371
+ slug: account?.slug ?? null,
372
+ };
373
+ },
374
+ delete: async (invitationId) => {
375
+ await delay(mockState.latency);
376
+ checkFailure();
377
+ const userId = checkAuth();
378
+ const invitation = mockAccountsState.invitations.get(invitationId);
379
+ if (!invitation) {
380
+ throw new StackError("Invitation not found", "not_found", 404);
381
+ }
382
+ const membership = mockAccountsState.memberships.get(getMembershipKey(invitation.accountId, userId));
383
+ if (!membership || membership.role !== "owner") {
384
+ throw new StackError("Only account owners can delete invitations", "forbidden", 403);
385
+ }
386
+ mockAccountsState.invitations.delete(invitationId);
387
+ },
388
+ };
389
+ }
390
+ }
391
+ // ============================================
392
+ // Test Helpers
393
+ // ============================================
394
+ /**
395
+ * Create a mock account for testing
396
+ */
397
+ export function createMockAccount(userId, options = {}) {
398
+ const accountId = options.accountId ?? crypto.randomUUID();
399
+ const role = options.role ?? "owner";
400
+ const isPrimaryOwner = options.isPrimaryOwner ?? true;
401
+ const now = new Date().toISOString();
402
+ const account = {
403
+ accountId,
404
+ accountRole: role,
405
+ isPrimaryOwner,
406
+ name: options.name ?? null,
407
+ slug: options.slug ?? null,
408
+ personalAccount: options.personalAccount ?? false,
409
+ createdAt: now,
410
+ updatedAt: now,
411
+ };
412
+ mockAccountsState.accounts.set(accountId, account);
413
+ mockAccountsState.memberships.set(getMembershipKey(accountId, userId), {
414
+ role,
415
+ isPrimaryOwner,
416
+ });
417
+ return account;
418
+ }
419
+ /**
420
+ * Add a member to an existing mock account
421
+ */
422
+ export function addMockMember(accountId, userId, options = {}) {
423
+ mockAccountsState.memberships.set(getMembershipKey(accountId, userId), {
424
+ role: options.role ?? "member",
425
+ isPrimaryOwner: options.isPrimaryOwner ?? false,
426
+ });
427
+ }
428
+ /**
429
+ * Set the current mock user ID
430
+ */
431
+ export function setMockCurrentUser(userId) {
432
+ mockAccountsState.currentUserId = userId;
433
+ }
434
+ //# sourceMappingURL=mock-accounts.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"mock-accounts.js","sourceRoot":"","sources":["../../src/accounts/mock-accounts.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,180 @@
1
+ /**
2
+ * Account role types
3
+ */
4
+ export type AccountRole = "owner" | "member";
5
+ /**
6
+ * Account returned from get_accounts() / get_account()
7
+ */
8
+ export interface Account {
9
+ /** Account ID (UUID) */
10
+ accountId: string;
11
+ /** User's role in this account */
12
+ accountRole: AccountRole;
13
+ /** Whether the current user is the primary owner */
14
+ isPrimaryOwner: boolean;
15
+ /** Account display name */
16
+ name: string | null;
17
+ /** Account slug (null for personal accounts) */
18
+ slug: string | null;
19
+ /** Whether this is a personal account */
20
+ personalAccount: boolean;
21
+ /** Whether billing is enabled for this account */
22
+ billingEnabled?: boolean;
23
+ /** Current billing status */
24
+ billingStatus?: string | null;
25
+ /** Public metadata */
26
+ metadata?: Record<string, unknown>;
27
+ /** Created timestamp */
28
+ createdAt: string;
29
+ /** Updated timestamp */
30
+ updatedAt: string;
31
+ }
32
+ /**
33
+ * Account member returned from get_account_members()
34
+ */
35
+ export interface AccountMember {
36
+ /** User ID */
37
+ userId: string;
38
+ /** Member's role in the account */
39
+ accountRole: AccountRole;
40
+ /** Member's display name */
41
+ name: string | null;
42
+ /** Member's email */
43
+ email: string;
44
+ /** Whether this member is the primary owner */
45
+ isPrimaryOwner: boolean;
46
+ }
47
+ /**
48
+ * Current user's role in an account
49
+ */
50
+ export interface AccountRoleInfo {
51
+ /** User's role in the account */
52
+ accountRole: AccountRole;
53
+ /** Whether the current user is the primary owner */
54
+ isPrimaryOwner: boolean;
55
+ /** Whether this is a personal account */
56
+ isPersonalAccount: boolean;
57
+ }
58
+ /**
59
+ * Options for creating an account
60
+ */
61
+ export interface CreateAccountOptions {
62
+ /** Account slug (URL-friendly identifier) */
63
+ slug?: string;
64
+ /** Account display name */
65
+ name?: string;
66
+ }
67
+ /**
68
+ * Options for updating an account
69
+ */
70
+ export interface UpdateAccountOptions {
71
+ /** New slug */
72
+ slug?: string;
73
+ /** New name */
74
+ name?: string;
75
+ /** Public metadata to set/merge */
76
+ publicMetadata?: Record<string, unknown>;
77
+ /** If true, replace metadata entirely; if false, merge */
78
+ replaceMetadata?: boolean;
79
+ }
80
+ /**
81
+ * Options for listing account members
82
+ */
83
+ export interface GetMembersOptions {
84
+ /** Maximum number of results (default: 50) */
85
+ limit?: number;
86
+ /** Offset for pagination (default: 0) */
87
+ offset?: number;
88
+ }
89
+ /**
90
+ * Options for updating a member's role
91
+ */
92
+ export interface UpdateMemberRoleOptions {
93
+ /** Account ID */
94
+ accountId: string;
95
+ /** User ID of the member */
96
+ userId: string;
97
+ /** New role */
98
+ newRole: AccountRole;
99
+ /** If true, make this user the primary owner */
100
+ makePrimaryOwner?: boolean;
101
+ }
102
+ /** Raw account from get_accounts() */
103
+ export interface RawAccount {
104
+ account_id: string;
105
+ account_role: AccountRole;
106
+ is_primary_owner: boolean;
107
+ name: string | null;
108
+ slug: string | null;
109
+ personal_account: boolean;
110
+ billing_enabled?: boolean;
111
+ billing_status?: string | null;
112
+ metadata?: Record<string, unknown>;
113
+ created_at: string;
114
+ updated_at: string;
115
+ }
116
+ /** Raw member from get_account_members() */
117
+ export interface RawAccountMember {
118
+ user_id: string;
119
+ account_role: AccountRole;
120
+ name: string | null;
121
+ email: string;
122
+ is_primary_owner: boolean;
123
+ }
124
+ /** Raw role info from current_user_account_role() */
125
+ export interface RawAccountRoleInfo {
126
+ account_role: AccountRole;
127
+ is_primary_owner: boolean;
128
+ is_personal_account: boolean;
129
+ }
130
+ /**
131
+ * Normalize raw account to Account
132
+ */
133
+ export declare function normalizeAccount(raw: RawAccount): Account;
134
+ /**
135
+ * Normalize raw member to AccountMember
136
+ */
137
+ export declare function normalizeMember(raw: RawAccountMember): AccountMember;
138
+ /**
139
+ * Normalize raw role info to AccountRoleInfo
140
+ */
141
+ export declare function normalizeRoleInfo(raw: RawAccountRoleInfo): AccountRoleInfo;
142
+ export type InvitationType = "one_time" | "24_hour";
143
+ export interface Invitation {
144
+ invitationId: string;
145
+ accountRole: AccountRole;
146
+ invitationType: InvitationType;
147
+ createdAt: string;
148
+ }
149
+ export interface InvitationLookup {
150
+ active: boolean;
151
+ accountName: string | null;
152
+ }
153
+ export interface AcceptedInvitation {
154
+ accountId: string;
155
+ accountRole: AccountRole;
156
+ slug: string | null;
157
+ }
158
+ export interface CreateInvitationOptions {
159
+ accountId: string;
160
+ role: AccountRole;
161
+ type: InvitationType;
162
+ }
163
+ export interface GetInvitationsOptions {
164
+ limit?: number;
165
+ offset?: number;
166
+ }
167
+ export interface RawInvitation {
168
+ invitation_id: string;
169
+ account_role: AccountRole;
170
+ invitation_type: InvitationType;
171
+ created_at: string;
172
+ }
173
+ export interface RawAcceptedInvitation {
174
+ account_id: string;
175
+ account_role: AccountRole;
176
+ slug: string | null;
177
+ }
178
+ export declare function normalizeInvitation(raw: RawInvitation): Invitation;
179
+ export declare function normalizeAcceptedInvitation(raw: RawAcceptedInvitation): AcceptedInvitation;
180
+ //# sourceMappingURL=types.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../src/accounts/types.ts"],"names":[],"mappings":"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"}