@stackframe/stack-shared 2.8.35 → 2.8.39
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/CHANGELOG.md +24 -0
- package/dist/config/schema.d.mts +240 -104
- package/dist/config/schema.d.ts +240 -104
- package/dist/config/schema.js +61 -27
- package/dist/config/schema.js.map +1 -1
- package/dist/esm/config/schema.js +61 -27
- package/dist/esm/config/schema.js.map +1 -1
- package/dist/esm/helpers/vault/client-side.js +46 -0
- package/dist/esm/helpers/vault/client-side.js.map +1 -0
- package/dist/esm/helpers/vault/server-side.js +96 -0
- package/dist/esm/helpers/vault/server-side.js.map +1 -0
- package/dist/esm/hooks/use-hover.js +71 -0
- package/dist/esm/hooks/use-hover.js.map +1 -0
- package/dist/esm/interface/admin-interface.js +74 -5
- package/dist/esm/interface/admin-interface.js.map +1 -1
- package/dist/esm/interface/client-interface.js +29 -26
- package/dist/esm/interface/client-interface.js.map +1 -1
- package/dist/esm/interface/crud/oauth-providers.js +2 -0
- package/dist/esm/interface/crud/oauth-providers.js.map +1 -1
- package/dist/esm/interface/crud/transactions.js +21 -0
- package/dist/esm/interface/crud/transactions.js.map +1 -0
- package/dist/esm/interface/server-interface.js +43 -7
- package/dist/esm/interface/server-interface.js.map +1 -1
- package/dist/esm/known-errors.js +58 -1
- package/dist/esm/known-errors.js.map +1 -1
- package/dist/esm/schema-fields.js +6 -3
- package/dist/esm/schema-fields.js.map +1 -1
- package/dist/esm/utils/arrays.js +25 -0
- package/dist/esm/utils/arrays.js.map +1 -1
- package/dist/esm/utils/bytes.js +1 -2
- package/dist/esm/utils/bytes.js.map +1 -1
- package/dist/esm/utils/crypto.js +83 -2
- package/dist/esm/utils/crypto.js.map +1 -1
- package/dist/esm/utils/esbuild.js +63 -6
- package/dist/esm/utils/esbuild.js.map +1 -1
- package/dist/esm/utils/jwt.js +16 -1
- package/dist/esm/utils/jwt.js.map +1 -1
- package/dist/esm/utils/numbers.js +14 -9
- package/dist/esm/utils/numbers.js.map +1 -1
- package/dist/esm/utils/promises.js +2 -1
- package/dist/esm/utils/promises.js.map +1 -1
- package/dist/esm/utils/react.js +7 -3
- package/dist/esm/utils/react.js.map +1 -1
- package/dist/esm/utils/types.js.map +1 -1
- package/dist/helpers/password.d.mts +4 -4
- package/dist/helpers/password.d.ts +4 -4
- package/dist/helpers/vault/client-side.d.mts +14 -0
- package/dist/helpers/vault/client-side.d.ts +14 -0
- package/dist/helpers/vault/client-side.js +73 -0
- package/dist/helpers/vault/client-side.js.map +1 -0
- package/dist/helpers/vault/server-side.d.mts +7 -0
- package/dist/helpers/vault/server-side.d.ts +7 -0
- package/dist/helpers/vault/server-side.js +115 -0
- package/dist/helpers/vault/server-side.js.map +1 -0
- package/dist/hooks/use-hover.d.mts +6 -0
- package/dist/hooks/use-hover.d.ts +6 -0
- package/dist/hooks/use-hover.js +96 -0
- package/dist/hooks/use-hover.js.map +1 -0
- package/dist/index.d.mts +6 -4
- package/dist/index.d.ts +6 -4
- package/dist/interface/admin-interface.d.mts +45 -8
- package/dist/interface/admin-interface.d.ts +45 -8
- package/dist/interface/admin-interface.js +74 -5
- package/dist/interface/admin-interface.js.map +1 -1
- package/dist/interface/client-interface.d.mts +5 -21
- package/dist/interface/client-interface.d.ts +5 -21
- package/dist/interface/client-interface.js +29 -26
- package/dist/interface/client-interface.js.map +1 -1
- package/dist/interface/crud/current-user.d.mts +1 -1
- package/dist/interface/crud/current-user.d.ts +1 -1
- package/dist/interface/crud/oauth-providers.d.mts +8 -0
- package/dist/interface/crud/oauth-providers.d.ts +8 -0
- package/dist/interface/crud/oauth-providers.js +1 -0
- package/dist/interface/crud/oauth-providers.js.map +1 -1
- package/dist/interface/crud/project-api-keys.d.mts +4 -4
- package/dist/interface/crud/project-api-keys.d.ts +4 -4
- package/dist/interface/crud/team-member-profiles.d.mts +2 -2
- package/dist/interface/crud/team-member-profiles.d.ts +2 -2
- package/dist/interface/crud/transactions.d.mts +56 -0
- package/dist/interface/crud/transactions.d.ts +56 -0
- package/dist/interface/crud/transactions.js +46 -0
- package/dist/interface/crud/transactions.js.map +1 -0
- package/dist/interface/crud/users.d.mts +2 -2
- package/dist/interface/crud/users.d.ts +2 -2
- package/dist/interface/server-interface.d.mts +10 -43
- package/dist/interface/server-interface.d.ts +10 -43
- package/dist/interface/server-interface.js +43 -7
- package/dist/interface/server-interface.js.map +1 -1
- package/dist/known-errors.d.mts +15 -0
- package/dist/known-errors.d.ts +15 -0
- package/dist/known-errors.js +58 -1
- package/dist/known-errors.js.map +1 -1
- package/dist/schema-fields.d.mts +4 -3
- package/dist/schema-fields.d.ts +4 -3
- package/dist/schema-fields.js +7 -3
- package/dist/schema-fields.js.map +1 -1
- package/dist/utils/arrays.d.mts +6 -1
- package/dist/utils/arrays.d.ts +6 -1
- package/dist/utils/arrays.js +30 -0
- package/dist/utils/arrays.js.map +1 -1
- package/dist/utils/bytes.js +1 -2
- package/dist/utils/bytes.js.map +1 -1
- package/dist/utils/crypto.d.mts +31 -1
- package/dist/utils/crypto.d.ts +31 -1
- package/dist/utils/crypto.js +87 -2
- package/dist/utils/crypto.js.map +1 -1
- package/dist/utils/esbuild.d.mts +1 -0
- package/dist/utils/esbuild.d.ts +1 -0
- package/dist/utils/esbuild.js +63 -6
- package/dist/utils/esbuild.js.map +1 -1
- package/dist/utils/jwt.d.mts +34 -1
- package/dist/utils/jwt.d.ts +34 -1
- package/dist/utils/jwt.js +16 -0
- package/dist/utils/jwt.js.map +1 -1
- package/dist/utils/numbers.js +14 -9
- package/dist/utils/numbers.js.map +1 -1
- package/dist/utils/promises.d.mts +1 -1
- package/dist/utils/promises.d.ts +1 -1
- package/dist/utils/promises.js +2 -1
- package/dist/utils/promises.js.map +1 -1
- package/dist/utils/react.js +7 -3
- package/dist/utils/react.js.map +1 -1
- package/dist/utils/types.d.mts +10 -1
- package/dist/utils/types.d.ts +10 -1
- package/dist/utils/types.js.map +1 -1
- package/package.json +4 -2
|
@@ -1,4 +1,6 @@
|
|
|
1
|
+
import { KnownErrors } from '../known-errors.mjs';
|
|
1
2
|
import { InternalSession, AccessToken, RefreshToken } from '../sessions.mjs';
|
|
3
|
+
import { Result } from '../utils/results.mjs';
|
|
2
4
|
import { ConfigCrud, ConfigOverrideCrud } from './crud/config.mjs';
|
|
3
5
|
import { InternalEmailsCrud } from './crud/emails.mjs';
|
|
4
6
|
import { InternalApiKeysCrud } from './crud/internal-api-keys.mjs';
|
|
@@ -6,31 +8,31 @@ import { ProjectPermissionDefinitionsCrud } from './crud/project-permissions.mjs
|
|
|
6
8
|
import { ProjectsCrud } from './crud/projects.mjs';
|
|
7
9
|
import { SvixTokenCrud } from './crud/svix-token.mjs';
|
|
8
10
|
import { TeamPermissionDefinitionsCrud } from './crud/team-permissions.mjs';
|
|
11
|
+
import { AdminTransaction } from './crud/transactions.mjs';
|
|
9
12
|
import { ServerAuthApplicationOptions, StackServerInterface } from './server-interface.mjs';
|
|
10
13
|
import './client-interface.mjs';
|
|
11
|
-
import '../
|
|
14
|
+
import '../utils/errors.mjs';
|
|
15
|
+
import '../utils/json.mjs';
|
|
12
16
|
import 'jose';
|
|
13
17
|
import '../crud.mjs';
|
|
14
18
|
import 'yup';
|
|
15
19
|
import '../utils/types.mjs';
|
|
16
20
|
import '../utils/strings.mjs';
|
|
17
|
-
import '../utils/
|
|
21
|
+
import '../utils/dates.mjs';
|
|
18
22
|
import './crud/connected-accounts.mjs';
|
|
19
23
|
import './crud/contact-channels.mjs';
|
|
20
24
|
import './crud/current-user.mjs';
|
|
21
25
|
import './crud/items.mjs';
|
|
22
26
|
import './crud/notification-preferences.mjs';
|
|
27
|
+
import './crud/oauth-providers.mjs';
|
|
23
28
|
import './crud/sessions.mjs';
|
|
24
29
|
import './crud/team-invitation.mjs';
|
|
25
30
|
import './crud/team-member-profiles.mjs';
|
|
26
31
|
import './crud/team-memberships.mjs';
|
|
27
32
|
import './crud/teams.mjs';
|
|
28
33
|
import './crud/users.mjs';
|
|
29
|
-
import '../utils/errors.mjs';
|
|
30
|
-
import '../utils/json.mjs';
|
|
31
34
|
import '../schema-fields.mjs';
|
|
32
35
|
import '../utils/currency-constants.mjs';
|
|
33
|
-
import '../utils/dates.mjs';
|
|
34
36
|
import '@simplewebauthn/types';
|
|
35
37
|
import './crud/project-api-keys.mjs';
|
|
36
38
|
|
|
@@ -71,6 +73,12 @@ declare class StackAdminInterface extends StackServerInterface {
|
|
|
71
73
|
refreshToken: RefreshToken | null;
|
|
72
74
|
} | null;
|
|
73
75
|
}>;
|
|
76
|
+
protected sendAdminRequestAndCatchKnownError<E extends typeof KnownErrors[keyof KnownErrors]>(path: string, requestOptions: RequestInit, tokenStoreOrNull: InternalSession | null, errorsToCatch: readonly E[]): Promise<Result<Response & {
|
|
77
|
+
usedTokens: {
|
|
78
|
+
accessToken: AccessToken;
|
|
79
|
+
refreshToken: RefreshToken | null;
|
|
80
|
+
} | null;
|
|
81
|
+
}, InstanceType<E>>>;
|
|
74
82
|
getProject(): Promise<ProjectsCrud["Admin"]["Read"]>;
|
|
75
83
|
updateProject(update: ProjectsCrud["Admin"]["Update"]): Promise<ProjectsCrud["Admin"]["Read"]>;
|
|
76
84
|
createInternalApiKey(options: InternalApiKeyCreateCrudRequest): Promise<InternalApiKeyCreateCrudResponse>;
|
|
@@ -83,6 +91,26 @@ declare class StackAdminInterface extends StackServerInterface {
|
|
|
83
91
|
theme_id?: string;
|
|
84
92
|
tsx_source: string;
|
|
85
93
|
}[]>;
|
|
94
|
+
listInternalEmailDrafts(): Promise<{
|
|
95
|
+
id: string;
|
|
96
|
+
display_name: string;
|
|
97
|
+
theme_id?: string | undefined | false;
|
|
98
|
+
tsx_source: string;
|
|
99
|
+
sent_at_millis?: number | null;
|
|
100
|
+
}[]>;
|
|
101
|
+
createEmailDraft(options: {
|
|
102
|
+
display_name?: string;
|
|
103
|
+
theme_id?: string | false;
|
|
104
|
+
tsx_source?: string;
|
|
105
|
+
}): Promise<{
|
|
106
|
+
id: string;
|
|
107
|
+
}>;
|
|
108
|
+
updateEmailDraft(id: string, data: {
|
|
109
|
+
display_name?: string;
|
|
110
|
+
theme_id?: string | null | false;
|
|
111
|
+
tsx_source?: string;
|
|
112
|
+
sent_at_millis?: number | null;
|
|
113
|
+
}): Promise<void>;
|
|
86
114
|
listEmailThemes(): Promise<{
|
|
87
115
|
id: string;
|
|
88
116
|
display_name: string;
|
|
@@ -98,7 +126,7 @@ declare class StackAdminInterface extends StackServerInterface {
|
|
|
98
126
|
getSvixToken(): Promise<SvixTokenCrud["Admin"]["Read"]>;
|
|
99
127
|
deleteProject(): Promise<void>;
|
|
100
128
|
transferProject(session: InternalSession, newTeamId: string): Promise<void>;
|
|
101
|
-
getMetrics(): Promise<any>;
|
|
129
|
+
getMetrics(includeAnonymous?: boolean): Promise<any>;
|
|
102
130
|
sendTestEmail(data: {
|
|
103
131
|
recipient_email: string;
|
|
104
132
|
email_config: {
|
|
@@ -115,7 +143,7 @@ declare class StackAdminInterface extends StackServerInterface {
|
|
|
115
143
|
}>;
|
|
116
144
|
listSentEmails(): Promise<InternalEmailsCrud["Admin"]["List"]>;
|
|
117
145
|
sendSignInInvitationEmail(email: string, callbackUrl: string): Promise<void>;
|
|
118
|
-
sendChatMessage(threadId: string, contextType: "email-theme" | "email-template", messages: Array<{
|
|
146
|
+
sendChatMessage(threadId: string, contextType: "email-theme" | "email-template" | "email-draft", messages: Array<{
|
|
119
147
|
role: string;
|
|
120
148
|
content: any;
|
|
121
149
|
}>, abortSignal?: AbortSignal): Promise<{
|
|
@@ -154,7 +182,7 @@ declare class StackAdminInterface extends StackServerInterface {
|
|
|
154
182
|
setupPayments(): Promise<{
|
|
155
183
|
url: string;
|
|
156
184
|
}>;
|
|
157
|
-
getStripeAccountInfo(): Promise<{
|
|
185
|
+
getStripeAccountInfo(): Promise<null | {
|
|
158
186
|
account_id: string;
|
|
159
187
|
charges_enabled: boolean;
|
|
160
188
|
details_submitted: boolean;
|
|
@@ -163,6 +191,15 @@ declare class StackAdminInterface extends StackServerInterface {
|
|
|
163
191
|
createStripeWidgetAccountSession(): Promise<{
|
|
164
192
|
client_secret: string;
|
|
165
193
|
}>;
|
|
194
|
+
listTransactions(params?: {
|
|
195
|
+
cursor?: string;
|
|
196
|
+
limit?: number;
|
|
197
|
+
type?: 'subscription' | 'one_time' | 'item_quantity_change';
|
|
198
|
+
customerType?: 'user' | 'team' | 'custom';
|
|
199
|
+
}): Promise<{
|
|
200
|
+
transactions: AdminTransaction[];
|
|
201
|
+
nextCursor: string | null;
|
|
202
|
+
}>;
|
|
166
203
|
testModePurchase(options: {
|
|
167
204
|
price_id: string;
|
|
168
205
|
full_code: string;
|
|
@@ -1,4 +1,6 @@
|
|
|
1
|
+
import { KnownErrors } from '../known-errors.js';
|
|
1
2
|
import { InternalSession, AccessToken, RefreshToken } from '../sessions.js';
|
|
3
|
+
import { Result } from '../utils/results.js';
|
|
2
4
|
import { ConfigCrud, ConfigOverrideCrud } from './crud/config.js';
|
|
3
5
|
import { InternalEmailsCrud } from './crud/emails.js';
|
|
4
6
|
import { InternalApiKeysCrud } from './crud/internal-api-keys.js';
|
|
@@ -6,31 +8,31 @@ import { ProjectPermissionDefinitionsCrud } from './crud/project-permissions.js'
|
|
|
6
8
|
import { ProjectsCrud } from './crud/projects.js';
|
|
7
9
|
import { SvixTokenCrud } from './crud/svix-token.js';
|
|
8
10
|
import { TeamPermissionDefinitionsCrud } from './crud/team-permissions.js';
|
|
11
|
+
import { AdminTransaction } from './crud/transactions.js';
|
|
9
12
|
import { ServerAuthApplicationOptions, StackServerInterface } from './server-interface.js';
|
|
10
13
|
import './client-interface.js';
|
|
11
|
-
import '../
|
|
14
|
+
import '../utils/errors.js';
|
|
15
|
+
import '../utils/json.js';
|
|
12
16
|
import 'jose';
|
|
13
17
|
import '../crud.js';
|
|
14
18
|
import 'yup';
|
|
15
19
|
import '../utils/types.js';
|
|
16
20
|
import '../utils/strings.js';
|
|
17
|
-
import '../utils/
|
|
21
|
+
import '../utils/dates.js';
|
|
18
22
|
import './crud/connected-accounts.js';
|
|
19
23
|
import './crud/contact-channels.js';
|
|
20
24
|
import './crud/current-user.js';
|
|
21
25
|
import './crud/items.js';
|
|
22
26
|
import './crud/notification-preferences.js';
|
|
27
|
+
import './crud/oauth-providers.js';
|
|
23
28
|
import './crud/sessions.js';
|
|
24
29
|
import './crud/team-invitation.js';
|
|
25
30
|
import './crud/team-member-profiles.js';
|
|
26
31
|
import './crud/team-memberships.js';
|
|
27
32
|
import './crud/teams.js';
|
|
28
33
|
import './crud/users.js';
|
|
29
|
-
import '../utils/errors.js';
|
|
30
|
-
import '../utils/json.js';
|
|
31
34
|
import '../schema-fields.js';
|
|
32
35
|
import '../utils/currency-constants.js';
|
|
33
|
-
import '../utils/dates.js';
|
|
34
36
|
import '@simplewebauthn/types';
|
|
35
37
|
import './crud/project-api-keys.js';
|
|
36
38
|
|
|
@@ -71,6 +73,12 @@ declare class StackAdminInterface extends StackServerInterface {
|
|
|
71
73
|
refreshToken: RefreshToken | null;
|
|
72
74
|
} | null;
|
|
73
75
|
}>;
|
|
76
|
+
protected sendAdminRequestAndCatchKnownError<E extends typeof KnownErrors[keyof KnownErrors]>(path: string, requestOptions: RequestInit, tokenStoreOrNull: InternalSession | null, errorsToCatch: readonly E[]): Promise<Result<Response & {
|
|
77
|
+
usedTokens: {
|
|
78
|
+
accessToken: AccessToken;
|
|
79
|
+
refreshToken: RefreshToken | null;
|
|
80
|
+
} | null;
|
|
81
|
+
}, InstanceType<E>>>;
|
|
74
82
|
getProject(): Promise<ProjectsCrud["Admin"]["Read"]>;
|
|
75
83
|
updateProject(update: ProjectsCrud["Admin"]["Update"]): Promise<ProjectsCrud["Admin"]["Read"]>;
|
|
76
84
|
createInternalApiKey(options: InternalApiKeyCreateCrudRequest): Promise<InternalApiKeyCreateCrudResponse>;
|
|
@@ -83,6 +91,26 @@ declare class StackAdminInterface extends StackServerInterface {
|
|
|
83
91
|
theme_id?: string;
|
|
84
92
|
tsx_source: string;
|
|
85
93
|
}[]>;
|
|
94
|
+
listInternalEmailDrafts(): Promise<{
|
|
95
|
+
id: string;
|
|
96
|
+
display_name: string;
|
|
97
|
+
theme_id?: string | undefined | false;
|
|
98
|
+
tsx_source: string;
|
|
99
|
+
sent_at_millis?: number | null;
|
|
100
|
+
}[]>;
|
|
101
|
+
createEmailDraft(options: {
|
|
102
|
+
display_name?: string;
|
|
103
|
+
theme_id?: string | false;
|
|
104
|
+
tsx_source?: string;
|
|
105
|
+
}): Promise<{
|
|
106
|
+
id: string;
|
|
107
|
+
}>;
|
|
108
|
+
updateEmailDraft(id: string, data: {
|
|
109
|
+
display_name?: string;
|
|
110
|
+
theme_id?: string | null | false;
|
|
111
|
+
tsx_source?: string;
|
|
112
|
+
sent_at_millis?: number | null;
|
|
113
|
+
}): Promise<void>;
|
|
86
114
|
listEmailThemes(): Promise<{
|
|
87
115
|
id: string;
|
|
88
116
|
display_name: string;
|
|
@@ -98,7 +126,7 @@ declare class StackAdminInterface extends StackServerInterface {
|
|
|
98
126
|
getSvixToken(): Promise<SvixTokenCrud["Admin"]["Read"]>;
|
|
99
127
|
deleteProject(): Promise<void>;
|
|
100
128
|
transferProject(session: InternalSession, newTeamId: string): Promise<void>;
|
|
101
|
-
getMetrics(): Promise<any>;
|
|
129
|
+
getMetrics(includeAnonymous?: boolean): Promise<any>;
|
|
102
130
|
sendTestEmail(data: {
|
|
103
131
|
recipient_email: string;
|
|
104
132
|
email_config: {
|
|
@@ -115,7 +143,7 @@ declare class StackAdminInterface extends StackServerInterface {
|
|
|
115
143
|
}>;
|
|
116
144
|
listSentEmails(): Promise<InternalEmailsCrud["Admin"]["List"]>;
|
|
117
145
|
sendSignInInvitationEmail(email: string, callbackUrl: string): Promise<void>;
|
|
118
|
-
sendChatMessage(threadId: string, contextType: "email-theme" | "email-template", messages: Array<{
|
|
146
|
+
sendChatMessage(threadId: string, contextType: "email-theme" | "email-template" | "email-draft", messages: Array<{
|
|
119
147
|
role: string;
|
|
120
148
|
content: any;
|
|
121
149
|
}>, abortSignal?: AbortSignal): Promise<{
|
|
@@ -154,7 +182,7 @@ declare class StackAdminInterface extends StackServerInterface {
|
|
|
154
182
|
setupPayments(): Promise<{
|
|
155
183
|
url: string;
|
|
156
184
|
}>;
|
|
157
|
-
getStripeAccountInfo(): Promise<{
|
|
185
|
+
getStripeAccountInfo(): Promise<null | {
|
|
158
186
|
account_id: string;
|
|
159
187
|
charges_enabled: boolean;
|
|
160
188
|
details_submitted: boolean;
|
|
@@ -163,6 +191,15 @@ declare class StackAdminInterface extends StackServerInterface {
|
|
|
163
191
|
createStripeWidgetAccountSession(): Promise<{
|
|
164
192
|
client_secret: string;
|
|
165
193
|
}>;
|
|
194
|
+
listTransactions(params?: {
|
|
195
|
+
cursor?: string;
|
|
196
|
+
limit?: number;
|
|
197
|
+
type?: 'subscription' | 'one_time' | 'item_quantity_change';
|
|
198
|
+
customerType?: 'user' | 'team' | 'custom';
|
|
199
|
+
}): Promise<{
|
|
200
|
+
transactions: AdminTransaction[];
|
|
201
|
+
nextCursor: string | null;
|
|
202
|
+
}>;
|
|
166
203
|
testModePurchase(options: {
|
|
167
204
|
price_id: string;
|
|
168
205
|
full_code: string;
|
|
@@ -23,6 +23,8 @@ __export(admin_interface_exports, {
|
|
|
23
23
|
StackAdminInterface: () => StackAdminInterface
|
|
24
24
|
});
|
|
25
25
|
module.exports = __toCommonJS(admin_interface_exports);
|
|
26
|
+
var import_known_errors = require("../known-errors.js");
|
|
27
|
+
var import_results = require("../utils/results.js");
|
|
26
28
|
var import_server_interface = require("./server-interface.js");
|
|
27
29
|
var StackAdminInterface = class extends import_server_interface.StackServerInterface {
|
|
28
30
|
constructor(options) {
|
|
@@ -43,6 +45,18 @@ var StackAdminInterface = class extends import_server_interface.StackServerInter
|
|
|
43
45
|
requestType
|
|
44
46
|
);
|
|
45
47
|
}
|
|
48
|
+
async sendAdminRequestAndCatchKnownError(path, requestOptions, tokenStoreOrNull, errorsToCatch) {
|
|
49
|
+
try {
|
|
50
|
+
return import_results.Result.ok(await this.sendAdminRequest(path, requestOptions, tokenStoreOrNull));
|
|
51
|
+
} catch (e) {
|
|
52
|
+
for (const errorType of errorsToCatch) {
|
|
53
|
+
if (errorType.isInstance(e)) {
|
|
54
|
+
return import_results.Result.error(e);
|
|
55
|
+
}
|
|
56
|
+
}
|
|
57
|
+
throw e;
|
|
58
|
+
}
|
|
59
|
+
}
|
|
46
60
|
async getProject() {
|
|
47
61
|
const response = await this.sendAdminRequest(
|
|
48
62
|
"/internal/projects/current",
|
|
@@ -110,6 +124,38 @@ var StackAdminInterface = class extends import_server_interface.StackServerInter
|
|
|
110
124
|
const result = await response.json();
|
|
111
125
|
return result.templates;
|
|
112
126
|
}
|
|
127
|
+
async listInternalEmailDrafts() {
|
|
128
|
+
const response = await this.sendAdminRequest(`/internal/email-drafts`, {}, null);
|
|
129
|
+
const result = await response.json();
|
|
130
|
+
return result.drafts;
|
|
131
|
+
}
|
|
132
|
+
async createEmailDraft(options) {
|
|
133
|
+
const response = await this.sendAdminRequest(
|
|
134
|
+
`/internal/email-drafts`,
|
|
135
|
+
{
|
|
136
|
+
method: "POST",
|
|
137
|
+
headers: {
|
|
138
|
+
"content-type": "application/json"
|
|
139
|
+
},
|
|
140
|
+
body: JSON.stringify(options)
|
|
141
|
+
},
|
|
142
|
+
null
|
|
143
|
+
);
|
|
144
|
+
return await response.json();
|
|
145
|
+
}
|
|
146
|
+
async updateEmailDraft(id, data) {
|
|
147
|
+
await this.sendAdminRequest(
|
|
148
|
+
`/internal/email-drafts/${id}`,
|
|
149
|
+
{
|
|
150
|
+
method: "PATCH",
|
|
151
|
+
headers: {
|
|
152
|
+
"content-type": "application/json"
|
|
153
|
+
},
|
|
154
|
+
body: JSON.stringify(data)
|
|
155
|
+
},
|
|
156
|
+
null
|
|
157
|
+
);
|
|
158
|
+
}
|
|
113
159
|
async listEmailThemes() {
|
|
114
160
|
const response = await this.sendAdminRequest(`/internal/email-themes`, {}, null);
|
|
115
161
|
const result = await response.json();
|
|
@@ -235,9 +281,14 @@ var StackAdminInterface = class extends import_server_interface.StackServerInter
|
|
|
235
281
|
session
|
|
236
282
|
);
|
|
237
283
|
}
|
|
238
|
-
async getMetrics() {
|
|
284
|
+
async getMetrics(includeAnonymous = false) {
|
|
285
|
+
const params = new URLSearchParams();
|
|
286
|
+
if (includeAnonymous) {
|
|
287
|
+
params.append("include_anonymous", "true");
|
|
288
|
+
}
|
|
289
|
+
const queryString = params.toString();
|
|
239
290
|
const response = await this.sendAdminRequest(
|
|
240
|
-
|
|
291
|
+
`/internal/metrics${queryString ? `?${queryString}` : ""}`,
|
|
241
292
|
{
|
|
242
293
|
method: "GET"
|
|
243
294
|
},
|
|
@@ -434,12 +485,16 @@ var StackAdminInterface = class extends import_server_interface.StackServerInter
|
|
|
434
485
|
return await response.json();
|
|
435
486
|
}
|
|
436
487
|
async getStripeAccountInfo() {
|
|
437
|
-
const response = await this.
|
|
488
|
+
const response = await this.sendAdminRequestAndCatchKnownError(
|
|
438
489
|
"/internal/payments/stripe/account-info",
|
|
439
490
|
{},
|
|
440
|
-
null
|
|
491
|
+
null,
|
|
492
|
+
[import_known_errors.KnownErrors.StripeAccountInfoNotFound]
|
|
441
493
|
);
|
|
442
|
-
|
|
494
|
+
if (response.status === "error") {
|
|
495
|
+
return null;
|
|
496
|
+
}
|
|
497
|
+
return await response.data.json();
|
|
443
498
|
}
|
|
444
499
|
async createStripeWidgetAccountSession() {
|
|
445
500
|
const response = await this.sendAdminRequest(
|
|
@@ -455,6 +510,20 @@ var StackAdminInterface = class extends import_server_interface.StackServerInter
|
|
|
455
510
|
);
|
|
456
511
|
return await response.json();
|
|
457
512
|
}
|
|
513
|
+
async listTransactions(params) {
|
|
514
|
+
const qs = new URLSearchParams();
|
|
515
|
+
if (params?.cursor) qs.set("cursor", params.cursor);
|
|
516
|
+
if (typeof params?.limit === "number") qs.set("limit", String(params.limit));
|
|
517
|
+
if (params?.type) qs.set("type", params.type);
|
|
518
|
+
if (params?.customerType) qs.set("customer_type", params.customerType);
|
|
519
|
+
const response = await this.sendAdminRequest(
|
|
520
|
+
`/internal/payments/transactions${qs.size ? `?${qs.toString()}` : ""}`,
|
|
521
|
+
{ method: "GET" },
|
|
522
|
+
null
|
|
523
|
+
);
|
|
524
|
+
const json = await response.json();
|
|
525
|
+
return { transactions: json.transactions, nextCursor: json.next_cursor };
|
|
526
|
+
}
|
|
458
527
|
async testModePurchase(options) {
|
|
459
528
|
await this.sendAdminRequest(
|
|
460
529
|
"/internal/payments/test-mode-purchase-session",
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../src/interface/admin-interface.ts"],"sourcesContent":["import { InternalSession } from \"../sessions\";\nimport { ConfigCrud, ConfigOverrideCrud } from \"./crud/config\";\nimport { InternalEmailsCrud } from \"./crud/emails\";\nimport { InternalApiKeysCrud } from \"./crud/internal-api-keys\";\nimport { ProjectPermissionDefinitionsCrud } from \"./crud/project-permissions\";\nimport { ProjectsCrud } from \"./crud/projects\";\nimport { SvixTokenCrud } from \"./crud/svix-token\";\nimport { TeamPermissionDefinitionsCrud } from \"./crud/team-permissions\";\nimport { ServerAuthApplicationOptions, StackServerInterface } from \"./server-interface\";\n\nexport type ChatContent = Array<\n | { type: \"text\", text: string }\n | { type: \"tool-call\", toolName: string, toolCallId: string, args: any, argsText: string, result: any }\n>;\n\nexport type AdminAuthApplicationOptions = ServerAuthApplicationOptions &(\n | {\n superSecretAdminKey: string,\n }\n | {\n projectOwnerSession: InternalSession,\n }\n);\n\nexport type InternalApiKeyCreateCrudRequest = {\n has_publishable_client_key: boolean,\n has_secret_server_key: boolean,\n has_super_secret_admin_key: boolean,\n expires_at_millis: number,\n description: string,\n};\n\nexport type InternalApiKeyCreateCrudResponse = InternalApiKeysCrud[\"Admin\"][\"Read\"] & {\n publishable_client_key?: string,\n secret_server_key?: string,\n super_secret_admin_key?: string,\n};\n\nexport class StackAdminInterface extends StackServerInterface {\n constructor(public readonly options: AdminAuthApplicationOptions) {\n super(options);\n }\n\n public async sendAdminRequest(path: string, options: RequestInit, session: InternalSession | null, requestType: \"admin\" = \"admin\") {\n return await this.sendServerRequest(\n path,\n {\n ...options,\n headers: {\n \"x-stack-super-secret-admin-key\": \"superSecretAdminKey\" in this.options ? this.options.superSecretAdminKey : \"\",\n ...options.headers,\n },\n },\n session,\n requestType,\n );\n }\n\n async getProject(): Promise<ProjectsCrud[\"Admin\"][\"Read\"]> {\n const response = await this.sendAdminRequest(\n \"/internal/projects/current\",\n {\n method: \"GET\",\n },\n null,\n );\n return await response.json();\n }\n\n async updateProject(update: ProjectsCrud[\"Admin\"][\"Update\"]): Promise<ProjectsCrud[\"Admin\"][\"Read\"]> {\n const response = await this.sendAdminRequest(\n \"/internal/projects/current\",\n {\n method: \"PATCH\",\n headers: {\n \"content-type\": \"application/json\",\n },\n body: JSON.stringify(update),\n },\n null,\n );\n return await response.json();\n }\n\n async createInternalApiKey(\n options: InternalApiKeyCreateCrudRequest,\n ): Promise<InternalApiKeyCreateCrudResponse> {\n const response = await this.sendAdminRequest(\n \"/internal/api-keys\",\n {\n method: \"POST\",\n headers: {\n \"content-type\": \"application/json\",\n },\n body: JSON.stringify(options),\n },\n null,\n );\n return await response.json();\n }\n\n async listInternalApiKeys(): Promise<InternalApiKeysCrud[\"Admin\"][\"Read\"][]> {\n const response = await this.sendAdminRequest(\"/internal/api-keys\", {}, null);\n const result = await response.json() as InternalApiKeysCrud[\"Admin\"][\"List\"];\n return result.items;\n }\n\n async revokeInternalApiKeyById(id: string) {\n await this.sendAdminRequest(\n `/internal/api-keys/${id}`, {\n method: \"PATCH\",\n headers: {\n \"content-type\": \"application/json\",\n },\n body: JSON.stringify({\n revoked: true,\n }),\n },\n null,\n );\n }\n\n async getInternalApiKey(id: string, session: InternalSession): Promise<InternalApiKeysCrud[\"Admin\"][\"Read\"]> {\n const response = await this.sendAdminRequest(`/internal/api-keys/${id}`, {}, session);\n return await response.json();\n }\n\n async listInternalEmailTemplates(): Promise<{ id: string, display_name: string, theme_id?: string, tsx_source: string }[]> {\n const response = await this.sendAdminRequest(`/internal/email-templates`, {}, null);\n const result = await response.json() as { templates: { id: string, display_name: string, theme_id?: string, tsx_source: string }[] };\n return result.templates;\n }\n\n async listEmailThemes(): Promise<{ id: string, display_name: string }[]> {\n const response = await this.sendAdminRequest(`/internal/email-themes`, {}, null);\n const result = await response.json() as { themes: { id: string, display_name: string }[] };\n return result.themes;\n }\n\n\n // Team permission definitions methods\n async listTeamPermissionDefinitions(): Promise<TeamPermissionDefinitionsCrud['Admin']['Read'][]> {\n const response = await this.sendAdminRequest(`/team-permission-definitions`, {}, null);\n const result = await response.json() as TeamPermissionDefinitionsCrud['Admin']['List'];\n return result.items;\n }\n\n async createTeamPermissionDefinition(data: TeamPermissionDefinitionsCrud['Admin']['Create']): Promise<TeamPermissionDefinitionsCrud['Admin']['Read']> {\n const response = await this.sendAdminRequest(\n \"/team-permission-definitions\",\n {\n method: \"POST\",\n headers: {\n \"content-type\": \"application/json\",\n },\n body: JSON.stringify(data),\n },\n null,\n );\n return await response.json();\n }\n\n async updateTeamPermissionDefinition(permissionId: string, data: TeamPermissionDefinitionsCrud['Admin']['Update']): Promise<TeamPermissionDefinitionsCrud['Admin']['Read']> {\n const response = await this.sendAdminRequest(\n `/team-permission-definitions/${permissionId}`,\n {\n method: \"PATCH\",\n headers: {\n \"content-type\": \"application/json\",\n },\n body: JSON.stringify(data),\n },\n null,\n );\n return await response.json();\n }\n\n async deleteTeamPermissionDefinition(permissionId: string): Promise<void> {\n await this.sendAdminRequest(\n `/team-permission-definitions/${permissionId}`,\n { method: \"DELETE\" },\n null,\n );\n }\n\n async listProjectPermissionDefinitions(): Promise<ProjectPermissionDefinitionsCrud['Admin']['Read'][]> {\n const response = await this.sendAdminRequest(`/project-permission-definitions`, {}, null);\n const result = await response.json() as ProjectPermissionDefinitionsCrud['Admin']['List'];\n return result.items;\n }\n\n async createProjectPermissionDefinition(data: ProjectPermissionDefinitionsCrud['Admin']['Create']): Promise<ProjectPermissionDefinitionsCrud['Admin']['Read']> {\n const response = await this.sendAdminRequest(\n \"/project-permission-definitions\",\n {\n method: \"POST\",\n headers: {\n \"content-type\": \"application/json\",\n },\n body: JSON.stringify(data),\n },\n null,\n );\n return await response.json();\n }\n\n async updateProjectPermissionDefinition(permissionId: string, data: ProjectPermissionDefinitionsCrud['Admin']['Update']): Promise<ProjectPermissionDefinitionsCrud['Admin']['Read']> {\n const response = await this.sendAdminRequest(\n `/project-permission-definitions/${permissionId}`,\n {\n method: \"PATCH\",\n headers: {\n \"content-type\": \"application/json\",\n },\n body: JSON.stringify(data),\n },\n null,\n );\n return await response.json();\n }\n\n async deleteProjectPermissionDefinition(permissionId: string): Promise<void> {\n await this.sendAdminRequest(\n `/project-permission-definitions/${permissionId}`,\n { method: \"DELETE\" },\n null,\n );\n }\n\n async getSvixToken(): Promise<SvixTokenCrud[\"Admin\"][\"Read\"]> {\n const response = await this.sendAdminRequest(\n \"/webhooks/svix-token\",\n {\n method: \"POST\",\n headers: {\n \"content-type\": \"application/json\",\n },\n body: JSON.stringify({}),\n },\n null,\n );\n return await response.json();\n }\n\n async deleteProject(): Promise<void> {\n await this.sendAdminRequest(\n \"/internal/projects/current\",\n {\n method: \"DELETE\",\n },\n null,\n );\n }\n\n async transferProject(session: InternalSession, newTeamId: string): Promise<void> {\n await this.sendAdminRequest(\n \"/internal/projects/transfer\",\n {\n method: \"POST\",\n headers: {\n \"content-type\": \"application/json\",\n },\n body: JSON.stringify({\n project_id: this.options.projectId,\n new_team_id: newTeamId,\n }),\n },\n session,\n );\n }\n\n async getMetrics(): Promise<any> {\n const response = await this.sendAdminRequest(\n \"/internal/metrics\",\n {\n method: \"GET\",\n },\n null,\n );\n return await response.json();\n }\n\n async sendTestEmail(data: {\n recipient_email: string,\n email_config: {\n host: string,\n port: number,\n username: string,\n password: string,\n sender_email: string,\n sender_name: string,\n },\n }): Promise<{ success: boolean, error_message?: string }> {\n const response = await this.sendAdminRequest(`/internal/send-test-email`, {\n method: \"POST\",\n headers: {\n \"content-type\": \"application/json\",\n },\n body: JSON.stringify(data),\n }, null);\n return await response.json();\n }\n\n async listSentEmails(): Promise<InternalEmailsCrud[\"Admin\"][\"List\"]> {\n const response = await this.sendAdminRequest(\"/internal/emails\", {\n method: \"GET\",\n }, null);\n return await response.json();\n }\n\n async sendSignInInvitationEmail(\n email: string,\n callbackUrl: string,\n ): Promise<void> {\n await this.sendAdminRequest(\n \"/internal/send-sign-in-invitation\",\n {\n method: \"POST\",\n headers: {\n \"Content-Type\": \"application/json\"\n },\n body: JSON.stringify({\n email,\n callback_url: callbackUrl,\n }),\n },\n null,\n );\n }\n\n\n async sendChatMessage(\n threadId: string,\n contextType: \"email-theme\" | \"email-template\",\n messages: Array<{ role: string, content: any }>,\n abortSignal?: AbortSignal,\n ): Promise<{ content: ChatContent }> {\n const response = await this.sendAdminRequest(\n `/internal/ai-chat/${threadId}`,\n {\n method: \"POST\",\n headers: {\n \"content-type\": \"application/json\",\n },\n body: JSON.stringify({ context_type: contextType, messages }),\n signal: abortSignal,\n },\n null,\n );\n return await response.json();\n }\n\n async saveChatMessage(threadId: string, message: any): Promise<void> {\n await this.sendAdminRequest(\n `/internal/ai-chat/${threadId}`,\n {\n method: \"PATCH\",\n headers: {\n \"content-type\": \"application/json\",\n },\n body: JSON.stringify({ message }),\n },\n null,\n );\n }\n\n async listChatMessages(threadId: string): Promise<{ messages: Array<any> }> {\n const response = await this.sendAdminRequest(\n `/internal/ai-chat/${threadId}`,\n { method: \"GET\" },\n null,\n );\n return await response.json();\n }\n\n async renderEmailPreview(options: { themeId?: string | null | false, themeTsxSource?: string, templateId?: string, templateTsxSource?: string }): Promise<{ html: string }> {\n const response = await this.sendAdminRequest(`/emails/render-email`, {\n method: \"POST\",\n headers: {\n \"content-type\": \"application/json\",\n },\n body: JSON.stringify({\n theme_id: options.themeId,\n theme_tsx_source: options.themeTsxSource,\n template_id: options.templateId,\n template_tsx_source: options.templateTsxSource,\n }),\n }, null);\n return await response.json();\n }\n\n async createEmailTheme(displayName: string): Promise<{ id: string }> {\n const response = await this.sendAdminRequest(\n `/internal/email-themes`,\n {\n method: \"POST\",\n headers: {\n \"content-type\": \"application/json\",\n },\n body: JSON.stringify({\n display_name: displayName,\n }),\n },\n null,\n );\n return await response.json();\n }\n\n async getEmailTheme(id: string): Promise<{ display_name: string, tsx_source: string }> {\n const response = await this.sendAdminRequest(\n `/internal/email-themes/${id}`,\n { method: \"GET\" },\n null,\n );\n return await response.json();\n }\n\n async updateEmailTheme(id: string, tsxSource: string): Promise<void> {\n await this.sendAdminRequest(\n `/internal/email-themes/${id}`,\n {\n method: \"PATCH\",\n headers: {\n \"content-type\": \"application/json\",\n },\n body: JSON.stringify({\n tsx_source: tsxSource,\n }),\n },\n null,\n );\n }\n\n async updateEmailTemplate(id: string, tsxSource: string, themeId: string | null | false): Promise<{ rendered_html: string }> {\n const response = await this.sendAdminRequest(\n `/internal/email-templates/${id}`,\n {\n method: \"PATCH\",\n headers: {\n \"content-type\": \"application/json\",\n },\n body: JSON.stringify({ tsx_source: tsxSource, theme_id: themeId }),\n },\n null,\n );\n return await response.json();\n }\n\n async getConfig(): Promise<ConfigCrud[\"Admin\"][\"Read\"]> {\n const response = await this.sendAdminRequest(\n `/internal/config`,\n { method: \"GET\" },\n null,\n );\n return await response.json();\n }\n\n async updateConfig(data: { configOverride: any }): Promise<ConfigOverrideCrud[\"Admin\"][\"Read\"]> {\n const response = await this.sendAdminRequest(\n `/internal/config/override`,\n {\n method: \"PATCH\",\n headers: {\n \"content-type\": \"application/json\",\n },\n body: JSON.stringify({ config_override_string: JSON.stringify(data.configOverride) }),\n },\n null,\n );\n return await response.json();\n }\n async createEmailTemplate(displayName: string): Promise<{ id: string }> {\n const response = await this.sendAdminRequest(\n `/internal/email-templates`,\n {\n method: \"POST\",\n headers: {\n \"content-type\": \"application/json\",\n },\n body: JSON.stringify({\n display_name: displayName,\n }),\n },\n null,\n );\n return await response.json();\n }\n\n async setupPayments(): Promise<{ url: string }> {\n const response = await this.sendAdminRequest(\n \"/internal/payments/setup\",\n {\n method: \"POST\",\n headers: {\n \"content-type\": \"application/json\",\n },\n body: JSON.stringify({}),\n },\n null,\n );\n return await response.json();\n }\n\n async getStripeAccountInfo(): Promise<{ account_id: string, charges_enabled: boolean, details_submitted: boolean, payouts_enabled: boolean }> {\n const response = await this.sendAdminRequest(\n \"/internal/payments/stripe/account-info\",\n {},\n null,\n );\n return await response.json();\n }\n\n async createStripeWidgetAccountSession(): Promise<{ client_secret: string }> {\n const response = await this.sendAdminRequest(\n \"/internal/payments/stripe-widgets/account-session\",\n {\n method: \"POST\",\n headers: {\n \"content-type\": \"application/json\",\n },\n body: JSON.stringify({}),\n },\n null,\n );\n return await response.json();\n }\n\n async testModePurchase(options: { price_id: string, full_code: string, quantity?: number }): Promise<void> {\n await this.sendAdminRequest(\n \"/internal/payments/test-mode-purchase-session\",\n {\n method: \"POST\",\n headers: { \"content-type\": \"application/json\" },\n body: JSON.stringify(options),\n },\n null,\n );\n }\n\n}\n"],"mappings":"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","names":[]}
|
|
1
|
+
{"version":3,"sources":["../../src/interface/admin-interface.ts"],"sourcesContent":["import { KnownErrors } from \"../known-errors\";\nimport { AccessToken, InternalSession, RefreshToken } from \"../sessions\";\nimport { Result } from \"../utils/results\";\nimport { ConfigCrud, ConfigOverrideCrud } from \"./crud/config\";\nimport { InternalEmailsCrud } from \"./crud/emails\";\nimport { InternalApiKeysCrud } from \"./crud/internal-api-keys\";\nimport { ProjectPermissionDefinitionsCrud } from \"./crud/project-permissions\";\nimport { ProjectsCrud } from \"./crud/projects\";\nimport { SvixTokenCrud } from \"./crud/svix-token\";\nimport { TeamPermissionDefinitionsCrud } from \"./crud/team-permissions\";\nimport type { AdminTransaction } from \"./crud/transactions\";\nimport { ServerAuthApplicationOptions, StackServerInterface } from \"./server-interface\";\n\n\nexport type ChatContent = Array<\n | { type: \"text\", text: string }\n | { type: \"tool-call\", toolName: string, toolCallId: string, args: any, argsText: string, result: any }\n>;\n\nexport type AdminAuthApplicationOptions = ServerAuthApplicationOptions &(\n | {\n superSecretAdminKey: string,\n }\n | {\n projectOwnerSession: InternalSession,\n }\n);\n\nexport type InternalApiKeyCreateCrudRequest = {\n has_publishable_client_key: boolean,\n has_secret_server_key: boolean,\n has_super_secret_admin_key: boolean,\n expires_at_millis: number,\n description: string,\n};\n\nexport type InternalApiKeyCreateCrudResponse = InternalApiKeysCrud[\"Admin\"][\"Read\"] & {\n publishable_client_key?: string,\n secret_server_key?: string,\n super_secret_admin_key?: string,\n};\n\nexport class StackAdminInterface extends StackServerInterface {\n constructor(public readonly options: AdminAuthApplicationOptions) {\n super(options);\n }\n\n public async sendAdminRequest(path: string, options: RequestInit, session: InternalSession | null, requestType: \"admin\" = \"admin\") {\n return await this.sendServerRequest(\n path,\n {\n ...options,\n headers: {\n \"x-stack-super-secret-admin-key\": \"superSecretAdminKey\" in this.options ? this.options.superSecretAdminKey : \"\",\n ...options.headers,\n },\n },\n session,\n requestType,\n );\n }\n\n protected async sendAdminRequestAndCatchKnownError<E extends typeof KnownErrors[keyof KnownErrors]>(\n path: string,\n requestOptions: RequestInit,\n tokenStoreOrNull: InternalSession | null,\n errorsToCatch: readonly E[],\n ): Promise<Result<\n Response & {\n usedTokens: {\n accessToken: AccessToken,\n refreshToken: RefreshToken | null,\n } | null,\n },\n InstanceType<E>\n >> {\n try {\n return Result.ok(await this.sendAdminRequest(path, requestOptions, tokenStoreOrNull));\n } catch (e) {\n for (const errorType of errorsToCatch) {\n if (errorType.isInstance(e)) {\n return Result.error(e as InstanceType<E>);\n }\n }\n throw e;\n }\n }\n\n async getProject(): Promise<ProjectsCrud[\"Admin\"][\"Read\"]> {\n const response = await this.sendAdminRequest(\n \"/internal/projects/current\",\n {\n method: \"GET\",\n },\n null,\n );\n return await response.json();\n }\n\n async updateProject(update: ProjectsCrud[\"Admin\"][\"Update\"]): Promise<ProjectsCrud[\"Admin\"][\"Read\"]> {\n const response = await this.sendAdminRequest(\n \"/internal/projects/current\",\n {\n method: \"PATCH\",\n headers: {\n \"content-type\": \"application/json\",\n },\n body: JSON.stringify(update),\n },\n null,\n );\n return await response.json();\n }\n\n async createInternalApiKey(\n options: InternalApiKeyCreateCrudRequest,\n ): Promise<InternalApiKeyCreateCrudResponse> {\n const response = await this.sendAdminRequest(\n \"/internal/api-keys\",\n {\n method: \"POST\",\n headers: {\n \"content-type\": \"application/json\",\n },\n body: JSON.stringify(options),\n },\n null,\n );\n return await response.json();\n }\n\n async listInternalApiKeys(): Promise<InternalApiKeysCrud[\"Admin\"][\"Read\"][]> {\n const response = await this.sendAdminRequest(\"/internal/api-keys\", {}, null);\n const result = await response.json() as InternalApiKeysCrud[\"Admin\"][\"List\"];\n return result.items;\n }\n\n async revokeInternalApiKeyById(id: string) {\n await this.sendAdminRequest(\n `/internal/api-keys/${id}`, {\n method: \"PATCH\",\n headers: {\n \"content-type\": \"application/json\",\n },\n body: JSON.stringify({\n revoked: true,\n }),\n },\n null,\n );\n }\n\n async getInternalApiKey(id: string, session: InternalSession): Promise<InternalApiKeysCrud[\"Admin\"][\"Read\"]> {\n const response = await this.sendAdminRequest(`/internal/api-keys/${id}`, {}, session);\n return await response.json();\n }\n\n async listInternalEmailTemplates(): Promise<{ id: string, display_name: string, theme_id?: string, tsx_source: string }[]> {\n const response = await this.sendAdminRequest(`/internal/email-templates`, {}, null);\n const result = await response.json() as { templates: { id: string, display_name: string, theme_id?: string, tsx_source: string }[] };\n return result.templates;\n }\n\n async listInternalEmailDrafts(): Promise<{ id: string, display_name: string, theme_id?: string | undefined | false, tsx_source: string, sent_at_millis?: number | null }[]> {\n const response = await this.sendAdminRequest(`/internal/email-drafts`, {}, null);\n const result = await response.json() as { drafts: { id: string, display_name: string, theme_id?: string | undefined | false, tsx_source: string, sent_at_millis?: number | null }[] };\n return result.drafts;\n }\n\n async createEmailDraft(options: { display_name?: string, theme_id?: string | false, tsx_source?: string }): Promise<{ id: string }> {\n const response = await this.sendAdminRequest(\n `/internal/email-drafts`,\n {\n method: \"POST\",\n headers: {\n \"content-type\": \"application/json\",\n },\n body: JSON.stringify(options),\n },\n null,\n );\n return await response.json();\n }\n\n async updateEmailDraft(id: string, data: { display_name?: string, theme_id?: string | null | false, tsx_source?: string, sent_at_millis?: number | null }): Promise<void> {\n await this.sendAdminRequest(\n `/internal/email-drafts/${id}`,\n {\n method: \"PATCH\",\n headers: {\n \"content-type\": \"application/json\",\n },\n body: JSON.stringify(data),\n },\n null,\n );\n }\n\n async listEmailThemes(): Promise<{ id: string, display_name: string }[]> {\n const response = await this.sendAdminRequest(`/internal/email-themes`, {}, null);\n const result = await response.json() as { themes: { id: string, display_name: string }[] };\n return result.themes;\n }\n\n\n // Team permission definitions methods\n async listTeamPermissionDefinitions(): Promise<TeamPermissionDefinitionsCrud['Admin']['Read'][]> {\n const response = await this.sendAdminRequest(`/team-permission-definitions`, {}, null);\n const result = await response.json() as TeamPermissionDefinitionsCrud['Admin']['List'];\n return result.items;\n }\n\n async createTeamPermissionDefinition(data: TeamPermissionDefinitionsCrud['Admin']['Create']): Promise<TeamPermissionDefinitionsCrud['Admin']['Read']> {\n const response = await this.sendAdminRequest(\n \"/team-permission-definitions\",\n {\n method: \"POST\",\n headers: {\n \"content-type\": \"application/json\",\n },\n body: JSON.stringify(data),\n },\n null,\n );\n return await response.json();\n }\n\n async updateTeamPermissionDefinition(permissionId: string, data: TeamPermissionDefinitionsCrud['Admin']['Update']): Promise<TeamPermissionDefinitionsCrud['Admin']['Read']> {\n const response = await this.sendAdminRequest(\n `/team-permission-definitions/${permissionId}`,\n {\n method: \"PATCH\",\n headers: {\n \"content-type\": \"application/json\",\n },\n body: JSON.stringify(data),\n },\n null,\n );\n return await response.json();\n }\n\n async deleteTeamPermissionDefinition(permissionId: string): Promise<void> {\n await this.sendAdminRequest(\n `/team-permission-definitions/${permissionId}`,\n { method: \"DELETE\" },\n null,\n );\n }\n\n async listProjectPermissionDefinitions(): Promise<ProjectPermissionDefinitionsCrud['Admin']['Read'][]> {\n const response = await this.sendAdminRequest(`/project-permission-definitions`, {}, null);\n const result = await response.json() as ProjectPermissionDefinitionsCrud['Admin']['List'];\n return result.items;\n }\n\n async createProjectPermissionDefinition(data: ProjectPermissionDefinitionsCrud['Admin']['Create']): Promise<ProjectPermissionDefinitionsCrud['Admin']['Read']> {\n const response = await this.sendAdminRequest(\n \"/project-permission-definitions\",\n {\n method: \"POST\",\n headers: {\n \"content-type\": \"application/json\",\n },\n body: JSON.stringify(data),\n },\n null,\n );\n return await response.json();\n }\n\n async updateProjectPermissionDefinition(permissionId: string, data: ProjectPermissionDefinitionsCrud['Admin']['Update']): Promise<ProjectPermissionDefinitionsCrud['Admin']['Read']> {\n const response = await this.sendAdminRequest(\n `/project-permission-definitions/${permissionId}`,\n {\n method: \"PATCH\",\n headers: {\n \"content-type\": \"application/json\",\n },\n body: JSON.stringify(data),\n },\n null,\n );\n return await response.json();\n }\n\n async deleteProjectPermissionDefinition(permissionId: string): Promise<void> {\n await this.sendAdminRequest(\n `/project-permission-definitions/${permissionId}`,\n { method: \"DELETE\" },\n null,\n );\n }\n\n async getSvixToken(): Promise<SvixTokenCrud[\"Admin\"][\"Read\"]> {\n const response = await this.sendAdminRequest(\n \"/webhooks/svix-token\",\n {\n method: \"POST\",\n headers: {\n \"content-type\": \"application/json\",\n },\n body: JSON.stringify({}),\n },\n null,\n );\n return await response.json();\n }\n\n async deleteProject(): Promise<void> {\n await this.sendAdminRequest(\n \"/internal/projects/current\",\n {\n method: \"DELETE\",\n },\n null,\n );\n }\n\n async transferProject(session: InternalSession, newTeamId: string): Promise<void> {\n await this.sendAdminRequest(\n \"/internal/projects/transfer\",\n {\n method: \"POST\",\n headers: {\n \"content-type\": \"application/json\",\n },\n body: JSON.stringify({\n project_id: this.options.projectId,\n new_team_id: newTeamId,\n }),\n },\n session,\n );\n }\n\n async getMetrics(includeAnonymous: boolean = false): Promise<any> {\n const params = new URLSearchParams();\n if (includeAnonymous) {\n params.append('include_anonymous', 'true');\n }\n const queryString = params.toString();\n const response = await this.sendAdminRequest(\n `/internal/metrics${queryString ? `?${queryString}` : ''}`,\n {\n method: \"GET\",\n },\n null,\n );\n return await response.json();\n }\n\n async sendTestEmail(data: {\n recipient_email: string,\n email_config: {\n host: string,\n port: number,\n username: string,\n password: string,\n sender_email: string,\n sender_name: string,\n },\n }): Promise<{ success: boolean, error_message?: string }> {\n const response = await this.sendAdminRequest(`/internal/send-test-email`, {\n method: \"POST\",\n headers: {\n \"content-type\": \"application/json\",\n },\n body: JSON.stringify(data),\n }, null);\n return await response.json();\n }\n\n async listSentEmails(): Promise<InternalEmailsCrud[\"Admin\"][\"List\"]> {\n const response = await this.sendAdminRequest(\"/internal/emails\", {\n method: \"GET\",\n }, null);\n return await response.json();\n }\n\n async sendSignInInvitationEmail(\n email: string,\n callbackUrl: string,\n ): Promise<void> {\n await this.sendAdminRequest(\n \"/internal/send-sign-in-invitation\",\n {\n method: \"POST\",\n headers: {\n \"Content-Type\": \"application/json\"\n },\n body: JSON.stringify({\n email,\n callback_url: callbackUrl,\n }),\n },\n null,\n );\n }\n\n\n async sendChatMessage(\n threadId: string,\n contextType: \"email-theme\" | \"email-template\" | \"email-draft\",\n messages: Array<{ role: string, content: any }>,\n abortSignal?: AbortSignal,\n ): Promise<{ content: ChatContent }> {\n const response = await this.sendAdminRequest(\n `/internal/ai-chat/${threadId}`,\n {\n method: \"POST\",\n headers: {\n \"content-type\": \"application/json\",\n },\n body: JSON.stringify({ context_type: contextType, messages }),\n signal: abortSignal,\n },\n null,\n );\n return await response.json();\n }\n\n async saveChatMessage(threadId: string, message: any): Promise<void> {\n await this.sendAdminRequest(\n `/internal/ai-chat/${threadId}`,\n {\n method: \"PATCH\",\n headers: {\n \"content-type\": \"application/json\",\n },\n body: JSON.stringify({ message }),\n },\n null,\n );\n }\n\n async listChatMessages(threadId: string): Promise<{ messages: Array<any> }> {\n const response = await this.sendAdminRequest(\n `/internal/ai-chat/${threadId}`,\n { method: \"GET\" },\n null,\n );\n return await response.json();\n }\n\n async renderEmailPreview(options: { themeId?: string | null | false, themeTsxSource?: string, templateId?: string, templateTsxSource?: string }): Promise<{ html: string }> {\n const response = await this.sendAdminRequest(`/emails/render-email`, {\n method: \"POST\",\n headers: {\n \"content-type\": \"application/json\",\n },\n body: JSON.stringify({\n theme_id: options.themeId,\n theme_tsx_source: options.themeTsxSource,\n template_id: options.templateId,\n template_tsx_source: options.templateTsxSource,\n }),\n }, null);\n return await response.json();\n }\n\n async createEmailTheme(displayName: string): Promise<{ id: string }> {\n const response = await this.sendAdminRequest(\n `/internal/email-themes`,\n {\n method: \"POST\",\n headers: {\n \"content-type\": \"application/json\",\n },\n body: JSON.stringify({\n display_name: displayName,\n }),\n },\n null,\n );\n return await response.json();\n }\n\n async getEmailTheme(id: string): Promise<{ display_name: string, tsx_source: string }> {\n const response = await this.sendAdminRequest(\n `/internal/email-themes/${id}`,\n { method: \"GET\" },\n null,\n );\n return await response.json();\n }\n\n async updateEmailTheme(id: string, tsxSource: string): Promise<void> {\n await this.sendAdminRequest(\n `/internal/email-themes/${id}`,\n {\n method: \"PATCH\",\n headers: {\n \"content-type\": \"application/json\",\n },\n body: JSON.stringify({\n tsx_source: tsxSource,\n }),\n },\n null,\n );\n }\n\n async updateEmailTemplate(id: string, tsxSource: string, themeId: string | null | false): Promise<{ rendered_html: string }> {\n const response = await this.sendAdminRequest(\n `/internal/email-templates/${id}`,\n {\n method: \"PATCH\",\n headers: {\n \"content-type\": \"application/json\",\n },\n body: JSON.stringify({ tsx_source: tsxSource, theme_id: themeId }),\n },\n null,\n );\n return await response.json();\n }\n\n async getConfig(): Promise<ConfigCrud[\"Admin\"][\"Read\"]> {\n const response = await this.sendAdminRequest(\n `/internal/config`,\n { method: \"GET\" },\n null,\n );\n return await response.json();\n }\n\n async updateConfig(data: { configOverride: any }): Promise<ConfigOverrideCrud[\"Admin\"][\"Read\"]> {\n const response = await this.sendAdminRequest(\n `/internal/config/override`,\n {\n method: \"PATCH\",\n headers: {\n \"content-type\": \"application/json\",\n },\n body: JSON.stringify({ config_override_string: JSON.stringify(data.configOverride) }),\n },\n null,\n );\n return await response.json();\n }\n async createEmailTemplate(displayName: string): Promise<{ id: string }> {\n const response = await this.sendAdminRequest(\n `/internal/email-templates`,\n {\n method: \"POST\",\n headers: {\n \"content-type\": \"application/json\",\n },\n body: JSON.stringify({\n display_name: displayName,\n }),\n },\n null,\n );\n return await response.json();\n }\n\n async setupPayments(): Promise<{ url: string }> {\n const response = await this.sendAdminRequest(\n \"/internal/payments/setup\",\n {\n method: \"POST\",\n headers: {\n \"content-type\": \"application/json\",\n },\n body: JSON.stringify({}),\n },\n null,\n );\n return await response.json();\n }\n\n async getStripeAccountInfo(): Promise<null | { account_id: string, charges_enabled: boolean, details_submitted: boolean, payouts_enabled: boolean }> {\n const response = await this.sendAdminRequestAndCatchKnownError(\n \"/internal/payments/stripe/account-info\",\n {},\n null,\n [KnownErrors.StripeAccountInfoNotFound],\n );\n if (response.status === \"error\") {\n return null;\n }\n return await response.data.json();\n }\n\n async createStripeWidgetAccountSession(): Promise<{ client_secret: string }> {\n const response = await this.sendAdminRequest(\n \"/internal/payments/stripe-widgets/account-session\",\n {\n method: \"POST\",\n headers: {\n \"content-type\": \"application/json\",\n },\n body: JSON.stringify({}),\n },\n null,\n );\n return await response.json();\n }\n\n async listTransactions(params?: { cursor?: string, limit?: number, type?: 'subscription' | 'one_time' | 'item_quantity_change', customerType?: 'user' | 'team' | 'custom' }): Promise<{ transactions: AdminTransaction[], nextCursor: string | null }> {\n const qs = new URLSearchParams();\n if (params?.cursor) qs.set('cursor', params.cursor);\n if (typeof params?.limit === 'number') qs.set('limit', String(params.limit));\n if (params?.type) qs.set('type', params.type);\n if (params?.customerType) qs.set('customer_type', params.customerType);\n const response = await this.sendAdminRequest(\n `/internal/payments/transactions${qs.size ? `?${qs.toString()}` : ''}`,\n { method: 'GET' },\n null,\n );\n const json = await response.json() as { transactions: AdminTransaction[], next_cursor: string | null };\n return { transactions: json.transactions, nextCursor: json.next_cursor };\n }\n\n async testModePurchase(options: { price_id: string, full_code: string, quantity?: number }): Promise<void> {\n await this.sendAdminRequest(\n \"/internal/payments/test-mode-purchase-session\",\n {\n method: \"POST\",\n headers: { \"content-type\": \"application/json\" },\n body: JSON.stringify(options),\n },\n null,\n );\n }\n\n}\n"],"mappings":"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","names":[]}
|
|
@@ -10,6 +10,7 @@ import { ContactChannelsCrud } from './crud/contact-channels.mjs';
|
|
|
10
10
|
import { CurrentUserCrud } from './crud/current-user.mjs';
|
|
11
11
|
import { ItemCrud } from './crud/items.mjs';
|
|
12
12
|
import { NotificationPreferenceCrud } from './crud/notification-preferences.mjs';
|
|
13
|
+
import { OAuthProviderCrud } from './crud/oauth-providers.mjs';
|
|
13
14
|
import { UserApiKeysCrud, TeamApiKeysCrud, userApiKeysCreateInputSchema, userApiKeysCreateOutputSchema, teamApiKeysCreateInputSchema, teamApiKeysCreateOutputSchema } from './crud/project-api-keys.mjs';
|
|
14
15
|
import { ProjectPermissionsCrud } from './crud/project-permissions.mjs';
|
|
15
16
|
import { ClientProjectsCrud, AdminUserProjectsCrud } from './crud/projects.mjs';
|
|
@@ -264,29 +265,12 @@ declare class StackClientInterface {
|
|
|
264
265
|
checkProjectApiKey(type: "user" | "team", apiKey: string, session: InternalSession | null, requestType: "client" | "server" | "admin"): Promise<UserApiKeysCrud['Client']['Read'] | TeamApiKeysCrud['Client']['Read'] | null>;
|
|
265
266
|
listNotificationCategories(session: InternalSession): Promise<NotificationPreferenceCrud['Client']['Read'][]>;
|
|
266
267
|
setNotificationsEnabled(notificationCategoryId: string, enabled: boolean, session: InternalSession): Promise<void>;
|
|
267
|
-
getOAuthProvider(userId: string, providerId: string, session: InternalSession
|
|
268
|
-
|
|
269
|
-
type: string;
|
|
270
|
-
user_id: string;
|
|
271
|
-
account_id?: string;
|
|
272
|
-
email: string;
|
|
273
|
-
allow_sign_in: boolean;
|
|
274
|
-
allow_connected_accounts: boolean;
|
|
275
|
-
}>;
|
|
268
|
+
getOAuthProvider(userId: string, providerId: string, session: InternalSession): Promise<OAuthProviderCrud['Client']['Read']>;
|
|
269
|
+
updateOAuthProvider(userId: string, providerId: string, data: OAuthProviderCrud['Client']['Update'], session: InternalSession): Promise<OAuthProviderCrud['Client']['Read']>;
|
|
276
270
|
listOAuthProviders(options: {
|
|
277
271
|
user_id?: string | undefined;
|
|
278
|
-
} | undefined, session: InternalSession
|
|
279
|
-
|
|
280
|
-
type: string;
|
|
281
|
-
user_id: string;
|
|
282
|
-
account_id?: string;
|
|
283
|
-
email: string;
|
|
284
|
-
allow_sign_in: boolean;
|
|
285
|
-
allow_connected_accounts: boolean;
|
|
286
|
-
}[]>;
|
|
287
|
-
deleteOAuthProvider(userId: string, providerId: string, session: InternalSession | null, requestType?: "client" | "server" | "admin"): Promise<{
|
|
288
|
-
success: boolean;
|
|
289
|
-
}>;
|
|
272
|
+
} | undefined, session: InternalSession): Promise<OAuthProviderCrud['Client']['Read'][]>;
|
|
273
|
+
deleteOAuthProvider(userId: string, providerId: string, session: InternalSession): Promise<void>;
|
|
290
274
|
getItem(options: ({
|
|
291
275
|
itemId: string;
|
|
292
276
|
userId: string;
|
|
@@ -10,6 +10,7 @@ import { ContactChannelsCrud } from './crud/contact-channels.js';
|
|
|
10
10
|
import { CurrentUserCrud } from './crud/current-user.js';
|
|
11
11
|
import { ItemCrud } from './crud/items.js';
|
|
12
12
|
import { NotificationPreferenceCrud } from './crud/notification-preferences.js';
|
|
13
|
+
import { OAuthProviderCrud } from './crud/oauth-providers.js';
|
|
13
14
|
import { UserApiKeysCrud, TeamApiKeysCrud, userApiKeysCreateInputSchema, userApiKeysCreateOutputSchema, teamApiKeysCreateInputSchema, teamApiKeysCreateOutputSchema } from './crud/project-api-keys.js';
|
|
14
15
|
import { ProjectPermissionsCrud } from './crud/project-permissions.js';
|
|
15
16
|
import { ClientProjectsCrud, AdminUserProjectsCrud } from './crud/projects.js';
|
|
@@ -264,29 +265,12 @@ declare class StackClientInterface {
|
|
|
264
265
|
checkProjectApiKey(type: "user" | "team", apiKey: string, session: InternalSession | null, requestType: "client" | "server" | "admin"): Promise<UserApiKeysCrud['Client']['Read'] | TeamApiKeysCrud['Client']['Read'] | null>;
|
|
265
266
|
listNotificationCategories(session: InternalSession): Promise<NotificationPreferenceCrud['Client']['Read'][]>;
|
|
266
267
|
setNotificationsEnabled(notificationCategoryId: string, enabled: boolean, session: InternalSession): Promise<void>;
|
|
267
|
-
getOAuthProvider(userId: string, providerId: string, session: InternalSession
|
|
268
|
-
|
|
269
|
-
type: string;
|
|
270
|
-
user_id: string;
|
|
271
|
-
account_id?: string;
|
|
272
|
-
email: string;
|
|
273
|
-
allow_sign_in: boolean;
|
|
274
|
-
allow_connected_accounts: boolean;
|
|
275
|
-
}>;
|
|
268
|
+
getOAuthProvider(userId: string, providerId: string, session: InternalSession): Promise<OAuthProviderCrud['Client']['Read']>;
|
|
269
|
+
updateOAuthProvider(userId: string, providerId: string, data: OAuthProviderCrud['Client']['Update'], session: InternalSession): Promise<OAuthProviderCrud['Client']['Read']>;
|
|
276
270
|
listOAuthProviders(options: {
|
|
277
271
|
user_id?: string | undefined;
|
|
278
|
-
} | undefined, session: InternalSession
|
|
279
|
-
|
|
280
|
-
type: string;
|
|
281
|
-
user_id: string;
|
|
282
|
-
account_id?: string;
|
|
283
|
-
email: string;
|
|
284
|
-
allow_sign_in: boolean;
|
|
285
|
-
allow_connected_accounts: boolean;
|
|
286
|
-
}[]>;
|
|
287
|
-
deleteOAuthProvider(userId: string, providerId: string, session: InternalSession | null, requestType?: "client" | "server" | "admin"): Promise<{
|
|
288
|
-
success: boolean;
|
|
289
|
-
}>;
|
|
272
|
+
} | undefined, session: InternalSession): Promise<OAuthProviderCrud['Client']['Read'][]>;
|
|
273
|
+
deleteOAuthProvider(userId: string, providerId: string, session: InternalSession): Promise<void>;
|
|
290
274
|
getItem(options: ({
|
|
291
275
|
itemId: string;
|
|
292
276
|
userId: string;
|