@oneuptime/common 8.0.5574 → 8.0.5576

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (47) hide show
  1. package/Models/DatabaseModels/Index.ts +4 -0
  2. package/Models/DatabaseModels/StatusPagePrivateUserSession.ts +413 -0
  3. package/Models/DatabaseModels/UserSession.ts +318 -0
  4. package/Server/Infrastructure/Postgres/SchemaMigrations/1762890441920-MigrationName.ts +91 -0
  5. package/Server/Infrastructure/Postgres/SchemaMigrations/Index.ts +2 -0
  6. package/Server/Services/Index.ts +4 -0
  7. package/Server/Services/StatusPagePrivateUserSessionService.ts +368 -0
  8. package/Server/Services/UserSessionService.ts +350 -0
  9. package/Server/Utils/Cookie.ts +122 -5
  10. package/Server/Utils/Express.ts +100 -0
  11. package/Server/Utils/JsonWebToken.ts +8 -1
  12. package/Types/CookieName.ts +1 -0
  13. package/Types/JsonWebTokenData.ts +1 -0
  14. package/Types/Text.ts +15 -0
  15. package/UI/Utils/API/API.ts +39 -1
  16. package/Utils/API.ts +74 -5
  17. package/build/dist/Models/DatabaseModels/Index.js +4 -0
  18. package/build/dist/Models/DatabaseModels/Index.js.map +1 -1
  19. package/build/dist/Models/DatabaseModels/StatusPagePrivateUserSession.js +456 -0
  20. package/build/dist/Models/DatabaseModels/StatusPagePrivateUserSession.js.map +1 -0
  21. package/build/dist/Models/DatabaseModels/UserSession.js +356 -0
  22. package/build/dist/Models/DatabaseModels/UserSession.js.map +1 -0
  23. package/build/dist/Server/Infrastructure/Postgres/SchemaMigrations/1762890441920-MigrationName.js +38 -0
  24. package/build/dist/Server/Infrastructure/Postgres/SchemaMigrations/1762890441920-MigrationName.js.map +1 -0
  25. package/build/dist/Server/Infrastructure/Postgres/SchemaMigrations/Index.js +2 -0
  26. package/build/dist/Server/Infrastructure/Postgres/SchemaMigrations/Index.js.map +1 -1
  27. package/build/dist/Server/Services/Index.js +4 -0
  28. package/build/dist/Server/Services/Index.js.map +1 -1
  29. package/build/dist/Server/Services/StatusPagePrivateUserSessionService.js +214 -0
  30. package/build/dist/Server/Services/StatusPagePrivateUserSessionService.js.map +1 -0
  31. package/build/dist/Server/Services/UserSessionService.js +202 -0
  32. package/build/dist/Server/Services/UserSessionService.js.map +1 -0
  33. package/build/dist/Server/Utils/Cookie.js +74 -7
  34. package/build/dist/Server/Utils/Cookie.js.map +1 -1
  35. package/build/dist/Server/Utils/Express.js +62 -0
  36. package/build/dist/Server/Utils/Express.js.map +1 -1
  37. package/build/dist/Server/Utils/JsonWebToken.js +8 -2
  38. package/build/dist/Server/Utils/JsonWebToken.js.map +1 -1
  39. package/build/dist/Types/CookieName.js +1 -0
  40. package/build/dist/Types/CookieName.js.map +1 -1
  41. package/build/dist/Types/Text.js +9 -0
  42. package/build/dist/Types/Text.js.map +1 -1
  43. package/build/dist/UI/Utils/API/API.js +27 -0
  44. package/build/dist/UI/Utils/API/API.js.map +1 -1
  45. package/build/dist/Utils/API.js +36 -6
  46. package/build/dist/Utils/API.js.map +1 -1
  47. package/package.json +146 -146
@@ -4,6 +4,7 @@ import ObjectID from "../../Types/ObjectID";
4
4
  import { CookieOptions } from "express";
5
5
  import JSONWebToken from "./JsonWebToken";
6
6
  import User from "../../Models/DatabaseModels/User";
