@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.
- package/LICENSE +32 -0
- package/README.md +586 -0
- package/dist/accounts/accounts-client.d.ts +188 -0
- package/dist/accounts/accounts-client.d.ts.map +1 -0
- package/dist/accounts/accounts-client.js +264 -0
- package/dist/accounts/accounts-client.js.map +1 -0
- package/dist/accounts/index.d.ts +8 -0
- package/dist/accounts/index.d.ts.map +1 -0
- package/dist/accounts/index.js +8 -0
- package/dist/accounts/index.js.map +1 -0
- package/dist/accounts/mock-accounts.d.ts +90 -0
- package/dist/accounts/mock-accounts.d.ts.map +1 -0
- package/dist/accounts/mock-accounts.js +434 -0
- package/dist/accounts/mock-accounts.js.map +1 -0
- package/dist/accounts/types.d.ts +180 -0
- package/dist/accounts/types.d.ts.map +1 -0
- package/dist/accounts/types.js +59 -0
- package/dist/accounts/types.js.map +1 -0
- package/dist/auth/auth-client.d.ts +224 -0
- package/dist/auth/auth-client.d.ts.map +1 -0
- package/dist/auth/auth-client.js +230 -0
- package/dist/auth/auth-client.js.map +1 -0
- package/dist/auth/base-auth.d.ts +44 -0
- package/dist/auth/base-auth.d.ts.map +1 -0
- package/dist/auth/base-auth.js +55 -0
- package/dist/auth/base-auth.js.map +1 -0
- package/dist/auth/index.d.ts +11 -0
- package/dist/auth/index.d.ts.map +1 -0
- package/dist/auth/index.js +11 -0
- package/dist/auth/index.js.map +1 -0
- package/dist/auth/methods/admin.d.ts +59 -0
- package/dist/auth/methods/admin.d.ts.map +1 -0
- package/dist/auth/methods/admin.js +55 -0
- package/dist/auth/methods/admin.js.map +1 -0
- package/dist/auth/methods/index.d.ts +9 -0
- package/dist/auth/methods/index.d.ts.map +1 -0
- package/dist/auth/methods/index.js +8 -0
- package/dist/auth/methods/index.js.map +1 -0
- package/dist/auth/methods/magic-link.d.ts +27 -0
- package/dist/auth/methods/magic-link.d.ts.map +1 -0
- package/dist/auth/methods/magic-link.js +37 -0
- package/dist/auth/methods/magic-link.js.map +1 -0
- package/dist/auth/methods/mfa.d.ts +92 -0
- package/dist/auth/methods/mfa.d.ts.map +1 -0
- package/dist/auth/methods/mfa.js +153 -0
- package/dist/auth/methods/mfa.js.map +1 -0
- package/dist/auth/methods/oauth.d.ts +62 -0
- package/dist/auth/methods/oauth.d.ts.map +1 -0
- package/dist/auth/methods/oauth.js +165 -0
- package/dist/auth/methods/oauth.js.map +1 -0
- package/dist/auth/methods/otp.d.ts +43 -0
- package/dist/auth/methods/otp.d.ts.map +1 -0
- package/dist/auth/methods/otp.js +66 -0
- package/dist/auth/methods/otp.js.map +1 -0
- package/dist/auth/methods/password.d.ts +64 -0
- package/dist/auth/methods/password.d.ts.map +1 -0
- package/dist/auth/methods/password.js +116 -0
- package/dist/auth/methods/password.js.map +1 -0
- package/dist/auth/methods/recovery.d.ts +62 -0
- package/dist/auth/methods/recovery.d.ts.map +1 -0
- package/dist/auth/methods/recovery.js +100 -0
- package/dist/auth/methods/recovery.js.map +1 -0
- package/dist/auth/mock-auth.d.ts +135 -0
- package/dist/auth/mock-auth.d.ts.map +1 -0
- package/dist/auth/mock-auth.js +417 -0
- package/dist/auth/mock-auth.js.map +1 -0
- package/dist/auth/server/helpers.d.ts +215 -0
- package/dist/auth/server/helpers.d.ts.map +1 -0
- package/dist/auth/server/helpers.js +241 -0
- package/dist/auth/server/helpers.js.map +1 -0
- package/dist/auth/server/index.d.ts +24 -0
- package/dist/auth/server/index.d.ts.map +1 -0
- package/dist/auth/server/index.js +40 -0
- package/dist/auth/server/index.js.map +1 -0
- package/dist/auth/server/middleware.d.ts +305 -0
- package/dist/auth/server/middleware.d.ts.map +1 -0
- package/dist/auth/server/middleware.js +405 -0
- package/dist/auth/server/middleware.js.map +1 -0
- package/dist/auth/server/verify.d.ts +184 -0
- package/dist/auth/server/verify.d.ts.map +1 -0
- package/dist/auth/server/verify.js +222 -0
- package/dist/auth/server/verify.js.map +1 -0
- package/dist/auth/token-manager.d.ts +94 -0
- package/dist/auth/token-manager.d.ts.map +1 -0
- package/dist/auth/token-manager.js +231 -0
- package/dist/auth/token-manager.js.map +1 -0
- package/dist/auth/types.d.ts +412 -0
- package/dist/auth/types.d.ts.map +1 -0
- package/dist/auth/types.js +66 -0
- package/dist/auth/types.js.map +1 -0
- package/dist/auth/user/identities.d.ts +62 -0
- package/dist/auth/user/identities.d.ts.map +1 -0
- package/dist/auth/user/identities.js +88 -0
- package/dist/auth/user/identities.js.map +1 -0
- package/dist/auth/user/index.d.ts +4 -0
- package/dist/auth/user/index.d.ts.map +1 -0
- package/dist/auth/user/index.js +4 -0
- package/dist/auth/user/index.js.map +1 -0
- package/dist/auth/user/user.d.ts +64 -0
- package/dist/auth/user/user.d.ts.map +1 -0
- package/dist/auth/user/user.js +105 -0
- package/dist/auth/user/user.js.map +1 -0
- package/dist/auth/user/verification.d.ts +49 -0
- package/dist/auth/user/verification.d.ts.map +1 -0
- package/dist/auth/user/verification.js +71 -0
- package/dist/auth/user/verification.js.map +1 -0
- package/dist/cli/browser.d.ts +11 -0
- package/dist/cli/browser.d.ts.map +1 -0
- package/dist/cli/browser.js +35 -0
- package/dist/cli/browser.js.map +1 -0
- package/dist/cli/callback-server.d.ts +30 -0
- package/dist/cli/callback-server.d.ts.map +1 -0
- package/dist/cli/callback-server.js +100 -0
- package/dist/cli/callback-server.js.map +1 -0
- package/dist/cli/file-token-store.d.ts +79 -0
- package/dist/cli/file-token-store.d.ts.map +1 -0
- package/dist/cli/file-token-store.js +138 -0
- package/dist/cli/file-token-store.js.map +1 -0
- package/dist/cli/index.d.ts +33 -0
- package/dist/cli/index.d.ts.map +1 -0
- package/dist/cli/index.js +38 -0
- package/dist/cli/index.js.map +1 -0
- package/dist/cli/oauth.d.ts +67 -0
- package/dist/cli/oauth.d.ts.map +1 -0
- package/dist/cli/oauth.js +101 -0
- package/dist/cli/oauth.js.map +1 -0
- package/dist/cli/pkce.d.ts +35 -0
- package/dist/cli/pkce.d.ts.map +1 -0
- package/dist/cli/pkce.js +43 -0
- package/dist/cli/pkce.js.map +1 -0
- package/dist/client.d.ts +22 -0
- package/dist/client.d.ts.map +1 -0
- package/dist/client.js +99 -0
- package/dist/client.js.map +1 -0
- package/dist/db/client.d.ts +9 -0
- package/dist/db/client.d.ts.map +1 -0
- package/dist/db/client.js +19 -0
- package/dist/db/client.js.map +1 -0
- package/dist/db/errors.d.ts +19 -0
- package/dist/db/errors.d.ts.map +1 -0
- package/dist/db/errors.js +57 -0
- package/dist/db/errors.js.map +1 -0
- package/dist/db/index.d.ts +7 -0
- package/dist/db/index.d.ts.map +1 -0
- package/dist/db/index.js +5 -0
- package/dist/db/index.js.map +1 -0
- package/dist/db/mock.d.ts +28 -0
- package/dist/db/mock.d.ts.map +1 -0
- package/dist/db/mock.js +459 -0
- package/dist/db/mock.js.map +1 -0
- package/dist/db/types.d.ts +73 -0
- package/dist/db/types.d.ts.map +1 -0
- package/dist/db/types.js +2 -0
- package/dist/db/types.js.map +1 -0
- package/dist/index.d.ts +21 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +20 -0
- package/dist/index.js.map +1 -0
- package/dist/lib/errors.d.ts +33 -0
- package/dist/lib/errors.d.ts.map +1 -0
- package/dist/lib/errors.js +76 -0
- package/dist/lib/errors.js.map +1 -0
- package/dist/lib/http.d.ts +81 -0
- package/dist/lib/http.d.ts.map +1 -0
- package/dist/lib/http.js +163 -0
- package/dist/lib/http.js.map +1 -0
- package/dist/lib/keys.d.ts +87 -0
- package/dist/lib/keys.d.ts.map +1 -0
- package/dist/lib/keys.js +147 -0
- package/dist/lib/keys.js.map +1 -0
- package/dist/lib/paths.d.ts +37 -0
- package/dist/lib/paths.d.ts.map +1 -0
- package/dist/lib/paths.js +49 -0
- package/dist/lib/paths.js.map +1 -0
- package/dist/lib/token-store.d.ts +42 -0
- package/dist/lib/token-store.d.ts.map +1 -0
- package/dist/lib/token-store.js +75 -0
- package/dist/lib/token-store.js.map +1 -0
- package/dist/mocks/handlers.d.ts +29 -0
- package/dist/mocks/handlers.d.ts.map +1 -0
- package/dist/mocks/handlers.js +79 -0
- package/dist/mocks/handlers.js.map +1 -0
- package/dist/mocks/index.d.ts +5 -0
- package/dist/mocks/index.d.ts.map +1 -0
- package/dist/mocks/index.js +9 -0
- package/dist/mocks/index.js.map +1 -0
- package/dist/mocks/responses.d.ts +76 -0
- package/dist/mocks/responses.d.ts.map +1 -0
- package/dist/mocks/responses.js +91 -0
- package/dist/mocks/responses.js.map +1 -0
- package/dist/mocks/server.d.ts +7 -0
- package/dist/mocks/server.d.ts.map +1 -0
- package/dist/mocks/server.js +9 -0
- package/dist/mocks/server.js.map +1 -0
- package/dist/mocks/state.d.ts +86 -0
- package/dist/mocks/state.d.ts.map +1 -0
- package/dist/mocks/state.js +77 -0
- package/dist/mocks/state.js.map +1 -0
- package/dist/storage/bucket-ref.d.ts +183 -0
- package/dist/storage/bucket-ref.d.ts.map +1 -0
- package/dist/storage/bucket-ref.js +529 -0
- package/dist/storage/bucket-ref.js.map +1 -0
- package/dist/storage/errors.d.ts +27 -0
- package/dist/storage/errors.d.ts.map +1 -0
- package/dist/storage/errors.js +89 -0
- package/dist/storage/errors.js.map +1 -0
- package/dist/storage/index.d.ts +13 -0
- package/dist/storage/index.d.ts.map +1 -0
- package/dist/storage/index.js +11 -0
- package/dist/storage/index.js.map +1 -0
- package/dist/storage/interface.d.ts +245 -0
- package/dist/storage/interface.d.ts.map +1 -0
- package/dist/storage/interface.js +2 -0
- package/dist/storage/interface.js.map +1 -0
- package/dist/storage/mock-storage.d.ts +67 -0
- package/dist/storage/mock-storage.d.ts.map +1 -0
- package/dist/storage/mock-storage.js +478 -0
- package/dist/storage/mock-storage.js.map +1 -0
- package/dist/storage/policies-client.d.ts +77 -0
- package/dist/storage/policies-client.d.ts.map +1 -0
- package/dist/storage/policies-client.js +115 -0
- package/dist/storage/policies-client.js.map +1 -0
- package/dist/storage/policy-templates.d.ts +6 -0
- package/dist/storage/policy-templates.d.ts.map +1 -0
- package/dist/storage/policy-templates.js +290 -0
- package/dist/storage/policy-templates.js.map +1 -0
- package/dist/storage/policy-types.d.ts +98 -0
- package/dist/storage/policy-types.d.ts.map +1 -0
- package/dist/storage/policy-types.js +20 -0
- package/dist/storage/policy-types.js.map +1 -0
- package/dist/storage/storage-client.d.ts +32 -0
- package/dist/storage/storage-client.d.ts.map +1 -0
- package/dist/storage/storage-client.js +94 -0
- package/dist/storage/storage-client.js.map +1 -0
- package/dist/storage/tus-upload.d.ts +56 -0
- package/dist/storage/tus-upload.d.ts.map +1 -0
- package/dist/storage/tus-upload.js +236 -0
- package/dist/storage/tus-upload.js.map +1 -0
- package/dist/storage/types.d.ts +335 -0
- package/dist/storage/types.d.ts.map +1 -0
- package/dist/storage/types.js +39 -0
- package/dist/storage/types.js.map +1 -0
- package/dist/test/auth/helpers.d.ts +33 -0
- package/dist/test/auth/helpers.d.ts.map +1 -0
- package/dist/test/auth/helpers.js +80 -0
- package/dist/test/auth/helpers.js.map +1 -0
- package/dist/test/helpers/jwt.d.ts +61 -0
- package/dist/test/helpers/jwt.d.ts.map +1 -0
- package/dist/test/helpers/jwt.js +132 -0
- package/dist/test/helpers/jwt.js.map +1 -0
- package/dist/test/helpers/mailpit.d.ts +61 -0
- package/dist/test/helpers/mailpit.d.ts.map +1 -0
- package/dist/test/helpers/mailpit.js +107 -0
- package/dist/test/helpers/mailpit.js.map +1 -0
- package/dist/test/setup.d.ts +2 -0
- package/dist/test/setup.d.ts.map +1 -0
- package/dist/test/setup.js +17 -0
- package/dist/test/setup.js.map +1 -0
- package/dist/types.d.ts +96 -0
- package/dist/types.d.ts.map +1 -0
- package/dist/types.js +5 -0
- package/dist/types.js.map +1 -0
- 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":"AACA,OAAO,EAAE,UAAU,EAAE,MAAM,kBAAkB,CAAC;AAC9C,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,sBAAsB,CAAC;AAC5D,OAAO,KAAK,EACV,OAAO,EACP,aAAa,EACb,WAAW,EACX,eAAe,EACf,oBAAoB,EACpB,iBAAiB,EACjB,oBAAoB,EACpB,uBAAuB,EACvB,UAAU,EACV,gBAAgB,EAChB,kBAAkB,EAClB,uBAAuB,EACvB,qBAAqB,EACrB,cAAc,EACf,MAAM,YAAY,CAAC;AAMpB;;GAEG;AACH,MAAM,WAAW,iBAAiB;IAChC,aAAa,EAAE,MAAM,GAAG,IAAI,CAAC;IAC7B,QAAQ,EAAE,GAAG,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;IAC/B,WAAW,EAAE,GAAG,CAAC,MAAM,EAAE;QAAE,IAAI,EAAE,WAAW,CAAC;QAAC,cAAc,EAAE,OAAO,CAAA;KAAE,CAAC,CAAC;IACzE,WAAW,EAAE,GAAG,CACd,MAAM,EACN;QACE,KAAK,EAAE,MAAM,CAAC;QACd,SAAS,EAAE,MAAM,CAAC;QAClB,WAAW,EAAE,WAAW,CAAC;QACzB,cAAc,EAAE,cAAc,CAAC;QAC/B,WAAW,EAAE,MAAM,GAAG,IAAI,CAAC;QAC3B,SAAS,EAAE,MAAM,CAAC;KACnB,CACF,CAAC;IACF,UAAU,EAAE,OAAO,CAAC;IACpB,KAAK,EAAE,UAAU,GAAG,IAAI,CAAC;IACzB,KAAK,IAAI,IAAI,CAAC;CACf;AAED;;GAEG;AACH,eAAO,MAAM,iBAAiB,EAAE,iBAe/B,CAAC;AAEF;;GAEG;AACH,eAAO,MAAM,qBAAqB;;;;;;;;;CAiBjC,CAAC;AA+CF;;GAEG;AACH,qBAAa,kBAAmB,YAAW,eAAe;IAClD,IAAI,IAAI,OAAO,CAAC,OAAO,EAAE,CAAC;IAQ1B,GAAG,CAAC,SAAS,EAAE,MAAM,GAAG,OAAO,CAAC,OAAO,CAAC;IAyBxC,SAAS,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC,OAAO,CAAC;IAgCzC,WAAW,IAAI,OAAO,CAAC,OAAO,CAAC;IAU/B,MAAM,CAAC,OAAO,GAAE,oBAAyB,GAAG,OAAO,CAAC,OAAO,CAAC;IA6B5D,MAAM,CACV,SAAS,EAAE,MAAM,EACjB,OAAO,EAAE,oBAAoB,GAC5B,OAAO,CAAC,OAAO,CAAC;IAsCb,YAAY,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC;IAa3C,cAAc,CAAC,SAAS,EAAE,MAAM,GAAG,OAAO,CAAC,eAAe,CAAC;IAwB3D,UAAU,CACd,SAAS,EAAE,MAAM,EACjB,OAAO,GAAE,iBAAsB,GAC9B,OAAO,CAAC,aAAa,EAAE,CAAC;IAoCrB,YAAY,CAAC,SAAS,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IA2B9D,gBAAgB,CAAC,OAAO,EAAE,uBAAuB,GAAG,OAAO,CAAC,IAAI,CAAC;IAmDvE,IAAI,WAAW;0BAGA,uBAAuB,KAC/B,OAAO,CAAC;YAAE,KAAK,EAAE,MAAM,CAAA;SAAE,CAAC;0BA+BhB,MAAM,YACR,qBAAqB,KAC7B,OAAO,CAAC,UAAU,EAAE,CAAC;wBAiCF,MAAM,KAAG,OAAO,CAAC,gBAAgB,CAAC;wBAYlC,MAAM,KAAG,OAAO,CAAC,kBAAkB,CAAC;+BAyC7B,MAAM,KAAG,OAAO,CAAC,IAAI,CAAC;MAwBtD;CACF;AAMD;;GAEG;AACH,wBAAgB,iBAAiB,CAC/B,MAAM,EAAE,MAAM,EACd,OAAO,GAAE;IACP,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,eAAe,CAAC,EAAE,OAAO,CAAC;IAC1B,IAAI,CAAC,EAAE,WAAW,CAAC;IACnB,cAAc,CAAC,EAAE,OAAO,CAAC;CACrB,GACL,OAAO,CAwBT;AAED;;GAEG;AACH,wBAAgB,aAAa,CAC3B,SAAS,EAAE,MAAM,EACjB,MAAM,EAAE,MAAM,EACd,OAAO,GAAE;IACP,IAAI,CAAC,EAAE,WAAW,CAAC;IACnB,cAAc,CAAC,EAAE,OAAO,CAAC;CACrB,GACL,IAAI,CAKN;AAED;;GAEG;AACH,wBAAgB,kBAAkB,CAAC,MAAM,EAAE,MAAM,GAAG,IAAI,GAAG,IAAI,CAE9D"}
|