@oneuptime/common 8.0.5387 → 8.0.5403
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/Models/AnalyticsModels/Index.ts +0 -2
- package/Models/DatabaseModels/TelemetryException.ts +0 -7
- package/Server/API/UserOnCallLogTimelineAPI.ts +21 -17
- package/Server/DatabaseConfig.ts +7 -2
- package/Server/EnvironmentConfig.ts +20 -7
- package/Server/Infrastructure/GlobalCache.ts +12 -5
- package/Server/Services/AlertService.ts +0 -10
- package/Server/Services/AnalyticsDatabaseService.ts +5 -0
- package/Server/Services/IncidentService.ts +0 -10
- package/Server/Services/Index.ts +0 -2
- package/Server/Services/TeamMemberService.ts +11 -2
- package/Server/Services/TelemetryAttributeService.ts +261 -48
- package/Server/Utils/Monitor/MonitorResource.ts +0 -16
- package/Server/Utils/Telemetry/Telemetry.ts +0 -61
- package/Types/Permission.ts +0 -3
- package/UI/Components/Filters/FilterViewer.tsx +5 -1
- package/UI/Components/Filters/FiltersForm.tsx +8 -1
- package/UI/Components/List/List.tsx +4 -0
- package/UI/Components/LogsViewer/LogsViewer.tsx +102 -55
- package/UI/Components/Markdown.tsx/MarkdownViewer.tsx +1 -1
- package/UI/Components/ModelTable/BaseModelTable.tsx +6 -0
- package/UI/Components/Table/Table.tsx +4 -0
- package/UI/Config.ts +28 -19
- package/UI/Utils/API/ApiDocsAPI.ts +6 -1
- package/UI/Utils/API/DashboardAPI.ts +2 -1
- package/UI/Utils/API/IdentityAPI.ts +6 -1
- package/build/dist/Models/AnalyticsModels/Index.js +0 -2
- package/build/dist/Models/AnalyticsModels/Index.js.map +1 -1
- package/build/dist/Models/DatabaseModels/TelemetryException.js +0 -7
- package/build/dist/Models/DatabaseModels/TelemetryException.js.map +1 -1
- package/build/dist/Server/API/UserOnCallLogTimelineAPI.js +6 -3
- package/build/dist/Server/API/UserOnCallLogTimelineAPI.js.map +1 -1
- package/build/dist/Server/DatabaseConfig.js +3 -2
- package/build/dist/Server/DatabaseConfig.js.map +1 -1
- package/build/dist/Server/EnvironmentConfig.js +8 -7
- package/build/dist/Server/EnvironmentConfig.js.map +1 -1
- package/build/dist/Server/Infrastructure/GlobalCache.js +11 -9
- package/build/dist/Server/Infrastructure/GlobalCache.js.map +1 -1
- package/build/dist/Server/Services/AlertService.js +0 -9
- package/build/dist/Server/Services/AlertService.js.map +1 -1
- package/build/dist/Server/Services/AnalyticsDatabaseService.js.map +1 -1
- package/build/dist/Server/Services/IncidentService.js +0 -9
- package/build/dist/Server/Services/IncidentService.js.map +1 -1
- package/build/dist/Server/Services/Index.js +0 -2
- package/build/dist/Server/Services/Index.js.map +1 -1
- package/build/dist/Server/Services/TeamMemberService.js +3 -2
- package/build/dist/Server/Services/TeamMemberService.js.map +1 -1
- package/build/dist/Server/Services/TelemetryAttributeService.js +165 -46
- package/build/dist/Server/Services/TelemetryAttributeService.js.map +1 -1
- package/build/dist/Server/Utils/Monitor/MonitorResource.js +0 -15
- package/build/dist/Server/Utils/Monitor/MonitorResource.js.map +1 -1
- package/build/dist/Server/Utils/Telemetry/Telemetry.js +0 -41
- package/build/dist/Server/Utils/Telemetry/Telemetry.js.map +1 -1
- package/build/dist/Types/Permission.js +0 -2
- package/build/dist/Types/Permission.js.map +1 -1
- package/build/dist/UI/Components/Filters/FilterViewer.js +2 -2
- package/build/dist/UI/Components/Filters/FilterViewer.js.map +1 -1
- package/build/dist/UI/Components/Filters/FiltersForm.js +6 -1
- package/build/dist/UI/Components/Filters/FiltersForm.js.map +1 -1
- package/build/dist/UI/Components/List/List.js +1 -1
- package/build/dist/UI/Components/List/List.js.map +1 -1
- package/build/dist/UI/Components/LogsViewer/LogsViewer.js +43 -16
- package/build/dist/UI/Components/LogsViewer/LogsViewer.js.map +1 -1
- package/build/dist/UI/Components/Markdown.tsx/MarkdownViewer.js +1 -1
- package/build/dist/UI/Components/Markdown.tsx/MarkdownViewer.js.map +1 -1
- package/build/dist/UI/Components/ModelTable/BaseModelTable.js +2 -2
- package/build/dist/UI/Components/ModelTable/BaseModelTable.js.map +1 -1
- package/build/dist/UI/Components/Table/Table.js +1 -1
- package/build/dist/UI/Components/Table/Table.js.map +1 -1
- package/build/dist/UI/Config.js +20 -19
- package/build/dist/UI/Config.js.map +1 -1
- package/build/dist/UI/Utils/API/ApiDocsAPI.js +2 -1
- package/build/dist/UI/Utils/API/ApiDocsAPI.js.map +1 -1
- package/build/dist/UI/Utils/API/DashboardAPI.js +2 -1
- package/build/dist/UI/Utils/API/DashboardAPI.js.map +1 -1
- package/build/dist/UI/Utils/API/IdentityAPI.js +2 -1
- package/build/dist/UI/Utils/API/IdentityAPI.js.map +1 -1
- package/package.json +1 -1
- package/Models/AnalyticsModels/TelemetryAttribute.ts +0 -164
- package/build/dist/Models/AnalyticsModels/TelemetryAttribute.js +0 -154
- package/build/dist/Models/AnalyticsModels/TelemetryAttribute.js.map +0 -1
|
@@ -2,7 +2,6 @@ import AnalyticsBaseModel from "./AnalyticsBaseModel/AnalyticsBaseModel";
|
|
|
2
2
|
import Log from "./Log";
|
|
3
3
|
import Metric from "./Metric";
|
|
4
4
|
import Span from "./Span";
|
|
5
|
-
import TelemetryAttribute from "./TelemetryAttribute";
|
|
6
5
|
import ExceptionInstance from "./ExceptionInstance";
|
|
7
6
|
import MonitorLog from "./MonitorLog";
|
|
8
7
|
|
|
@@ -10,7 +9,6 @@ const AnalyticsModels: Array<{ new (): AnalyticsBaseModel }> = [
|
|
|
10
9
|
Log,
|
|
11
10
|
Span,
|
|
12
11
|
Metric,
|
|
13
|
-
TelemetryAttribute,
|
|
14
12
|
ExceptionInstance,
|
|
15
13
|
MonitorLog,
|
|
16
14
|
];
|
|
@@ -8,7 +8,6 @@ import ColumnLength from "../../Types/Database/ColumnLength";
|
|
|
8
8
|
import ColumnType from "../../Types/Database/ColumnType";
|
|
9
9
|
import CrudApiEndpoint from "../../Types/Database/CrudApiEndpoint";
|
|
10
10
|
import EnableDocumentation from "../../Types/Database/EnableDocumentation";
|
|
11
|
-
import EnableWorkflow from "../../Types/Database/EnableWorkflow";
|
|
12
11
|
import TableColumn from "../../Types/Database/TableColumn";
|
|
13
12
|
import TableColumnType from "../../Types/Database/TableColumnType";
|
|
14
13
|
import TableMetadata from "../../Types/Database/TableMetadata";
|
|
@@ -45,12 +44,6 @@ import TelemetryService from "./TelemetryService";
|
|
|
45
44
|
Permission.EditTelemetryException,
|
|
46
45
|
],
|
|
47
46
|
})
|
|
48
|
-
@EnableWorkflow({
|
|
49
|
-
create: true,
|
|
50
|
-
delete: true,
|
|
51
|
-
update: true,
|
|
52
|
-
read: true,
|
|
53
|
-
})
|
|
54
47
|
@CrudApiEndpoint(new Route("/telemetry-exception-status"))
|
|
55
48
|
@TableMetadata({
|
|
56
49
|
tableName: "TelemetryException",
|
|
@@ -236,12 +236,16 @@ export default class UserNotificationLogTimelineAPI extends BaseAPI<
|
|
|
236
236
|
if (timelineItem.isAcknowledged) {
|
|
237
237
|
// already acknowledged. Then show already acknowledged page with view details button.
|
|
238
238
|
|
|
239
|
+
const viewDetailsRoute: Route = new Route(
|
|
240
|
+
DashboardRoute.toString(),
|
|
241
|
+
).addRoute(
|
|
242
|
+
`/${timelineItem.projectId?.toString()}/${timelineItem.triggeredByIncidentId ? "incidents" : "alerts"}/${timelineItem.triggeredByIncidentId ? timelineItem.triggeredByIncidentId!.toString() : timelineItem.triggeredByAlertId!.toString()}`,
|
|
243
|
+
);
|
|
244
|
+
|
|
239
245
|
const viewDetailsUrl: URL = new URL(
|
|
240
246
|
httpProtocol,
|
|
241
247
|
host,
|
|
242
|
-
|
|
243
|
-
`/${timelineItem.projectId?.toString()}/${timelineItem.triggeredByIncidentId ? "incidents" : "alerts"}/${timelineItem.triggeredByIncidentId ? timelineItem.triggeredByIncidentId!.toString() : timelineItem.triggeredByAlertId!.toString()}`,
|
|
244
|
-
),
|
|
248
|
+
viewDetailsRoute,
|
|
245
249
|
);
|
|
246
250
|
|
|
247
251
|
return Response.render(
|
|
@@ -273,30 +277,30 @@ export default class UserNotificationLogTimelineAPI extends BaseAPI<
|
|
|
273
277
|
// redirect to dashboard to incidents page.
|
|
274
278
|
|
|
275
279
|
if (timelineItem.triggeredByIncidentId) {
|
|
280
|
+
const incidentRoute: Route = new Route(
|
|
281
|
+
DashboardRoute.toString(),
|
|
282
|
+
).addRoute(
|
|
283
|
+
`/${timelineItem.projectId?.toString()}/incidents/${timelineItem.triggeredByIncidentId!.toString()}`,
|
|
284
|
+
);
|
|
285
|
+
|
|
276
286
|
return Response.redirect(
|
|
277
287
|
req,
|
|
278
288
|
res,
|
|
279
|
-
new URL(
|
|
280
|
-
httpProtocol,
|
|
281
|
-
host,
|
|
282
|
-
DashboardRoute.addRoute(
|
|
283
|
-
`/${timelineItem.projectId?.toString()}/incidents/${timelineItem.triggeredByIncidentId!.toString()}`,
|
|
284
|
-
),
|
|
285
|
-
),
|
|
289
|
+
new URL(httpProtocol, host, incidentRoute),
|
|
286
290
|
);
|
|
287
291
|
}
|
|
288
292
|
|
|
289
293
|
if (timelineItem.triggeredByAlertId) {
|
|
294
|
+
const alertRoute: Route = new Route(
|
|
295
|
+
DashboardRoute.toString(),
|
|
296
|
+
).addRoute(
|
|
297
|
+
`/${timelineItem.projectId?.toString()}/alerts/${timelineItem.triggeredByAlertId!.toString()}`,
|
|
298
|
+
);
|
|
299
|
+
|
|
290
300
|
return Response.redirect(
|
|
291
301
|
req,
|
|
292
302
|
res,
|
|
293
|
-
new URL(
|
|
294
|
-
httpProtocol,
|
|
295
|
-
host,
|
|
296
|
-
DashboardRoute.addRoute(
|
|
297
|
-
`/${timelineItem.projectId?.toString()}/alerts/${timelineItem.triggeredByAlertId!.toString()}`,
|
|
298
|
-
),
|
|
299
|
-
),
|
|
303
|
+
new URL(httpProtocol, host, alertRoute),
|
|
300
304
|
);
|
|
301
305
|
}
|
|
302
306
|
|
package/Server/DatabaseConfig.ts
CHANGED
|
@@ -3,6 +3,7 @@ import { AccountsRoute, DashboardRoute } from "../ServiceRoute";
|
|
|
3
3
|
import Hostname from "../Types/API/Hostname";
|
|
4
4
|
import Protocol from "../Types/API/Protocol";
|
|
5
5
|
import URL from "../Types/API/URL";
|
|
6
|
+
import Route from "../Types/API/Route";
|
|
6
7
|
import BadDataException from "../Types/Exception/BadDataException";
|
|
7
8
|
import { JSONValue } from "../Types/JSON";
|
|
8
9
|
import GlobalConfig from "../Models/DatabaseModels/GlobalConfig";
|
|
@@ -56,7 +57,11 @@ export default class DatabaseConfig {
|
|
|
56
57
|
@CaptureSpan()
|
|
57
58
|
public static async getAccountsUrl(): Promise<URL> {
|
|
58
59
|
const host: Hostname = await DatabaseConfig.getHost();
|
|
59
|
-
return new URL(
|
|
60
|
+
return new URL(
|
|
61
|
+
await DatabaseConfig.getHttpProtocol(),
|
|
62
|
+
host,
|
|
63
|
+
new Route(AccountsRoute.toString()),
|
|
64
|
+
);
|
|
60
65
|
}
|
|
61
66
|
|
|
62
67
|
@CaptureSpan()
|
|
@@ -65,7 +70,7 @@ export default class DatabaseConfig {
|
|
|
65
70
|
return new URL(
|
|
66
71
|
await DatabaseConfig.getHttpProtocol(),
|
|
67
72
|
host,
|
|
68
|
-
DashboardRoute,
|
|
73
|
+
new Route(DashboardRoute.toString()),
|
|
69
74
|
);
|
|
70
75
|
}
|
|
71
76
|
|
|
@@ -10,6 +10,7 @@ import {
|
|
|
10
10
|
import BillingConfig from "./BillingConfig";
|
|
11
11
|
import Protocol from "../Types/API/Protocol";
|
|
12
12
|
import URL from "../Types/API/URL";
|
|
13
|
+
import Route from "../Types/API/Route";
|
|
13
14
|
import SubscriptionPlan from "../Types/Billing/SubscriptionPlan";
|
|
14
15
|
import Email from "../Types/Email";
|
|
15
16
|
import { JSONObject } from "../Types/JSON";
|
|
@@ -303,32 +304,44 @@ export const NotificationSlackWebhookOnSubscriptionUpdate: string =
|
|
|
303
304
|
export const AdminDashboardClientURL: URL = new URL(
|
|
304
305
|
HttpProtocol,
|
|
305
306
|
Host,
|
|
306
|
-
AdminDashboardRoute,
|
|
307
|
+
new Route(AdminDashboardRoute.toString()),
|
|
307
308
|
);
|
|
308
309
|
|
|
309
|
-
export const AppApiClientUrl: URL = new URL(
|
|
310
|
+
export const AppApiClientUrl: URL = new URL(
|
|
311
|
+
HttpProtocol,
|
|
312
|
+
Host,
|
|
313
|
+
new Route(AppApiRoute.toString()),
|
|
314
|
+
);
|
|
310
315
|
|
|
311
316
|
export const StatusPageApiClientUrl: URL = new URL(
|
|
312
317
|
HttpProtocol,
|
|
313
318
|
Host,
|
|
314
|
-
StatusPageApiRoute,
|
|
319
|
+
new Route(StatusPageApiRoute.toString()),
|
|
315
320
|
);
|
|
316
321
|
|
|
317
322
|
export const DashboardClientUrl: URL = new URL(
|
|
318
323
|
HttpProtocol,
|
|
319
324
|
Host,
|
|
320
|
-
DashboardRoute,
|
|
325
|
+
new Route(DashboardRoute.toString()),
|
|
321
326
|
);
|
|
322
327
|
|
|
323
328
|
export const AccountsClientUrl: URL = new URL(
|
|
324
329
|
HttpProtocol,
|
|
325
330
|
Host,
|
|
326
|
-
AccountsRoute,
|
|
331
|
+
new Route(AccountsRoute.toString()),
|
|
327
332
|
);
|
|
328
333
|
|
|
329
|
-
export const HomeClientUrl: URL = new URL(
|
|
334
|
+
export const HomeClientUrl: URL = new URL(
|
|
335
|
+
HttpProtocol,
|
|
336
|
+
Host,
|
|
337
|
+
new Route(HomeRoute.toString()),
|
|
338
|
+
);
|
|
330
339
|
|
|
331
|
-
export const DocsClientUrl: URL = new URL(
|
|
340
|
+
export const DocsClientUrl: URL = new URL(
|
|
341
|
+
HttpProtocol,
|
|
342
|
+
Host,
|
|
343
|
+
new Route(DocsRoute.toString()),
|
|
344
|
+
);
|
|
332
345
|
|
|
333
346
|
export const DisableTelemetry: boolean =
|
|
334
347
|
process.env["DISABLE_TELEMETRY"] === "true";
|
|
@@ -7,6 +7,10 @@ import { JSONArray, JSONObject } from "../../Types/JSON";
|
|
|
7
7
|
import JSONFunctions from "../../Types/JSONFunctions";
|
|
8
8
|
import CaptureSpan from "../Utils/Telemetry/CaptureSpan";
|
|
9
9
|
|
|
10
|
+
type CacheSetOptions = {
|
|
11
|
+
expiresInSeconds: number;
|
|
12
|
+
};
|
|
13
|
+
|
|
10
14
|
export default abstract class GlobalCache {
|
|
11
15
|
@CaptureSpan()
|
|
12
16
|
public static async getJSONObject(
|
|
@@ -56,8 +60,9 @@ export default abstract class GlobalCache {
|
|
|
56
60
|
namespace: string,
|
|
57
61
|
key: string,
|
|
58
62
|
value: string[],
|
|
63
|
+
options?: CacheSetOptions,
|
|
59
64
|
): Promise<void> {
|
|
60
|
-
await this.setString(namespace, key, JSON.stringify(value));
|
|
65
|
+
await this.setString(namespace, key, JSON.stringify(value), options);
|
|
61
66
|
}
|
|
62
67
|
|
|
63
68
|
@CaptureSpan()
|
|
@@ -136,11 +141,13 @@ export default abstract class GlobalCache {
|
|
|
136
141
|
namespace: string,
|
|
137
142
|
key: string,
|
|
138
143
|
value: JSONObject,
|
|
144
|
+
options?: CacheSetOptions,
|
|
139
145
|
): Promise<void> {
|
|
140
146
|
await this.setString(
|
|
141
147
|
namespace,
|
|
142
148
|
key,
|
|
143
149
|
JSON.stringify(JSONFunctions.serialize(value)),
|
|
150
|
+
options,
|
|
144
151
|
);
|
|
145
152
|
}
|
|
146
153
|
|
|
@@ -149,6 +156,7 @@ export default abstract class GlobalCache {
|
|
|
149
156
|
namespace: string,
|
|
150
157
|
key: string,
|
|
151
158
|
value: string,
|
|
159
|
+
options?: CacheSetOptions,
|
|
152
160
|
): Promise<void> {
|
|
153
161
|
const client: ClientType | null = Redis.getClient();
|
|
154
162
|
|
|
@@ -157,9 +165,8 @@ export default abstract class GlobalCache {
|
|
|
157
165
|
}
|
|
158
166
|
|
|
159
167
|
await client.set(`${namespace}-${key}`, value);
|
|
160
|
-
|
|
161
|
-
|
|
162
|
-
|
|
163
|
-
);
|
|
168
|
+
const expiresInSeconds: number =
|
|
169
|
+
options?.expiresInSeconds ?? OneUptimeDate.getSecondsInDays(30);
|
|
170
|
+
await client.expire(`${namespace}-${key}`, expiresInSeconds);
|
|
164
171
|
}
|
|
165
172
|
}
|
|
@@ -28,7 +28,6 @@ import AlertState from "../../Models/DatabaseModels/AlertState";
|
|
|
28
28
|
import AlertStateTimeline from "../../Models/DatabaseModels/AlertStateTimeline";
|
|
29
29
|
import User from "../../Models/DatabaseModels/User";
|
|
30
30
|
import { IsBillingEnabled } from "../EnvironmentConfig";
|
|
31
|
-
import TelemetryType from "../../Types/Telemetry/TelemetryType";
|
|
32
31
|
import logger from "../Utils/Logger";
|
|
33
32
|
import TelemetryUtil from "../Utils/Telemetry/Telemetry";
|
|
34
33
|
import MetricService from "./MetricService";
|
|
@@ -1329,15 +1328,6 @@ ${alertSeverity.name}
|
|
|
1329
1328
|
},
|
|
1330
1329
|
});
|
|
1331
1330
|
|
|
1332
|
-
// index attributes
|
|
1333
|
-
TelemetryUtil.indexAttributes({
|
|
1334
|
-
attributes: ["monitorId", "projectId", "alertId", "monitorName"],
|
|
1335
|
-
projectId: alert.projectId,
|
|
1336
|
-
telemetryType: TelemetryType.Metric,
|
|
1337
|
-
}).catch((err: Error) => {
|
|
1338
|
-
logger.error(err);
|
|
1339
|
-
});
|
|
1340
|
-
|
|
1341
1331
|
TelemetryUtil.indexMetricNameServiceNameMap({
|
|
1342
1332
|
metricNameServiceNameMap: metricTypesMap,
|
|
1343
1333
|
projectId: alert.projectId,
|
|
@@ -55,6 +55,11 @@ import Sort from "../Types/AnalyticsDatabase/Sort";
|
|
|
55
55
|
import AggregatedModel from "../../Types/BaseDatabase/AggregatedModel";
|
|
56
56
|
import ModelEventType from "../../Types/Realtime/ModelEventType";
|
|
57
57
|
|
|
58
|
+
export type Results = ResultSet<"JSON">;
|
|
59
|
+
export type DbJSONResponse = ResponseJSON<{
|
|
60
|
+
data?: Array<JSONObject>;
|
|
61
|
+
}>;
|
|
62
|
+
|
|
58
63
|
export default class AnalyticsDatabaseService<
|
|
59
64
|
TBaseModel extends AnalyticsBaseModel,
|
|
60
65
|
> extends BaseService {
|
|
@@ -43,7 +43,6 @@ import Metric, {
|
|
|
43
43
|
} from "../../Models/AnalyticsModels/Metric";
|
|
44
44
|
import OneUptimeDate from "../../Types/Date";
|
|
45
45
|
import TelemetryUtil from "../Utils/Telemetry/Telemetry";
|
|
46
|
-
import TelemetryType from "../../Types/Telemetry/TelemetryType";
|
|
47
46
|
import logger from "../Utils/Logger";
|
|
48
47
|
import Semaphore, {
|
|
49
48
|
SemaphoreMutex,
|
|
@@ -2162,15 +2161,6 @@ ${incidentSeverity.name}
|
|
|
2162
2161
|
},
|
|
2163
2162
|
});
|
|
2164
2163
|
|
|
2165
|
-
// index attributes.
|
|
2166
|
-
TelemetryUtil.indexAttributes({
|
|
2167
|
-
attributes: ["monitorIds", "projectId", "incidentId", "monitorNames"],
|
|
2168
|
-
projectId: incident.projectId,
|
|
2169
|
-
telemetryType: TelemetryType.Metric,
|
|
2170
|
-
}).catch((err: Error) => {
|
|
2171
|
-
logger.error(err);
|
|
2172
|
-
});
|
|
2173
|
-
|
|
2174
2164
|
TelemetryUtil.indexMetricNameServiceNameMap({
|
|
2175
2165
|
metricNameServiceNameMap: metricTypesMap,
|
|
2176
2166
|
projectId: incident.projectId,
|
package/Server/Services/Index.ts
CHANGED
|
@@ -135,7 +135,6 @@ import WorkflowVariablesService from "./WorkflowVariableService";
|
|
|
135
135
|
import AnalyticsBaseModel from "../../Models/AnalyticsModels/AnalyticsBaseModel/AnalyticsBaseModel";
|
|
136
136
|
import CopilotPullRequestService from "./CopilotPullRequestService";
|
|
137
137
|
import ServiceCatalogDependencyService from "./ServiceCatalogDependencyService";
|
|
138
|
-
import TelemetryAttributeService from "./TelemetryAttributeService";
|
|
139
138
|
import TelemetryExceptionService from "./TelemetryExceptionService";
|
|
140
139
|
import ExceptionInstanceService from "./ExceptionInstanceService";
|
|
141
140
|
import CopilotActionTypePriorityService from "./CopilotActionTypePriorityService";
|
|
@@ -356,7 +355,6 @@ export const AnalyticsServices: Array<
|
|
|
356
355
|
LogService,
|
|
357
356
|
SpanService,
|
|
358
357
|
MetricService,
|
|
359
|
-
TelemetryAttributeService,
|
|
360
358
|
ExceptionInstanceService,
|
|
361
359
|
MonitorLogService,
|
|
362
360
|
];
|
|
@@ -21,6 +21,7 @@ import { AccountsRoute } from "../../ServiceRoute";
|
|
|
21
21
|
import Hostname from "../../Types/API/Hostname";
|
|
22
22
|
import Protocol from "../../Types/API/Protocol";
|
|
23
23
|
import URL from "../../Types/API/URL";
|
|
24
|
+
import Route from "../../Types/API/Route";
|
|
24
25
|
import SubscriptionPlan, {
|
|
25
26
|
PlanType,
|
|
26
27
|
} from "../../Types/Billing/SubscriptionPlan";
|
|
@@ -151,10 +152,18 @@ export class TeamMemberService extends DatabaseService<TeamMember> {
|
|
|
151
152
|
templateType: EmailTemplateType.InviteMember,
|
|
152
153
|
vars: {
|
|
153
154
|
signInLink: URL.fromString(
|
|
154
|
-
new URL(
|
|
155
|
+
new URL(
|
|
156
|
+
httpProtocol,
|
|
157
|
+
host,
|
|
158
|
+
new Route(AccountsRoute.toString()),
|
|
159
|
+
).toString(),
|
|
155
160
|
).toString(),
|
|
156
161
|
registerLink: URL.fromString(
|
|
157
|
-
new URL(
|
|
162
|
+
new URL(
|
|
163
|
+
httpProtocol,
|
|
164
|
+
host,
|
|
165
|
+
new Route(AccountsRoute.toString()),
|
|
166
|
+
).toString(),
|
|
158
167
|
)
|
|
159
168
|
.addRoute("/register")
|
|
160
169
|
.addQueryParam("email", email.toString(), true)
|