7
+ import StatusPagePrivateUser from "../../Models/DatabaseModels/StatusPagePrivateUser";
7
8
  import OneUptimeDate from "../../Types/Date";
8
9
  import PositiveNumber from "../../Types/PositiveNumber";
9
10
  import CookieName from "../../Types/CookieName";
@@ -12,6 +13,8 @@ import CaptureSpan from "./Telemetry/CaptureSpan";
12
13
  export default class CookieUtil {
13
14
  // set cookie with express response
14
15
 
16
+ private static readonly DEFAULT_ACCESS_TOKEN_EXPIRY_SECONDS: number = 15 * 60;
17
+
15
18
  @CaptureSpan()
16
19
  public static getCookiesFromCookieString(
17
20
  cookieString: string,
@@ -58,8 +61,23 @@ export default class CookieUtil {
58
61
  expressResponse: ExpressResponse;
59
62
  user: User;
60
63
  isGlobalLogin: boolean;
64
+ sessionId: ObjectID;
65
+ refreshToken: string;
66
+ refreshTokenExpiresAt: Date;
67
+ accessTokenExpiresInSeconds?: number;
61
68
  }): void {
62
- const { expressResponse: res, user, isGlobalLogin } = data;
69
+ const {
70
+ expressResponse: res,
71
+ user,
72
+ isGlobalLogin,
73
+ sessionId,
74
+ refreshToken,
75
+ refreshTokenExpiresAt,
76
+ } = data;
77
+
78
+ const accessTokenExpiresInSeconds: number =
79
+ data.accessTokenExpiresInSeconds ||
80
+ CookieUtil.DEFAULT_ACCESS_TOKEN_EXPIRY_SECONDS;
63
81
 
64
82
  const token: string = JSONWebToken.signUserLoginToken({
65
83
  tokenData: {
@@ -69,13 +87,24 @@ export default class CookieUtil {
69
87
  timezone: user.timezone || null,
70
88
  isMasterAdmin: user.isMasterAdmin!,
71
89
  isGlobalLogin: isGlobalLogin, // This is a general login without SSO. So, we will set this to true. This will give access to all the projects that dont require SSO.
90
+ sessionId: sessionId,
72
91
  },
73
- expiresInSeconds: OneUptimeDate.getSecondsInDays(new PositiveNumber(30)),
92
+ expiresInSeconds: accessTokenExpiresInSeconds,
74
93
  });
75
94
 
76
95
  // Set a cookie with token.
77
96
  CookieUtil.setCookie(res, CookieUtil.getUserTokenKey(), token, {
78
- maxAge: OneUptimeDate.getMillisecondsInDays(new PositiveNumber(30)),
97
+ maxAge: accessTokenExpiresInSeconds * 1000,
98
+ httpOnly: true,
99
+ });
100
+
101
+ const refreshTokenTtl: number = Math.max(
102
+ refreshTokenExpiresAt.getTime() - Date.now(),
103
+ 0,
104
+ );
105
+
106
+ CookieUtil.setCookie(res, CookieUtil.getRefreshTokenKey(), refreshToken, {
107
+ maxAge: refreshTokenTtl,
79
108
  httpOnly: true,
80
109
  });
81
110
 
@@ -148,6 +177,62 @@ export default class CookieUtil {
148
177
  }
149
178
  }
150
179
 
180
+ @CaptureSpan()
181
+ public static setStatusPagePrivateUserCookie(data: {
182
+ expressResponse: ExpressResponse;
183
+ user: StatusPagePrivateUser;
184
+ statusPageId: ObjectID;
185
+ sessionId: ObjectID;
186
+ refreshToken: string;
187
+ refreshTokenExpiresAt: Date;
188
+ accessTokenExpiresInSeconds?: number;
189
+ }): string {
190
+ const {
191
+ expressResponse: res,
192
+ user,
193
+ statusPageId,
194
+ sessionId,
195
+ refreshToken,
196
+ refreshTokenExpiresAt,
197
+ } = data;
198
+
199
+ const accessTokenExpiresInSeconds: number =
200
+ data.accessTokenExpiresInSeconds ||
201
+ CookieUtil.DEFAULT_ACCESS_TOKEN_EXPIRY_SECONDS;
202
+
203
+ const token: string = JSONWebToken.sign({
204
+ data: {
205
+ userId: user.id!,
206
+ email: user.email!,
207
+ statusPageId: statusPageId,
208
+ sessionId: sessionId,
209
+ },
210
+ expiresInSeconds: accessTokenExpiresInSeconds,
211
+ });
212
+
213
+ CookieUtil.setCookie(res, CookieUtil.getUserTokenKey(statusPageId), token, {
214
+ maxAge: accessTokenExpiresInSeconds * 1000,
215
+ httpOnly: true,
216
+ });
217
+
218
+ const refreshTokenTtl: number = Math.max(
219
+ refreshTokenExpiresAt.getTime() - Date.now(),
220
+ 0,
221
+ );
222
+
223
+ CookieUtil.setCookie(
224
+ res,
225
+ CookieUtil.getRefreshTokenKey(statusPageId),
226
+ refreshToken,
227
+ {
228
+ maxAge: refreshTokenTtl,
229
+ httpOnly: true,
230
+ },
231
+ );
232
+
233
+ return token;
234
+ }
235
+
151
236
  @CaptureSpan()
152
237
  public static setCookie(
153
238
  res: ExpressResponse,
@@ -155,7 +240,13 @@ export default class CookieUtil {
155
240
  value: string,
156
241
  options: CookieOptions,
157
242
  ): void {
158
- res.cookie(name, value, options);
243
+ const cookieOptions: CookieOptions = {
244
+ path: "/",
245
+ sameSite: "lax",
246
+ ...options,
247
+ };
248
+
249
+ res.cookie(name, value, cookieOptions);
159
250
  }
160
251
 
161
252
  // get cookie with express request
@@ -168,11 +259,25 @@ export default class CookieUtil {
168
259
  return req.cookies[name];
169
260
  }
170
261
 
262
+ @CaptureSpan()
263
+ public static getRefreshTokenFromExpressRequest(
264
+ req: ExpressRequest,
265
+ id?: ObjectID,
266
+ ): string | undefined {
267
+ return CookieUtil.getCookieFromExpressRequest(
268
+ req,
269
+ CookieUtil.getRefreshTokenKey(id),
270
+ );
271
+ }
272
+
171
273
  // delete cookie with express response
172
274
 
173
275
  @CaptureSpan()
174
276
  public static removeCookie(res: ExpressResponse, name: string): void {
175
- res.clearCookie(name);
277
+ res.clearCookie(name, {
278
+ path: "/",
279
+ sameSite: "lax",
280
+ });
176
281
  }
177
282
 
178
283
  // get all cookies with express request
@@ -190,6 +295,15 @@ export default class CookieUtil {
190
295
  return `${CookieName.Token}-${id.toString()}`;
191
296
  }
192
297
 
298
+ @CaptureSpan()
299
+ public static getRefreshTokenKey(id?: ObjectID): string {
300
+ if (!id) {
301
+ return CookieName.RefreshToken;
302
+ }
303
+
304
+ return `${CookieName.RefreshToken}-${id.toString()}`;
305
+ }
306
+
193
307
  @CaptureSpan()
194
308
  public static getUserSSOKey(id: ObjectID): string {
195
309
  return `${this.getSSOKey()}${id.toString()}`;
@@ -210,5 +324,8 @@ export default class CookieUtil {
210
324
  for (const key in cookies) {
211
325
  this.removeCookie(res, key);
212
326
  }
327
+
328
+ // Always attempt to remove refresh token cookie even if not parsed.
329
+ this.removeCookie(res, this.getRefreshTokenKey());
213
330
  }
214
331
  }
@@ -46,6 +46,15 @@ export interface OneUptimeResponse extends express.Response {
46
46
  logBody: JSONObjectOrArray;
47
47
  }
48
48
 
49
+ export type RequestDeviceInfo = {
50
+ deviceName?: string;
51
+ deviceType?: string;
52
+ deviceOS?: string;
53
+ deviceBrowser?: string;
54
+ };
55
+
56
+ type HeaderValue = string | Array<string> | null | undefined;
57
+
49
58
  class Express {
50
59
  private static app: express.Application;
51
60
  private static httpServer: Server;
@@ -101,3 +110,94 @@ class Express {
101
110
  }
102
111
 
103
112
  export default Express;
113
+
114
+ export const headerValueToString: (value: HeaderValue) => string | undefined = (
115
+ value: HeaderValue,
116
+ ): string | undefined => {
117
+ if (Array.isArray(value)) {
118
+ return value.length > 0 ? value[0] : undefined;
119
+ }
120
+
121
+ if (typeof value === "string" && value.trim().length > 0) {
122
+ return value.trim();
123
+ }
124
+
125
+ return undefined;
126
+ };
127
+
128
+ export const extractDeviceInfo: (req: ExpressRequest) => RequestDeviceInfo = (
129
+ req: ExpressRequest,
130
+ ): RequestDeviceInfo => {
131
+ const body: JSONObject = (req.body || {}) as JSONObject;
132
+ const data: JSONObject = (body["data"] as JSONObject) || {};
133
+
134
+ const getValue: (key: string) => string | undefined = (
135
+ key: string,
136
+ ): string | undefined => {
137
+ const headerKey: string = key.toLowerCase();
138
+ const camelKey: string = headerKey
139
+ .split("-")
140
+ .map((part: string, index: number) => {
141
+ if (index === 0) {
142
+ return part;
143
+ }
144
+
145
+ return part.charAt(0).toUpperCase() + part.slice(1);
146
+ })
147
+ .join("");
148
+
149
+ return (
150
+ headerValueToString(req.headers[`x-${headerKey}`]) ||
151
+ headerValueToString(body[camelKey] as HeaderValue) ||
152
+ headerValueToString(data[camelKey] as HeaderValue) ||
153
+ headerValueToString(body[key] as HeaderValue) ||
154
+ headerValueToString(data[key] as HeaderValue)
155
+ );
156
+ };
157
+
158
+ const result: RequestDeviceInfo = {};
159
+
160
+ const deviceName: string | undefined = getValue("device-name");
161
+ if (deviceName) {
162
+ result.deviceName = deviceName;
163
+ }
164
+
165
+ const deviceType: string | undefined = getValue("device-type");
166
+ if (deviceType) {
167
+ result.deviceType = deviceType;
168
+ }
169
+
170
+ const deviceOS: string | undefined = getValue("device-os");
171
+ if (deviceOS) {
172
+ result.deviceOS = deviceOS;
173
+ }
174
+
175
+ const deviceBrowser: string | undefined = getValue("device-browser");
176
+ if (deviceBrowser) {
177
+ result.deviceBrowser = deviceBrowser;
178
+ }
179
+
180
+ return result;
181
+ };
182
+
183
+ export const getClientIp: (req: ExpressRequest) => string | undefined = (
184
+ req: ExpressRequest,
185
+ ): string | undefined => {
186
+ const forwarded: string | Array<string> | undefined = req.headers[
187
+ "x-forwarded-for"
188
+ ] as string | Array<string> | undefined;
189
+
190
+ if (Array.isArray(forwarded) && forwarded.length > 0) {
191
+ return forwarded[0]?.split(",")[0]?.trim();
192
+ }
193
+
194
+ if (typeof forwarded === "string" && forwarded.trim().length > 0) {
195
+ return forwarded.split(",")[0]?.trim();
196
+ }
197
+
198
+ if (req.socket?.remoteAddress) {
199
+ return req.socket.remoteAddress;
200
+ }
201
+
202
+ return req.ip;
203
+ };
@@ -24,6 +24,7 @@ class JSONWebToken {
24
24
  isMasterAdmin: boolean;
25
25
  // If this is OneUptime username and password login. This is true, if this is SSO login. Then, this is false.
26
26
  isGlobalLogin: boolean;
27
+ sessionId: ObjectID;
27
28
  };
28
29
  expiresInSeconds: number;
29
30
  }): string {
@@ -67,9 +68,9 @@ class JSONWebToken {
67
68
  name: data.name?.toString() || "",
68
69
  projectId: data.projectId?.toString() || "",
69
70
  isMasterAdmin: data.isMasterAdmin,
71
+ sessionId: data.sessionId?.toString() || undefined,
70
72
  };
71
73
  }
72
-
73
74
  return JSONWebToken.signJsonPayload(jsonObj, expiresInSeconds);
74
75
  }
75
76
 
@@ -106,6 +107,9 @@ class JSONWebToken {
106
107
  isMasterAdmin: false,
107
108
  name: new Name("User"),
108
109
  isGlobalLogin: Boolean(decoded["isGlobalLogin"]),
110
+ sessionId: decoded["sessionId"]
111
+ ? new ObjectID(decoded["sessionId"] as string)
112
+ : undefined,
109
113
  };
110
114
  }
