@stackframe/stack-shared 2.8.21 → 2.8.25
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 +121 -25
- package/dist/config/schema.d.ts +121 -25
- package/dist/config/schema.js +10 -4
- package/dist/config/schema.js.map +1 -1
- package/dist/esm/config/schema.js +10 -4
- package/dist/esm/config/schema.js.map +1 -1
- package/dist/esm/helpers/emails.js +79 -0
- package/dist/esm/helpers/emails.js.map +1 -0
- package/dist/esm/interface/admin-interface.js +104 -3
- package/dist/esm/interface/admin-interface.js.map +1 -1
- package/dist/esm/interface/client-interface.js +41 -0
- package/dist/esm/interface/client-interface.js.map +1 -1
- package/dist/esm/interface/crud/{oauth.js → connected-accounts.js} +2 -2
- package/dist/esm/interface/crud/connected-accounts.js.map +1 -0
- package/dist/esm/interface/crud/oauth-providers.js +87 -0
- package/dist/esm/interface/crud/oauth-providers.js.map +1 -0
- package/dist/esm/interface/crud/projects.js +7 -5
- package/dist/esm/interface/crud/projects.js.map +1 -1
- package/dist/esm/interface/server-interface.js +51 -0
- package/dist/esm/interface/server-interface.js.map +1 -1
- package/dist/esm/known-errors.js +23 -8
- package/dist/esm/known-errors.js.map +1 -1
- package/dist/esm/schema-fields.js +32 -1
- package/dist/esm/schema-fields.js.map +1 -1
- package/dist/esm/utils/esbuild.js +66 -47
- package/dist/esm/utils/esbuild.js.map +1 -1
- package/dist/esm/utils/oauth.js +1 -1
- package/dist/esm/utils/oauth.js.map +1 -1
- package/dist/esm/utils/react.js +26 -4
- package/dist/esm/utils/react.js.map +1 -1
- package/dist/helpers/emails.d.mts +24 -0
- package/dist/helpers/emails.d.ts +24 -0
- package/dist/helpers/emails.js +108 -0
- package/dist/helpers/emails.js.map +1 -0
- package/dist/index.d.mts +1 -1
- package/dist/index.d.ts +1 -1
- package/dist/interface/admin-interface.d.mts +50 -3
- package/dist/interface/admin-interface.d.ts +50 -3
- package/dist/interface/admin-interface.js +104 -3
- package/dist/interface/admin-interface.js.map +1 -1
- package/dist/interface/client-interface.d.mts +24 -1
- package/dist/interface/client-interface.d.ts +24 -1
- package/dist/interface/client-interface.js +41 -0
- package/dist/interface/client-interface.js.map +1 -1
- package/dist/interface/crud/{oauth.js → connected-accounts.js} +5 -5
- package/dist/interface/crud/connected-accounts.js.map +1 -0
- package/dist/interface/crud/oauth-providers.d.mts +172 -0
- package/dist/interface/crud/oauth-providers.d.ts +172 -0
- package/dist/interface/crud/oauth-providers.js +107 -0
- package/dist/interface/crud/oauth-providers.js.map +1 -0
- package/dist/interface/crud/project-api-keys.d.mts +2 -2
- package/dist/interface/crud/project-api-keys.d.ts +2 -2
- package/dist/interface/crud/projects.d.mts +22 -19
- package/dist/interface/crud/projects.d.ts +22 -19
- package/dist/interface/crud/projects.js +5 -3
- package/dist/interface/crud/projects.js.map +1 -1
- package/dist/interface/server-interface.d.mts +45 -1
- package/dist/interface/server-interface.d.ts +45 -1
- package/dist/interface/server-interface.js +51 -0
- package/dist/interface/server-interface.js.map +1 -1
- package/dist/known-errors.d.mts +5 -2
- package/dist/known-errors.d.ts +5 -2
- package/dist/known-errors.js +23 -8
- package/dist/known-errors.js.map +1 -1
- package/dist/schema-fields.d.mts +21 -4
- package/dist/schema-fields.d.ts +21 -4
- package/dist/schema-fields.js +40 -1
- package/dist/schema-fields.js.map +1 -1
- package/dist/utils/esbuild.d.mts +3 -0
- package/dist/utils/esbuild.d.ts +3 -0
- package/dist/utils/esbuild.js +66 -47
- package/dist/utils/esbuild.js.map +1 -1
- package/dist/utils/oauth.d.mts +2 -2
- package/dist/utils/oauth.d.ts +2 -2
- package/dist/utils/oauth.js +1 -1
- package/dist/utils/oauth.js.map +1 -1
- package/dist/utils/react.d.mts +21 -4
- package/dist/utils/react.d.ts +21 -4
- package/dist/utils/react.js +28 -5
- package/dist/utils/react.js.map +1 -1
- package/dist/utils/types.d.mts +3 -2
- package/dist/utils/types.d.ts +3 -2
- package/dist/utils/types.js.map +1 -1
- package/package.json +1 -1
- package/dist/esm/interface/crud/oauth.js.map +0 -1
- package/dist/interface/crud/oauth.js.map +0 -1
- /package/dist/interface/crud/{oauth.d.mts → connected-accounts.d.mts} +0 -0
- /package/dist/interface/crud/{oauth.d.ts → connected-accounts.d.ts} +0 -0
|
@@ -0,0 +1,24 @@
|
|
|
1
|
+
declare const previewTemplateSource = "\n export function EmailTemplate() {\n return (\n <div>\n <h2 className=\"mb-4 text-2xl font-bold\">\n Header text\n </h2>\n <p className=\"mb-4\">\n Body text content with some additional information.\n </p>\n </div>\n );\n }\n";
|
|
2
|
+
declare const LightEmailTheme = "import { Html, Tailwind, Body } from '@react-email/components';\nexport function EmailTheme({ children }: { children: React.ReactNode }) {\n return (\n <Html>\n <Tailwind>\n <Body>\n <div className=\"bg-white text-slate-800 p-4 rounded-lg max-w-[600px] mx-auto leading-relaxed\">\n {children}\n </div>\n </Body>\n </Tailwind>\n </Html>\n );\n}";
|
|
3
|
+
declare const DEFAULT_EMAIL_THEME_ID = "1df07ae6-abf3-4a40-83a5-a1a2cbe336ac";
|
|
4
|
+
declare const DEFAULT_EMAIL_THEMES: {
|
|
5
|
+
"1df07ae6-abf3-4a40-83a5-a1a2cbe336ac": {
|
|
6
|
+
displayName: string;
|
|
7
|
+
tsxSource: string;
|
|
8
|
+
};
|
|
9
|
+
"a0172b5d-cff0-463b-83bb-85124697373a": {
|
|
10
|
+
displayName: string;
|
|
11
|
+
tsxSource: string;
|
|
12
|
+
};
|
|
13
|
+
};
|
|
14
|
+
declare const DEFAULT_EMAIL_TEMPLATES: {
|
|
15
|
+
"e7d009ce-8d47-4528-b245-5bf119f2ffa3": {
|
|
16
|
+
displayName: string;
|
|
17
|
+
description: string;
|
|
18
|
+
variables: string[];
|
|
19
|
+
subject: string;
|
|
20
|
+
tsxSource: string;
|
|
21
|
+
};
|
|
22
|
+
};
|
|
23
|
+
|
|
24
|
+
export { DEFAULT_EMAIL_TEMPLATES, DEFAULT_EMAIL_THEMES, DEFAULT_EMAIL_THEME_ID, LightEmailTheme, previewTemplateSource };
|
|
@@ -0,0 +1,108 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var __defProp = Object.defineProperty;
|
|
3
|
+
var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
|
|
4
|
+
var __getOwnPropNames = Object.getOwnPropertyNames;
|
|
5
|
+
var __hasOwnProp = Object.prototype.hasOwnProperty;
|
|
6
|
+
var __export = (target, all) => {
|
|
7
|
+
for (var name in all)
|
|
8
|
+
__defProp(target, name, { get: all[name], enumerable: true });
|
|
9
|
+
};
|
|
10
|
+
var __copyProps = (to, from, except, desc) => {
|
|
11
|
+
if (from && typeof from === "object" || typeof from === "function") {
|
|
12
|
+
for (let key of __getOwnPropNames(from))
|
|
13
|
+
if (!__hasOwnProp.call(to, key) && key !== except)
|
|
14
|
+
__defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable });
|
|
15
|
+
}
|
|
16
|
+
return to;
|
|
17
|
+
};
|
|
18
|
+
var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod);
|
|
19
|
+
|
|
20
|
+
// src/helpers/emails.ts
|
|
21
|
+
var emails_exports = {};
|
|
22
|
+
__export(emails_exports, {
|
|
23
|
+
DEFAULT_EMAIL_TEMPLATES: () => DEFAULT_EMAIL_TEMPLATES,
|
|
24
|
+
DEFAULT_EMAIL_THEMES: () => DEFAULT_EMAIL_THEMES,
|
|
25
|
+
DEFAULT_EMAIL_THEME_ID: () => DEFAULT_EMAIL_THEME_ID,
|
|
26
|
+
LightEmailTheme: () => LightEmailTheme,
|
|
27
|
+
previewTemplateSource: () => previewTemplateSource
|
|
28
|
+
});
|
|
29
|
+
module.exports = __toCommonJS(emails_exports);
|
|
30
|
+
var previewTemplateSource = `
|
|
31
|
+
export function EmailTemplate() {
|
|
32
|
+
return (
|
|
33
|
+
<div>
|
|
34
|
+
<h2 className="mb-4 text-2xl font-bold">
|
|
35
|
+
Header text
|
|
36
|
+
</h2>
|
|
37
|
+
<p className="mb-4">
|
|
38
|
+
Body text content with some additional information.
|
|
39
|
+
</p>
|
|
40
|
+
</div>
|
|
41
|
+
);
|
|
42
|
+
}
|
|
43
|
+
`;
|
|
44
|
+
var LightEmailTheme = `import { Html, Tailwind, Body } from '@react-email/components';
|
|
45
|
+
export function EmailTheme({ children }: { children: React.ReactNode }) {
|
|
46
|
+
return (
|
|
47
|
+
<Html>
|
|
48
|
+
<Tailwind>
|
|
49
|
+
<Body>
|
|
50
|
+
<div className="bg-white text-slate-800 p-4 rounded-lg max-w-[600px] mx-auto leading-relaxed">
|
|
51
|
+
{children}
|
|
52
|
+
</div>
|
|
53
|
+
</Body>
|
|
54
|
+
</Tailwind>
|
|
55
|
+
</Html>
|
|
56
|
+
);
|
|
57
|
+
}`;
|
|
58
|
+
var DarkEmailTheme = `import { Html, Tailwind, Body } from '@react-email/components';
|
|
59
|
+
export function EmailTheme({ children }: { children: React.ReactNode }) {
|
|
60
|
+
return (
|
|
61
|
+
<Html>
|
|
62
|
+
<Tailwind>
|
|
63
|
+
<Body>
|
|
64
|
+
<div className="bg-slate-900 text-slate-100 p-4 rounded-lg max-w-[600px] mx-auto leading-relaxed">
|
|
65
|
+
{children}
|
|
66
|
+
</div>
|
|
67
|
+
</Body>
|
|
68
|
+
</Tailwind>
|
|
69
|
+
</Html>
|
|
70
|
+
);
|
|
71
|
+
}`;
|
|
72
|
+
var DEFAULT_EMAIL_THEME_ID = "1df07ae6-abf3-4a40-83a5-a1a2cbe336ac";
|
|
73
|
+
var DEFAULT_EMAIL_THEMES = {
|
|
74
|
+
[DEFAULT_EMAIL_THEME_ID]: {
|
|
75
|
+
displayName: "Default Light",
|
|
76
|
+
tsxSource: LightEmailTheme
|
|
77
|
+
},
|
|
78
|
+
"a0172b5d-cff0-463b-83bb-85124697373a": {
|
|
79
|
+
displayName: "Default Dark",
|
|
80
|
+
tsxSource: DarkEmailTheme
|
|
81
|
+
}
|
|
82
|
+
};
|
|
83
|
+
var DEFAULT_EMAIL_TEMPLATES = {
|
|
84
|
+
"e7d009ce-8d47-4528-b245-5bf119f2ffa3": {
|
|
85
|
+
displayName: "Email Verification",
|
|
86
|
+
description: "Will be sent to the user when they sign-up with email/password",
|
|
87
|
+
variables: ["projectDisplayName"],
|
|
88
|
+
subject: "Welcome to {{ projectDisplayName }}",
|
|
89
|
+
tsxSource: "export function EmailTemplate({ projectDisplayName }) {\n return <div>Email Verification for { projectDisplayName }</div>; \n}"
|
|
90
|
+
}
|
|
91
|
+
// "a70fb3a4-56c1-4e42-af25-49d25603abd0": {
|
|
92
|
+
// },
|
|
93
|
+
// "822687fe-8d0a-4467-a0d1-416b6e639478": {
|
|
94
|
+
// },
|
|
95
|
+
// "066dd73c-36da-4fd0-b6d6-ebf87683f8bc": {
|
|
96
|
+
// },
|
|
97
|
+
// "e84de395-2076-4831-9c19-8e9a96a868e4": {
|
|
98
|
+
// },
|
|
99
|
+
};
|
|
100
|
+
// Annotate the CommonJS export names for ESM import in node:
|
|
101
|
+
0 && (module.exports = {
|
|
102
|
+
DEFAULT_EMAIL_TEMPLATES,
|
|
103
|
+
DEFAULT_EMAIL_THEMES,
|
|
104
|
+
DEFAULT_EMAIL_THEME_ID,
|
|
105
|
+
LightEmailTheme,
|
|
106
|
+
previewTemplateSource
|
|
107
|
+
});
|
|
108
|
+
//# sourceMappingURL=emails.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../../src/helpers/emails.ts"],"sourcesContent":["export const previewTemplateSource = `\n export function EmailTemplate() {\n return (\n <div>\n <h2 className=\"mb-4 text-2xl font-bold\">\n Header text\n </h2>\n <p className=\"mb-4\">\n Body text content with some additional information.\n </p>\n </div>\n );\n }\n`;\n\nexport const LightEmailTheme = `import { Html, Tailwind, Body } from '@react-email/components';\nexport function EmailTheme({ children }: { children: React.ReactNode }) {\n return (\n <Html>\n <Tailwind>\n <Body>\n <div className=\"bg-white text-slate-800 p-4 rounded-lg max-w-[600px] mx-auto leading-relaxed\">\n {children}\n </div>\n </Body>\n </Tailwind>\n </Html>\n );\n}`;\n\n\nconst DarkEmailTheme = `import { Html, Tailwind, Body } from '@react-email/components';\nexport function EmailTheme({ children }: { children: React.ReactNode }) {\n return (\n <Html>\n <Tailwind>\n <Body>\n <div className=\"bg-slate-900 text-slate-100 p-4 rounded-lg max-w-[600px] mx-auto leading-relaxed\">\n {children}\n </div>\n </Body>\n </Tailwind>\n </Html>\n );\n}`;\n\nexport const DEFAULT_EMAIL_THEME_ID = \"1df07ae6-abf3-4a40-83a5-a1a2cbe336ac\";\n\nexport const DEFAULT_EMAIL_THEMES = {\n [DEFAULT_EMAIL_THEME_ID]: {\n displayName: 'Default Light',\n tsxSource: LightEmailTheme,\n },\n \"a0172b5d-cff0-463b-83bb-85124697373a\": {\n displayName: 'Default Dark',\n tsxSource: DarkEmailTheme,\n },\n};\n\nexport const DEFAULT_EMAIL_TEMPLATES = {\n \"e7d009ce-8d47-4528-b245-5bf119f2ffa3\": {\n displayName: \"Email Verification\",\n description: \"Will be sent to the user when they sign-up with email/password\",\n variables: [\"projectDisplayName\"],\n subject: \"Welcome to {{ projectDisplayName }}\",\n tsxSource: \"export function EmailTemplate({ projectDisplayName }) {\\n return <div>Email Verification for { projectDisplayName }</div>; \\n}\",\n },\n // \"a70fb3a4-56c1-4e42-af25-49d25603abd0\": {\n\n // },\n // \"822687fe-8d0a-4467-a0d1-416b6e639478\": {\n\n // },\n // \"066dd73c-36da-4fd0-b6d6-ebf87683f8bc\": {\n\n // },\n // \"e84de395-2076-4831-9c19-8e9a96a868e4\": {\n\n // },\n};\n"],"mappings":";;;;;;;;;;;;;;;;;;;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAO,IAAM,wBAAwB;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAe9B,IAAM,kBAAkB;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAgB/B,IAAM,iBAAiB;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAehB,IAAM,yBAAyB;AAE/B,IAAM,uBAAuB;AAAA,EAClC,CAAC,sBAAsB,GAAG;AAAA,IACxB,aAAa;AAAA,IACb,WAAW;AAAA,EACb;AAAA,EACA,wCAAwC;AAAA,IACtC,aAAa;AAAA,IACb,WAAW;AAAA,EACb;AACF;AAEO,IAAM,0BAA0B;AAAA,EACrC,wCAAwC;AAAA,IACtC,aAAa;AAAA,IACb,aAAa;AAAA,IACb,WAAW,CAAC,oBAAoB;AAAA,IAChC,SAAS;AAAA,IACT,WAAW;AAAA,EACb;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAaF;","names":[]}
|
package/dist/index.d.mts
CHANGED
|
@@ -15,10 +15,10 @@ import './interface/crud/projects.mjs';
|
|
|
15
15
|
import './interface/crud/svix-token.mjs';
|
|
16
16
|
import './interface/crud/team-permissions.mjs';
|
|
17
17
|
import './utils/results.mjs';
|
|
18
|
+
import './interface/crud/connected-accounts.mjs';
|
|
18
19
|
import './interface/crud/contact-channels.mjs';
|
|
19
20
|
import './interface/crud/current-user.mjs';
|
|
20
21
|
import './interface/crud/notification-preferences.mjs';
|
|
21
|
-
import './interface/crud/oauth.mjs';
|
|
22
22
|
import './interface/crud/sessions.mjs';
|
|
23
23
|
import './interface/crud/team-invitation.mjs';
|
|
24
24
|
import './interface/crud/team-member-profiles.mjs';
|
package/dist/index.d.ts
CHANGED
|
@@ -15,10 +15,10 @@ import './interface/crud/projects.js';
|
|
|
15
15
|
import './interface/crud/svix-token.js';
|
|
16
16
|
import './interface/crud/team-permissions.js';
|
|
17
17
|
import './utils/results.js';
|
|
18
|
+
import './interface/crud/connected-accounts.js';
|
|
18
19
|
import './interface/crud/contact-channels.js';
|
|
19
20
|
import './interface/crud/current-user.js';
|
|
20
21
|
import './interface/crud/notification-preferences.js';
|
|
21
|
-
import './interface/crud/oauth.js';
|
|
22
22
|
import './interface/crud/sessions.js';
|
|
23
23
|
import './interface/crud/team-invitation.js';
|
|
24
24
|
import './interface/crud/team-member-profiles.js';
|
|
@@ -14,10 +14,10 @@ import '../crud.mjs';
|
|
|
14
14
|
import 'yup';
|
|
15
15
|
import '../utils/types.mjs';
|
|
16
16
|
import '../utils/results.mjs';
|
|
17
|
+
import './crud/connected-accounts.mjs';
|
|
17
18
|
import './crud/contact-channels.mjs';
|
|
18
19
|
import './crud/current-user.mjs';
|
|
19
20
|
import './crud/notification-preferences.mjs';
|
|
20
|
-
import './crud/oauth.mjs';
|
|
21
21
|
import './crud/sessions.mjs';
|
|
22
22
|
import './crud/team-invitation.mjs';
|
|
23
23
|
import './crud/team-member-profiles.mjs';
|
|
@@ -29,6 +29,17 @@ import '../utils/json.mjs';
|
|
|
29
29
|
import '@simplewebauthn/types';
|
|
30
30
|
import './crud/project-api-keys.mjs';
|
|
31
31
|
|
|
32
|
+
type ChatContent = Array<{
|
|
33
|
+
type: "text";
|
|
34
|
+
text: string;
|
|
35
|
+
} | {
|
|
36
|
+
type: "tool-call";
|
|
37
|
+
toolName: string;
|
|
38
|
+
toolCallId: string;
|
|
39
|
+
args: any;
|
|
40
|
+
argsText: string;
|
|
41
|
+
result: any;
|
|
42
|
+
}>;
|
|
32
43
|
type AdminAuthApplicationOptions = ServerAuthApplicationOptions & ({
|
|
33
44
|
superSecretAdminKey: string;
|
|
34
45
|
} | {
|
|
@@ -62,6 +73,16 @@ declare class StackAdminInterface extends StackServerInterface {
|
|
|
62
73
|
revokeInternalApiKeyById(id: string): Promise<void>;
|
|
63
74
|
getInternalApiKey(id: string, session: InternalSession): Promise<InternalApiKeysCrud["Admin"]["Read"]>;
|
|
64
75
|
listEmailTemplates(): Promise<EmailTemplateCrud['Admin']['Read'][]>;
|
|
76
|
+
listInternalEmailTemplatesNew(): Promise<{
|
|
77
|
+
id: string;
|
|
78
|
+
subject: string;
|
|
79
|
+
display_name: string;
|
|
80
|
+
tsx_source: string;
|
|
81
|
+
}[]>;
|
|
82
|
+
listEmailThemes(): Promise<{
|
|
83
|
+
id: string;
|
|
84
|
+
display_name: string;
|
|
85
|
+
}[]>;
|
|
65
86
|
updateEmailTemplate(type: EmailTemplateType, data: EmailTemplateCrud['Admin']['Update']): Promise<EmailTemplateCrud['Admin']['Read']>;
|
|
66
87
|
resetEmailTemplate(type: EmailTemplateType): Promise<void>;
|
|
67
88
|
listTeamPermissionDefinitions(): Promise<TeamPermissionDefinitionsCrud['Admin']['Read'][]>;
|
|
@@ -97,9 +118,35 @@ declare class StackAdminInterface extends StackServerInterface {
|
|
|
97
118
|
notification_category_name: string;
|
|
98
119
|
}): Promise<void>;
|
|
99
120
|
sendSignInInvitationEmail(email: string, callbackUrl: string): Promise<void>;
|
|
100
|
-
|
|
121
|
+
sendChatMessage(threadId: string, contextType: "email-theme" | "email-template", messages: Array<{
|
|
122
|
+
role: string;
|
|
123
|
+
content: any;
|
|
124
|
+
}>, abortSignal?: AbortSignal): Promise<{
|
|
125
|
+
content: ChatContent;
|
|
126
|
+
}>;
|
|
127
|
+
saveChatMessage(threadId: string, message: any): Promise<void>;
|
|
128
|
+
listChatMessages(threadId: string): Promise<{
|
|
129
|
+
messages: Array<any>;
|
|
130
|
+
}>;
|
|
131
|
+
renderEmailPreview(options: {
|
|
132
|
+
themeId?: string;
|
|
133
|
+
themeTsxSource?: string;
|
|
134
|
+
templateId?: string;
|
|
135
|
+
templateTsxSource?: string;
|
|
136
|
+
}): Promise<{
|
|
101
137
|
html: string;
|
|
102
138
|
}>;
|
|
139
|
+
createEmailTheme(displayName: string): Promise<{
|
|
140
|
+
id: string;
|
|
141
|
+
}>;
|
|
142
|
+
getEmailTheme(id: string): Promise<{
|
|
143
|
+
display_name: string;
|
|
144
|
+
tsx_source: string;
|
|
145
|
+
}>;
|
|
146
|
+
updateEmailTheme(id: string, tsxSource: string): Promise<void>;
|
|
147
|
+
updateNewEmailTemplate(id: string, tsxSource: string): Promise<{
|
|
148
|
+
rendered_html: string;
|
|
149
|
+
}>;
|
|
103
150
|
}
|
|
104
151
|
|
|
105
|
-
export { type AdminAuthApplicationOptions, type InternalApiKeyCreateCrudRequest, type InternalApiKeyCreateCrudResponse, StackAdminInterface };
|
|
152
|
+
export { type AdminAuthApplicationOptions, type ChatContent, type InternalApiKeyCreateCrudRequest, type InternalApiKeyCreateCrudResponse, StackAdminInterface };
|
|
@@ -14,10 +14,10 @@ import '../crud.js';
|
|
|
14
14
|
import 'yup';
|
|
15
15
|
import '../utils/types.js';
|
|
16
16
|
import '../utils/results.js';
|
|
17
|
+
import './crud/connected-accounts.js';
|
|
17
18
|
import './crud/contact-channels.js';
|
|
18
19
|
import './crud/current-user.js';
|
|
19
20
|
import './crud/notification-preferences.js';
|
|
20
|
-
import './crud/oauth.js';
|
|
21
21
|
import './crud/sessions.js';
|
|
22
22
|
import './crud/team-invitation.js';
|
|
23
23
|
import './crud/team-member-profiles.js';
|
|
@@ -29,6 +29,17 @@ import '../utils/json.js';
|
|
|
29
29
|
import '@simplewebauthn/types';
|
|
30
30
|
import './crud/project-api-keys.js';
|
|
31
31
|
|
|
32
|
+
type ChatContent = Array<{
|
|
33
|
+
type: "text";
|
|
34
|
+
text: string;
|
|
35
|
+
} | {
|
|
36
|
+
type: "tool-call";
|
|
37
|
+
toolName: string;
|
|
38
|
+
toolCallId: string;
|
|
39
|
+
args: any;
|
|
40
|
+
argsText: string;
|
|
41
|
+
result: any;
|
|
42
|
+
}>;
|
|
32
43
|
type AdminAuthApplicationOptions = ServerAuthApplicationOptions & ({
|
|
33
44
|
superSecretAdminKey: string;
|
|
34
45
|
} | {
|
|
@@ -62,6 +73,16 @@ declare class StackAdminInterface extends StackServerInterface {
|
|
|
62
73
|
revokeInternalApiKeyById(id: string): Promise<void>;
|
|
63
74
|
getInternalApiKey(id: string, session: InternalSession): Promise<InternalApiKeysCrud["Admin"]["Read"]>;
|
|
64
75
|
listEmailTemplates(): Promise<EmailTemplateCrud['Admin']['Read'][]>;
|
|
76
|
+
listInternalEmailTemplatesNew(): Promise<{
|
|
77
|
+
id: string;
|
|
78
|
+
subject: string;
|
|
79
|
+
display_name: string;
|
|
80
|
+
tsx_source: string;
|
|
81
|
+
}[]>;
|
|
82
|
+
listEmailThemes(): Promise<{
|
|
83
|
+
id: string;
|
|
84
|
+
display_name: string;
|
|
85
|
+
}[]>;
|
|
65
86
|
updateEmailTemplate(type: EmailTemplateType, data: EmailTemplateCrud['Admin']['Update']): Promise<EmailTemplateCrud['Admin']['Read']>;
|
|
66
87
|
resetEmailTemplate(type: EmailTemplateType): Promise<void>;
|
|
67
88
|
listTeamPermissionDefinitions(): Promise<TeamPermissionDefinitionsCrud['Admin']['Read'][]>;
|
|
@@ -97,9 +118,35 @@ declare class StackAdminInterface extends StackServerInterface {
|
|
|
97
118
|
notification_category_name: string;
|
|
98
119
|
}): Promise<void>;
|
|
99
120
|
sendSignInInvitationEmail(email: string, callbackUrl: string): Promise<void>;
|
|
100
|
-
|
|
121
|
+
sendChatMessage(threadId: string, contextType: "email-theme" | "email-template", messages: Array<{
|
|
122
|
+
role: string;
|
|
123
|
+
content: any;
|
|
124
|
+
}>, abortSignal?: AbortSignal): Promise<{
|
|
125
|
+
content: ChatContent;
|
|
126
|
+
}>;
|
|
127
|
+
saveChatMessage(threadId: string, message: any): Promise<void>;
|
|
128
|
+
listChatMessages(threadId: string): Promise<{
|
|
129
|
+
messages: Array<any>;
|
|
130
|
+
}>;
|
|
131
|
+
renderEmailPreview(options: {
|
|
132
|
+
themeId?: string;
|
|
133
|
+
themeTsxSource?: string;
|
|
134
|
+
templateId?: string;
|
|
135
|
+
templateTsxSource?: string;
|
|
136
|
+
}): Promise<{
|
|
101
137
|
html: string;
|
|
102
138
|
}>;
|
|
139
|
+
createEmailTheme(displayName: string): Promise<{
|
|
140
|
+
id: string;
|
|
141
|
+
}>;
|
|
142
|
+
getEmailTheme(id: string): Promise<{
|
|
143
|
+
display_name: string;
|
|
144
|
+
tsx_source: string;
|
|
145
|
+
}>;
|
|
146
|
+
updateEmailTheme(id: string, tsxSource: string): Promise<void>;
|
|
147
|
+
updateNewEmailTemplate(id: string, tsxSource: string): Promise<{
|
|
148
|
+
rendered_html: string;
|
|
149
|
+
}>;
|
|
103
150
|
}
|
|
104
151
|
|
|
105
|
-
export { type AdminAuthApplicationOptions, type InternalApiKeyCreateCrudRequest, type InternalApiKeyCreateCrudResponse, StackAdminInterface };
|
|
152
|
+
export { type AdminAuthApplicationOptions, type ChatContent, type InternalApiKeyCreateCrudRequest, type InternalApiKeyCreateCrudResponse, StackAdminInterface };
|
|
@@ -110,6 +110,16 @@ var StackAdminInterface = class extends import_server_interface.StackServerInter
|
|
|
110
110
|
const result = await response.json();
|
|
111
111
|
return result.items;
|
|
112
112
|
}
|
|
113
|
+
async listInternalEmailTemplatesNew() {
|
|
114
|
+
const response = await this.sendAdminRequest(`/internal/email-templates`, {}, null);
|
|
115
|
+
const result = await response.json();
|
|
116
|
+
return result.templates;
|
|
117
|
+
}
|
|
118
|
+
async listEmailThemes() {
|
|
119
|
+
const response = await this.sendAdminRequest(`/internal/email-themes`, {}, null);
|
|
120
|
+
const result = await response.json();
|
|
121
|
+
return result.themes;
|
|
122
|
+
}
|
|
113
123
|
async updateEmailTemplate(type, data) {
|
|
114
124
|
const result = await this.sendAdminRequest(
|
|
115
125
|
`/email-templates/${type}`,
|
|
@@ -286,19 +296,110 @@ var StackAdminInterface = class extends import_server_interface.StackServerInter
|
|
|
286
296
|
null
|
|
287
297
|
);
|
|
288
298
|
}
|
|
289
|
-
async
|
|
299
|
+
async sendChatMessage(threadId, contextType, messages, abortSignal) {
|
|
300
|
+
const response = await this.sendAdminRequest(
|
|
301
|
+
`/internal/ai-chat/${threadId}`,
|
|
302
|
+
{
|
|
303
|
+
method: "POST",
|
|
304
|
+
headers: {
|
|
305
|
+
"content-type": "application/json"
|
|
306
|
+
},
|
|
307
|
+
body: JSON.stringify({ context_type: contextType, messages }),
|
|
308
|
+
signal: abortSignal
|
|
309
|
+
},
|
|
310
|
+
null
|
|
311
|
+
);
|
|
312
|
+
return await response.json();
|
|
313
|
+
}
|
|
314
|
+
async saveChatMessage(threadId, message) {
|
|
315
|
+
await this.sendAdminRequest(
|
|
316
|
+
`/internal/ai-chat/${threadId}`,
|
|
317
|
+
{
|
|
318
|
+
method: "PATCH",
|
|
319
|
+
headers: {
|
|
320
|
+
"content-type": "application/json"
|
|
321
|
+
},
|
|
322
|
+
body: JSON.stringify({ message })
|
|
323
|
+
},
|
|
324
|
+
null
|
|
325
|
+
);
|
|
326
|
+
}
|
|
327
|
+
async listChatMessages(threadId) {
|
|
328
|
+
const response = await this.sendAdminRequest(
|
|
329
|
+
`/internal/ai-chat/${threadId}`,
|
|
330
|
+
{ method: "GET" },
|
|
331
|
+
null
|
|
332
|
+
);
|
|
333
|
+
return await response.json();
|
|
334
|
+
}
|
|
335
|
+
async renderEmailPreview(options) {
|
|
290
336
|
const response = await this.sendAdminRequest(`/emails/render-email`, {
|
|
291
337
|
method: "POST",
|
|
292
338
|
headers: {
|
|
293
339
|
"content-type": "application/json"
|
|
294
340
|
},
|
|
295
341
|
body: JSON.stringify({
|
|
296
|
-
|
|
297
|
-
|
|
342
|
+
theme_id: options.themeId,
|
|
343
|
+
theme_tsx_source: options.themeTsxSource,
|
|
344
|
+
template_id: options.templateId,
|
|
345
|
+
template_tsx_source: options.templateTsxSource
|
|
298
346
|
})
|
|
299
347
|
}, null);
|
|
300
348
|
return await response.json();
|
|
301
349
|
}
|
|
350
|
+
async createEmailTheme(displayName) {
|
|
351
|
+
const response = await this.sendAdminRequest(
|
|
352
|
+
`/internal/email-themes`,
|
|
353
|
+
{
|
|
354
|
+
method: "POST",
|
|
355
|
+
headers: {
|
|
356
|
+
"content-type": "application/json"
|
|
357
|
+
},
|
|
358
|
+
body: JSON.stringify({
|
|
359
|
+
display_name: displayName
|
|
360
|
+
})
|
|
361
|
+
},
|
|
362
|
+
null
|
|
363
|
+
);
|
|
364
|
+
return await response.json();
|
|
365
|
+
}
|
|
366
|
+
async getEmailTheme(id) {
|
|
367
|
+
const response = await this.sendAdminRequest(
|
|
368
|
+
`/internal/email-themes/${id}`,
|
|
369
|
+
{ method: "GET" },
|
|
370
|
+
null
|
|
371
|
+
);
|
|
372
|
+
return await response.json();
|
|
373
|
+
}
|
|
374
|
+
async updateEmailTheme(id, tsxSource) {
|
|
375
|
+
await this.sendAdminRequest(
|
|
376
|
+
`/internal/email-themes/${id}`,
|
|
377
|
+
{
|
|
378
|
+
method: "PATCH",
|
|
379
|
+
headers: {
|
|
380
|
+
"content-type": "application/json"
|
|
381
|
+
},
|
|
382
|
+
body: JSON.stringify({
|
|
383
|
+
tsx_source: tsxSource
|
|
384
|
+
})
|
|
385
|
+
},
|
|
386
|
+
null
|
|
387
|
+
);
|
|
388
|
+
}
|
|
389
|
+
async updateNewEmailTemplate(id, tsxSource) {
|
|
390
|
+
const response = await this.sendAdminRequest(
|
|
391
|
+
`/internal/email-templates/${id}`,
|
|
392
|
+
{
|
|
393
|
+
method: "PATCH",
|
|
394
|
+
headers: {
|
|
395
|
+
"content-type": "application/json"
|
|
396
|
+
},
|
|
397
|
+
body: JSON.stringify({ tsx_source: tsxSource })
|
|
398
|
+
},
|
|
399
|
+
null
|
|
400
|
+
);
|
|
401
|
+
return await response.json();
|
|
402
|
+
}
|
|
302
403
|
};
|
|
303
404
|
// Annotate the CommonJS export names for ESM import in node:
|
|
304
405
|
0 && (module.exports = {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../src/interface/admin-interface.ts"],"sourcesContent":["import { InternalSession } from \"../sessions\";\nimport { EmailTemplateCrud, EmailTemplateType } from \"./crud/email-templates\";\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 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 listEmailTemplates(): Promise<EmailTemplateCrud['Admin']['Read'][]> {\n const response = await this.sendAdminRequest(`/email-templates`, {}, null);\n const result = await response.json() as EmailTemplateCrud['Admin']['List'];\n return result.items;\n }\n\n async updateEmailTemplate(type: EmailTemplateType, data: EmailTemplateCrud['Admin']['Update']): Promise<EmailTemplateCrud['Admin']['Read']> {\n const result = await this.sendAdminRequest(\n `/email-templates/${type}`,\n {\n method: \"PATCH\",\n headers: {\n \"content-type\": \"application/json\",\n },\n body: JSON.stringify(data),\n },\n null,\n );\n return await result.json();\n }\n\n async resetEmailTemplate(type: EmailTemplateType): Promise<void> {\n await this.sendAdminRequest(\n `/email-templates/${type}`,\n { method: \"DELETE\" },\n null\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 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 sendEmail(options: {\n user_ids: string[],\n subject: string,\n html: string,\n notification_category_name: string,\n }): Promise<void> {\n await this.sendAdminRequest(\"/emails/send-email\", {\n method: \"POST\",\n headers: {\n \"content-type\": \"application/json\",\n },\n body: JSON.stringify(options),\n }, null);\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 async renderEmailThemePreview(theme: string, content: 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,\n preview_html: content,\n }),\n }, null);\n return await response.json();\n }\n}\n"],"mappings":"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","names":[]}
|
|
1
|
+
{"version":3,"sources":["../../src/interface/admin-interface.ts"],"sourcesContent":["import { InternalSession } from \"../sessions\";\nimport { EmailTemplateCrud, EmailTemplateType } from \"./crud/email-templates\";\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 listEmailTemplates(): Promise<EmailTemplateCrud['Admin']['Read'][]> {\n const response = await this.sendAdminRequest(`/email-templates`, {}, null);\n const result = await response.json() as EmailTemplateCrud['Admin']['List'];\n return result.items;\n }\n\n async listInternalEmailTemplatesNew(): Promise<{ id: string, subject: string, display_name: string, tsx_source: string }[]> {\n const response = await this.sendAdminRequest(`/internal/email-templates`, {}, null);\n const result = await response.json() as { templates: { id: string, subject: string, display_name: 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 async updateEmailTemplate(type: EmailTemplateType, data: EmailTemplateCrud['Admin']['Update']): Promise<EmailTemplateCrud['Admin']['Read']> {\n const result = await this.sendAdminRequest(\n `/email-templates/${type}`,\n {\n method: \"PATCH\",\n headers: {\n \"content-type\": \"application/json\",\n },\n body: JSON.stringify(data),\n },\n null,\n );\n return await result.json();\n }\n\n async resetEmailTemplate(type: EmailTemplateType): Promise<void> {\n await this.sendAdminRequest(\n `/email-templates/${type}`,\n { method: \"DELETE\" },\n null\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 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 sendEmail(options: {\n user_ids: string[],\n subject: string,\n html: string,\n notification_category_name: string,\n }): Promise<void> {\n await this.sendAdminRequest(\"/emails/send-email\", {\n method: \"POST\",\n headers: {\n \"content-type\": \"application/json\",\n },\n body: JSON.stringify(options),\n }, null);\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, 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 updateNewEmailTemplate(id: string, tsxSource: string): 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 }),\n },\n null,\n );\n return await response.json();\n }\n}\n"],"mappings":"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","names":[]}
|
|
@@ -4,10 +4,10 @@ import { InternalSession, RefreshToken, AccessToken } from '../sessions.mjs';
|
|
|
4
4
|
import { ReadonlyJson } from '../utils/json.mjs';
|
|
5
5
|
import { PublicKeyCredentialCreationOptionsJSON, RegistrationResponseJSON, PublicKeyCredentialRequestOptionsJSON, AuthenticationResponseJSON } from '@simplewebauthn/types';
|
|
6
6
|
import { Result } from '../utils/results.mjs';
|
|
7
|
+
import { ConnectedAccountAccessTokenCrud } from './crud/connected-accounts.mjs';
|
|
7
8
|
import { ContactChannelsCrud } from './crud/contact-channels.mjs';
|
|
8
9
|
import { CurrentUserCrud } from './crud/current-user.mjs';
|
|
9
10
|
import { NotificationPreferenceCrud } from './crud/notification-preferences.mjs';
|
|
10
|
-
import { ConnectedAccountAccessTokenCrud } from './crud/oauth.mjs';
|
|
11
11
|
import { UserApiKeysCrud, TeamApiKeysCrud, userApiKeysCreateInputSchema, userApiKeysCreateOutputSchema, teamApiKeysCreateInputSchema, teamApiKeysCreateOutputSchema } from './crud/project-api-keys.mjs';
|
|
12
12
|
import { ProjectPermissionsCrud } from './crud/project-permissions.mjs';
|
|
13
13
|
import { ClientProjectsCrud, AdminUserProjectsCrud } from './crud/projects.mjs';
|
|
@@ -263,6 +263,29 @@ declare class StackClientInterface {
|
|
|
263
263
|
checkProjectApiKey(type: "user" | "team", apiKey: string, session: InternalSession | null, requestType: "client" | "server" | "admin"): Promise<UserApiKeysCrud['Client']['Read'] | TeamApiKeysCrud['Client']['Read'] | null>;
|
|
264
264
|
listNotificationCategories(session: InternalSession): Promise<NotificationPreferenceCrud['Client']['Read'][]>;
|
|
265
265
|
setNotificationsEnabled(notificationCategoryId: string, enabled: boolean, session: InternalSession): Promise<void>;
|
|
266
|
+
getOAuthProvider(userId: string, providerId: string, session: InternalSession | null, requestType?: "client" | "server" | "admin"): Promise<{
|
|
267
|
+
id: string;
|
|
268
|
+
type: string;
|
|
269
|
+
user_id: string;
|
|
270
|
+
account_id?: string;
|
|
271
|
+
email: string;
|
|
272
|
+
allow_sign_in: boolean;
|
|
273
|
+
allow_connected_accounts: boolean;
|
|
274
|
+
}>;
|
|
275
|
+
listOAuthProviders(options: {
|
|
276
|
+
user_id?: string | undefined;
|
|
277
|
+
} | undefined, session: InternalSession | null, requestType?: "client" | "server" | "admin"): Promise<{
|
|
278
|
+
id: string;
|
|
279
|
+
type: string;
|
|
280
|
+
user_id: string;
|
|
281
|
+
account_id?: string;
|
|
282
|
+
email: string;
|
|
283
|
+
allow_sign_in: boolean;
|
|
284
|
+
allow_connected_accounts: boolean;
|
|
285
|
+
}[]>;
|
|
286
|
+
deleteOAuthProvider(userId: string, providerId: string, session: InternalSession | null, requestType?: "client" | "server" | "admin"): Promise<{
|
|
287
|
+
success: boolean;
|
|
288
|
+
}>;
|
|
266
289
|
}
|
|
267
290
|
|
|
268
291
|
export { type ClientInterfaceOptions, StackClientInterface };
|
|
@@ -4,10 +4,10 @@ import { InternalSession, RefreshToken, AccessToken } from '../sessions.js';
|
|
|
4
4
|
import { ReadonlyJson } from '../utils/json.js';
|
|
5
5
|
import { PublicKeyCredentialCreationOptionsJSON, RegistrationResponseJSON, PublicKeyCredentialRequestOptionsJSON, AuthenticationResponseJSON } from '@simplewebauthn/types';
|
|
6
6
|
import { Result } from '../utils/results.js';
|
|
7
|
+
import { ConnectedAccountAccessTokenCrud } from './crud/connected-accounts.js';
|
|
7
8
|
import { ContactChannelsCrud } from './crud/contact-channels.js';
|
|
8
9
|
import { CurrentUserCrud } from './crud/current-user.js';
|
|
9
10
|
import { NotificationPreferenceCrud } from './crud/notification-preferences.js';
|
|
10
|
-
import { ConnectedAccountAccessTokenCrud } from './crud/oauth.js';
|
|
11
11
|
import { UserApiKeysCrud, TeamApiKeysCrud, userApiKeysCreateInputSchema, userApiKeysCreateOutputSchema, teamApiKeysCreateInputSchema, teamApiKeysCreateOutputSchema } from './crud/project-api-keys.js';
|
|
12
12
|
import { ProjectPermissionsCrud } from './crud/project-permissions.js';
|
|
13
13
|
import { ClientProjectsCrud, AdminUserProjectsCrud } from './crud/projects.js';
|
|
@@ -263,6 +263,29 @@ declare class StackClientInterface {
|
|
|
263
263
|
checkProjectApiKey(type: "user" | "team", apiKey: string, session: InternalSession | null, requestType: "client" | "server" | "admin"): Promise<UserApiKeysCrud['Client']['Read'] | TeamApiKeysCrud['Client']['Read'] | null>;
|
|
264
264
|
listNotificationCategories(session: InternalSession): Promise<NotificationPreferenceCrud['Client']['Read'][]>;
|
|
265
265
|
setNotificationsEnabled(notificationCategoryId: string, enabled: boolean, session: InternalSession): Promise<void>;
|
|
266
|
+
getOAuthProvider(userId: string, providerId: string, session: InternalSession | null, requestType?: "client" | "server" | "admin"): Promise<{
|
|
267
|
+
id: string;
|
|
268
|
+
type: string;
|
|
269
|
+
user_id: string;
|
|
270
|
+
account_id?: string;
|
|
271
|
+
email: string;
|
|
272
|
+
allow_sign_in: boolean;
|
|
273
|
+
allow_connected_accounts: boolean;
|
|
274
|
+
}>;
|
|
275
|
+
listOAuthProviders(options: {
|
|
276
|
+
user_id?: string | undefined;
|
|
277
|
+
} | undefined, session: InternalSession | null, requestType?: "client" | "server" | "admin"): Promise<{
|
|
278
|
+
id: string;
|
|
279
|
+
type: string;
|
|
280
|
+
user_id: string;
|
|
281
|
+
account_id?: string;
|
|
282
|
+
email: string;
|
|
283
|
+
allow_sign_in: boolean;
|
|
284
|
+
allow_connected_accounts: boolean;
|
|
285
|
+
}[]>;
|
|
286
|
+
deleteOAuthProvider(userId: string, providerId: string, session: InternalSession | null, requestType?: "client" | "server" | "admin"): Promise<{
|
|
287
|
+
success: boolean;
|
|
288
|
+
}>;
|
|
266
289
|
}
|
|
267
290
|
|
|
268
291
|
export { type ClientInterfaceOptions, StackClientInterface };
|