111
115
 
@@ -118,6 +122,9 @@ class JSONWebToken {
118
122
  : undefined,
119
123
  isMasterAdmin: Boolean(decoded["isMasterAdmin"]),
120
124
  isGlobalLogin: Boolean(decoded["isGlobalLogin"]),
125
+ sessionId: decoded["sessionId"]
126
+ ? new ObjectID(decoded["sessionId"] as string)
127
+ : undefined,
121
128
  };
122
129
  } catch (e) {
123
130
  logger.error(e);
@@ -2,6 +2,7 @@ enum CookieName {
2
2
  UserID = "user-id",
3
3
  Email = "user-email",
4
4
  Token = "user-token",
5
+ RefreshToken = "user-refresh-token",
5
6
  Name = "user-name",
6
7
  Timezone = "user-timezone",
7
8
  IsMasterAdmin = "user-is-master-admin",
@@ -11,4 +11,5 @@ export default interface JSONWebTokenData extends JSONObject {
11
11
  statusPageId?: ObjectID | undefined; // for status page logins.
12
12
  projectId?: ObjectID | undefined; // for SSO logins.
13
13
  isGlobalLogin: boolean; // If this is OneUptime username and password login. This is true, if this is SSO login. Then, this is false.
14
+ sessionId?: ObjectID | undefined;
14
15
  }
package/Types/Text.ts CHANGED
@@ -297,4 +297,19 @@ export default class Text {
297
297
  ): string {
298
298
  return sentence.split(search).join(replaceBy);
299
299
  }
300
+
301
+ public static truncate(
302
+ value: string | null | undefined,
303
+ maxLength: number,
304
+ ): string | undefined {
305
+ if (value === null || value === undefined) {
306
+ return undefined;
307
+ }
308
+
309
+ if (maxLength <= 0) {
310
+ return "";
311
+ }
312
+
313
+ return value.length > maxLength ? value.slice(0, maxLength) : value;
314
+ }
300
315
  }
@@ -3,6 +3,8 @@ import Navigation from "../Navigation";
3
3
  import PermissionUtil from "../Permission";
4
4
  import User from "../User";
5
5
  import HTTPErrorResponse from "../../../Types/API/HTTPErrorResponse";
6
+ import HTTPMethod from "../../../Types/API/HTTPMethod";
7
+ import HTTPResponse from "../../../Types/API/HTTPResponse";
6
8
  import Headers from "../../../Types/API/Headers";
7
9
  import Hostname from "../../../Types/API/Hostname";
8
10
  import Protocol from "../../../Types/API/Protocol";
@@ -11,14 +13,18 @@ import URL from "../../../Types/API/URL";
11
13
  import Dictionary from "../../../Types/Dictionary";
12
14
  import APIException from "../../../Types/Exception/ApiException";
13
15
  import Exception from "../../../Types/Exception/Exception";
16
+ import { JSONObject } from "../../../Types/JSON";
14
17
  import JSONFunctions from "../../../Types/JSONFunctions";
15
18
  import {
16
19
  UserGlobalAccessPermission,
17
20
  UserTenantAccessPermission,
18
21
  } from "../../../Types/Permission";
19
- import API from "../../../Utils/API";
22
+ import API, { AuthRetryContext } from "../../../Utils/API";
23
+ import { IDENTITY_URL } from "../../Config";
20
24
 
21
25
  class BaseAPI extends API {
26
+ private static refreshPromise: Promise<boolean> | null = null;
27
+
22
28
  public constructor(protocol: Protocol, hostname: Hostname, route?: Route) {
23
29
  super(protocol, hostname, route);
24
30
  }
@@ -134,6 +140,38 @@ class BaseAPI extends API {
134
140
  return error;
135
141
  }
136
142
 
143
+ protected static override async tryRefreshAuth(
144
+ _context: AuthRetryContext,
145
+ ): Promise<boolean> {
146
+ if (!this.refreshPromise) {
147
+ this.refreshPromise = (async () => {
148
+ const refreshUrl: URL = URL.fromString(
149
+ IDENTITY_URL.toString(),
150
+ ).addRoute("/refresh-token");
151
+
152
+ const result: HTTPResponse<JSONObject> | HTTPErrorResponse =
153
+ await super.fetch<JSONObject>({
154
+ method: HTTPMethod.POST,
155
+ url: refreshUrl,
156
+ options: {
157
+ skipAuthRefresh: true,
158
+ hasAttemptedAuthRefresh: true,
159
+ },
160
+ });
161
+
162
+ if (result instanceof HTTPResponse && result.isSuccess()) {
163
+ return true;
164
+ }
165
+
166
+ return false;
167
+ })().finally(() => {
168
+ this.refreshPromise = null;
169
+ });
170
+ }
171
+
172
+ return await this.refreshPromise;
173
+ }
174
+
137
175
  protected static getLoginRoute(): Route {
138
176
  return new Route("/accounts/login");
139
177
  }
package/Utils/API.ts CHANGED
@@ -24,6 +24,8 @@ export interface RequestOptions {
24
24
  // Per-request proxy agent support (Probe supplies these instead of mutating global axios defaults)
25
25
  httpAgent?: HttpAgent | undefined;
26
26
  httpsAgent?: HttpsAgent | undefined;
27
+ skipAuthRefresh?: boolean | undefined;
28
+ hasAttemptedAuthRefresh?: boolean | undefined;
27
29
  }
28
30
 
29
31
  export interface APIRequestOptions {
@@ -43,6 +45,18 @@ export interface APIFetchOptions {
43
45
  options?: RequestOptions;
44
46
  }
45
47
 
48
+ export interface AuthRetryContext {
49
+ error: HTTPErrorResponse;
50
+ request: {
51
+ method: HTTPMethod;
52
+ url: URL;
53
+ data?: JSONObject | JSONArray;
54
+ headers?: Headers;
55
+ params?: Dictionary<string>;
56
+ options?: RequestOptions;
57
+ };
58
+ }
59
+
46
60
  export default class API {
47
61
  private _protocol: Protocol = Protocol.HTTPS;
48
62
  public get protocol(): Protocol {
@@ -83,6 +97,12 @@ export default class API {
83
97
  }
84
98
  }
85
99
 
100
+ protected static async tryRefreshAuth(
101
+ _context: AuthRetryContext,
102
+ ): Promise<boolean> {
103
+ return false;
104
+ }
105
+
86
106
  public async get<
87
107
  T extends JSONObject | JSONArray | BaseModel | Array<BaseModel>,
88
108
  >(options: APIRequestOptions): Promise<HTTPResponse<T> | HTTPErrorResponse> {
@@ -421,14 +441,63 @@ export default class API {
421
441
  return response;
422
442
  } catch (e) {
423
443
  const error: Error | AxiosError = e as Error | AxiosError;
424
- let errorResponse: HTTPErrorResponse;
425
- if (axios.isAxiosError(error)) {
426
- // Do whatever you want with native error
427
- errorResponse = this.getErrorResponse(error);
428
- } else {
444
+
445
+ if (!axios.isAxiosError(error)) {
429
446
  throw new APIException(error.message);
430
447
  }
431
448
 
449
+ const errorResponse: HTTPErrorResponse = this.getErrorResponse(error);
450
+
451
+ if (
452
+ error.response?.status === 401 &&
453
+ !options?.skipAuthRefresh &&
454
+ !options?.hasAttemptedAuthRefresh
455
+ ) {
456
+ const retryUrl: URL = URL.fromString(url.toString());
457
+
458
+ const requestContext: AuthRetryContext["request"] = {
459
+ method,
460
+ url: retryUrl,
461
+ };
462
+
463
+ if (data) {
464
+ requestContext.data = data;
465
+ }
466
+
467
+ if (headers) {
468
+ requestContext.headers = headers;
469
+ }
470
+
471
+ if (params) {
472
+ requestContext.params = params;
473
+ }
474
+
475
+ if (options) {
476
+ requestContext.options = options;
477
+ }
478
+
479
+ const refreshed: boolean = await this.tryRefreshAuth({
480
+ error: errorResponse,
481
+ request: requestContext,
482
+ });
483
+
484
+ if (refreshed) {
485
+ const nextOptions: RequestOptions = {
486
+ ...(options || {}),
487
+ hasAttemptedAuthRefresh: true,
488
+ };
489
+
490
+ return await this.fetchInternal(
491
+ method,
492
+ retryUrl,
493
+ data,
494
+ headers,
495
+ params,
496
+ nextOptions,
497
+ );
498
+ }
499
+ }
500
+
432
501
  this.handleError(errorResponse);
433
502
  return errorResponse;
434
503
  }
@@ -116,6 +116,7 @@ import StatusPageHistoryChartBarColorRule from "./StatusPageHistoryChartBarColor
116
116
  import StatusPageOwnerTeam from "./StatusPageOwnerTeam";
117
117
  import StatusPageOwnerUser from "./StatusPageOwnerUser";
118
118
  import StatusPagePrivateUser from "./StatusPagePrivateUser";
119
+ import StatusPagePrivateUserSession from "./StatusPagePrivateUserSession";
119
120
  import StatusPageResource from "./StatusPageResource";
120
121
  import StatusPageSCIM from "./StatusPageSCIM";
121
122
  import StatusPageSSO from "./StatusPageSso";
@@ -128,6 +129,7 @@ import TeamComplianceSetting from "./TeamComplianceSetting";
128
129
  import TelemetryService from "./TelemetryService";
129
130
  import UsageBilling from "./TelemetryUsageBilling";
130
131
  import User from "./User";
132
+ import UserSession from "./UserSession";
131
133
  import UserCall from "./UserCall";
132
134
  // Notification Methods
133
135
  import UserEmail from "./UserEmail";
@@ -243,6 +245,7 @@ const AllModelTypes = [
243
245
  StatusPageFooterLink,
244
246
  StatusPageHeaderLink,
245
247
  StatusPagePrivateUser,
248
+ StatusPagePrivateUserSession,
246
249
  StatusPageHistoryChartBarColorRule,
247
250
  ScheduledMaintenanceState,
248
251
  ScheduledMaintenance,
@@ -323,6 +326,7 @@ const AllModelTypes = [
323
326
  CopilotActionTypePriority,
324
327
  ProbeOwnerTeam,
325
328
  ProbeOwnerUser,
329
+ UserSession,
326
330
  UserTotpAuth,
327
331
  UserWebAuthn,
328
332
  TelemetryIngestionKey,
@@ -1 +1 @@
1
- {"version":3,"file":"Index.js","sourceRoot":"","sources":["../../../../Models/DatabaseModels/Index.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"Index.js","sourceRoot":"","sources":["../../../../Models/DatabaseModels/Index.ts"],"names":[],"mappings":"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"}