@frontegg/rest-api 3.1.78 → 3.1.79-alpha.9987430273

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 (122) hide show
  1. package/BaseApiClient.d.ts +16 -0
  2. package/BaseApiClient.js +39 -0
  3. package/ContextHolder/index.d.ts +113 -28
  4. package/ContextHolder/index.js +163 -54
  5. package/FetchClient.d.ts +42 -0
  6. package/FetchClient.js +308 -0
  7. package/account-settings/index.d.ts +19 -7
  8. package/account-settings/index.js +23 -13
  9. package/applications/index.d.ts +49 -44
  10. package/applications/index.js +51 -37
  11. package/audits/index.d.ts +27 -15
  12. package/audits/index.js +27 -17
  13. package/auth/index.d.ts +817 -768
  14. package/auth/index.js +902 -721
  15. package/auth/secutiry-poilicy/index.d.ts +58 -102
  16. package/auth/secutiry-poilicy/index.js +122 -90
  17. package/auth/utils.d.ts +2 -2
  18. package/auth/utils.js +9 -8
  19. package/connectivity/index.d.ts +126 -27
  20. package/connectivity/index.js +147 -114
  21. package/directory/index.d.ts +31 -22
  22. package/directory/index.js +27 -15
  23. package/entitlements/index.d.ts +14 -8
  24. package/entitlements/index.js +12 -4
  25. package/feature-flags/index.d.ts +8 -2
  26. package/feature-flags/index.js +16 -8
  27. package/groups/index.d.ts +73 -49
  28. package/groups/index.js +64 -45
  29. package/impersonate/index.d.ts +15 -6
  30. package/impersonate/index.js +13 -5
  31. package/index.d.ts +154 -108
  32. package/index.js +109 -78
  33. package/interfaces.d.ts +10 -0
  34. package/metadata/index.d.ts +67 -7
  35. package/metadata/index.js +52 -32
  36. package/node/BaseApiClient.js +49 -0
  37. package/node/ContextHolder/index.js +163 -54
  38. package/node/FetchClient.js +326 -0
  39. package/node/account-settings/index.js +27 -16
  40. package/node/applications/index.js +51 -44
  41. package/node/audits/index.js +31 -20
  42. package/node/auth/index.js +768 -1035
  43. package/node/auth/secutiry-poilicy/index.js +125 -136
  44. package/node/auth/utils.js +9 -7
  45. package/node/connectivity/index.js +148 -187
  46. package/node/directory/index.js +29 -20
  47. package/node/entitlements/index.js +18 -5
  48. package/node/feature-flags/index.js +21 -9
  49. package/node/groups/index.js +65 -63
  50. package/node/impersonate/index.js +18 -5
  51. package/node/index.js +116 -71
  52. package/node/metadata/index.js +61 -52
  53. package/node/notifications/index.js +37 -27
  54. package/node/reports/index.js +78 -70
  55. package/node/roles/index.js +56 -51
  56. package/node/security-center/index.js +21 -9
  57. package/node/sub-tenants/index.js +90 -89
  58. package/node/subscriptions/index.js +69 -107
  59. package/node/subscriptions/invoices.js +25 -17
  60. package/node/subscriptions/managedSubscriptions.js +32 -27
  61. package/node/subscriptions/paymentMethods.js +27 -20
  62. package/node/subscriptions/paymentProviders.js +15 -6
  63. package/node/subscriptions/plans.js +17 -9
  64. package/node/subscriptions/providers/stripe/index.js +26 -21
  65. package/node/subscriptions/subscriptions.js +32 -27
  66. package/node/subscriptions/summaries.js +15 -6
  67. package/node/subscriptions/tenantConfiguration.js +17 -9
  68. package/node/subscriptions/vendorPublicConfigurations.js +15 -6
  69. package/node/teams/index.js +138 -148
  70. package/node/tenants/index.js +65 -60
  71. package/node/user-phone-numbers/index.js +32 -24
  72. package/node/users/index.js +58 -53
  73. package/node/vendor/index.js +17 -6
  74. package/notifications/index.d.ts +22 -16
  75. package/notifications/index.js +33 -22
  76. package/package.json +1 -1
  77. package/reports/index.d.ts +50 -44
  78. package/reports/index.js +75 -62
  79. package/roles/index.d.ts +44 -38
  80. package/roles/index.js +57 -41
  81. package/security-center/index.d.ts +14 -2
  82. package/security-center/index.js +15 -6
  83. package/sub-tenants/index.d.ts +57 -15
  84. package/sub-tenants/index.js +88 -68
  85. package/subscriptions/index.d.ts +56 -11
  86. package/subscriptions/index.js +58 -11
  87. package/subscriptions/invoices.d.ts +16 -13
  88. package/subscriptions/invoices.js +24 -14
  89. package/subscriptions/managedSubscriptions.d.ts +18 -15
  90. package/subscriptions/managedSubscriptions.js +33 -22
  91. package/subscriptions/paymentMethods.d.ts +16 -13
  92. package/subscriptions/paymentMethods.js +26 -17
  93. package/subscriptions/paymentProviders.d.ts +8 -5
  94. package/subscriptions/paymentProviders.js +11 -4
  95. package/subscriptions/plans.d.ts +11 -8
  96. package/subscriptions/plans.js +14 -6
  97. package/subscriptions/providers/stripe/index.d.ts +24 -21
  98. package/subscriptions/providers/stripe/index.js +27 -16
  99. package/subscriptions/subscriptions.d.ts +24 -21
  100. package/subscriptions/subscriptions.js +33 -22
  101. package/subscriptions/summaries.d.ts +7 -4
  102. package/subscriptions/summaries.js +10 -3
  103. package/subscriptions/tenantConfiguration.d.ts +6 -3
  104. package/subscriptions/tenantConfiguration.js +15 -7
  105. package/subscriptions/vendorPublicConfigurations.d.ts +5 -2
  106. package/subscriptions/vendorPublicConfigurations.js +11 -4
  107. package/teams/index.d.ts +37 -139
  108. package/teams/index.js +130 -99
  109. package/tenants/index.d.ts +25 -37
  110. package/tenants/index.js +62 -46
  111. package/user-phone-numbers/index.d.ts +32 -26
  112. package/user-phone-numbers/index.js +32 -19
  113. package/users/index.d.ts +21 -15
  114. package/users/index.js +60 -44
  115. package/vendor/index.d.ts +12 -6
  116. package/vendor/index.js +11 -4
  117. package/fetch.d.ts +0 -24
  118. package/fetch.js +0 -265
  119. package/node/fetch.js +0 -306
  120. package/node/subscriptions/providers/index.js +0 -18
  121. package/subscriptions/providers/index.d.ts +0 -1
  122. package/subscriptions/providers/index.js +0 -1
@@ -20,122 +20,231 @@ class ContextHolder {
20
20
  this.appName = null;
21
21
  this.sessionContext = void 0;
22
22
  this.basename = null;
23
+
24
+ this.setContext = context => {
25
+ this.context = context;
26
+ };
27
+
28
+ this.setAccessToken = accessToken => {
29
+ this.accessToken = accessToken;
30
+ };
31
+
32
+ this.setUser = user => {
33
+ this.user = user;
34
+ };
35
+
36
+ this.setRequestSource = requestSource => {
37
+ this.requestSource = requestSource;
38
+ };
39
+
40
+ this.setOnRedirectTo = onRedirectTo => {
41
+ this.onRedirectTo = onRedirectTo;
42
+ };
43
+
44
+ this.setLogout = logout => {
45
+ this.logout = logout;
46
+ };
47
+
48
+ this.setEntitlementsOptions = entitlementsOptions => {
49
+ this.entitlementsOptions = entitlementsOptions;
50
+ };
51
+
52
+ this.setSessionContext = sessionContext => {
53
+ this.sessionContext = sessionContext;
54
+ };
55
+
56
+ this.setAppName = appName => {
57
+ this.appName = appName;
58
+ };
59
+
60
+ this.getContext = () => {
61
+ var _this$context;
62
+
63
+ return (_this$context = this.context) != null ? _this$context : {
64
+ baseUrl: window.location.href,
65
+ tokenResolver: () => 'my-authentication-token',
66
+ logLevel: 'error'
67
+ };
68
+ };
69
+
70
+ this.getAccessToken = () => {
71
+ return this.accessToken;
72
+ };
73
+
74
+ this.getRequestSource = () => {
75
+ return this.requestSource;
76
+ };
77
+
78
+ this.getUser = () => {
79
+ return this.user;
80
+ };
81
+
82
+ this.shouldLoadEntitlements = () => {
83
+ var _this$entitlementsOpt;
84
+
85
+ return ((_this$entitlementsOpt = this.entitlementsOptions) == null ? void 0 : _this$entitlementsOpt.enabled) || false;
86
+ };
87
+
88
+ this.isSessionPerTenantEnabled = () => {
89
+ var _this$sessionContext;
90
+
91
+ return ((_this$sessionContext = this.sessionContext) == null ? void 0 : _this$sessionContext.enableSessionPerTenant) || false;
92
+ };
93
+
94
+ this.getAppName = () => {
95
+ return this.appName;
96
+ };
23
97
  }
24
98
 
25
- static getInstance() {
26
- if (!ContextHolder.instance) {
27
- ContextHolder.instance = new ContextHolder();
99
+ static default() {
100
+ return ContextHolder.getInstance(DEFAULT_APP_NAME);
101
+ }
102
+
103
+ static for(appName) {
104
+ return ContextHolder.getInstance(appName);
105
+ }
106
+
107
+ static getInstance(appName = 'default') {
108
+ if (!ContextHolder._apps) {
109
+ ContextHolder._apps = {};
110
+ }
111
+
112
+ if (ContextHolder._apps[appName]) {
113
+ return ContextHolder._apps[appName];
28
114
  }
29
115
 
30
- return ContextHolder.instance;
116
+ ContextHolder._apps[appName] = new ContextHolder();
117
+ return ContextHolder._apps[appName];
118
+ }
119
+
120
+ static createInstance(appName = 'default') {
121
+ ContextHolder._apps[appName] = new ContextHolder();
122
+ ContextHolder._apps[appName].appName = appName;
123
+ return ContextHolder._apps[appName];
124
+ }
125
+
126
+ static setContext(context, appName = 'default') {
127
+ ContextHolder.for(appName).context = context;
31
128
  }
32
129
 
33
- static setContext(context) {
34
- ContextHolder.getInstance().context = context;
130
+ static setAccessToken(accessToken, appName = DEFAULT_APP_NAME) {
131
+ ContextHolder.for(appName).accessToken = accessToken;
35
132
  }
36
133
 
37
- static setAccessToken(accessToken) {
38
- ContextHolder.getInstance().accessToken = accessToken;
134
+ static setBasename(basename, appName = DEFAULT_APP_NAME) {
135
+ ContextHolder.for(appName).basename = basename;
39
136
  }
40
137
 
41
- static setUser(user) {
42
- ContextHolder.getInstance().user = user;
138
+ setBasename(basename) {
139
+ this.basename = basename;
43
140
  }
44
141
 
45
- static setBasename(basename) {
46
- ContextHolder.getInstance().basename = basename;
142
+ static setUser(user, appName = 'default') {
143
+ ContextHolder.for(appName).user = user;
47
144
  }
48
145
 
49
- static setRequestSource(requestSource) {
50
- ContextHolder.getInstance().requestSource = requestSource;
146
+ static setRequestSource(requestSource, appName = 'default') {
147
+ ContextHolder.for(appName).requestSource = requestSource;
51
148
  }
52
149
 
53
- static setOnRedirectTo(onRedirectTo) {
54
- ContextHolder.getInstance().onRedirectTo = onRedirectTo;
150
+ static setOnRedirectTo(onRedirectTo, appName = 'default') {
151
+ ContextHolder.for(appName).onRedirectTo = onRedirectTo;
55
152
  }
56
153
 
57
- static setLogout(logout, logoutUrl) {
58
- ContextHolder.getInstance().logout = callback => {
154
+ static setLogout(logout, logoutUrl, appName = 'default') {
155
+ const context = ContextHolder.for(appName);
156
+
157
+ context.logout = callback => {
59
158
  if (!callback) {
60
- ContextHolder.onRedirectTo(logoutUrl);
159
+ context.onRedirectTo(logoutUrl, undefined);
61
160
  } else {
62
161
  logout(callback);
63
162
  }
64
163
  };
65
164
  }
66
165
 
67
- static setEntitlementsOptions(entitlementsOptions) {
68
- ContextHolder.getInstance().entitlementsOptions = entitlementsOptions;
166
+ static setEntitlementsOptions(entitlementsOptions, appName = 'default') {
167
+ ContextHolder.for(appName).entitlementsOptions = entitlementsOptions;
69
168
  }
70
169
 
71
- static setSessionContext(sessionContext) {
72
- const instance = ContextHolder.getInstance();
73
- instance.sessionContext = sessionContext;
170
+ static setSessionContext(sessionContext, appName = 'default') {
171
+ ContextHolder.for(appName).sessionContext = sessionContext;
74
172
  }
75
173
 
76
174
  static setAppName(appName) {
77
- ContextHolder.getInstance().appName = appName;
175
+ ContextHolder.for(appName).appName = appName;
78
176
  }
79
177
 
80
- static getContext() {
81
- var _ContextHolder$getIns;
178
+ static getContext(appName = 'default') {
179
+ var _ContextHolder$for$co;
82
180
 
83
- return (_ContextHolder$getIns = ContextHolder.getInstance().context) != null ? _ContextHolder$getIns : {
181
+ return (_ContextHolder$for$co = ContextHolder.for(appName).context) != null ? _ContextHolder$for$co : {
84
182
  baseUrl: window.location.href,
85
183
  tokenResolver: () => 'my-authentication-token',
86
184
  logLevel: 'error'
87
185
  };
88
186
  }
89
187
 
90
- static getAccessToken() {
91
- return ContextHolder.getInstance().accessToken;
92
- }
93
-
94
- static getRequestSource() {
95
- return ContextHolder.getInstance().requestSource;
188
+ static getAccessToken(appName = 'default') {
189
+ return ContextHolder.for(appName).accessToken;
96
190
  }
97
191
 
98
- static getUser() {
99
- return ContextHolder.getInstance().user;
192
+ static getRequestSource(appName = 'default') {
193
+ return ContextHolder.for(appName).requestSource;
100
194
  }
101
195
 
102
196
  static getBasename() {
103
197
  return ContextHolder.getInstance().basename;
104
198
  }
105
199
 
106
- static onRedirectTo(path, opts) {
107
- return ContextHolder.getInstance().onRedirectTo(path, opts);
200
+ static getUser(appName = 'default') {
201
+ return ContextHolder.for(appName).user;
202
+ }
203
+
204
+ static onRedirectTo(path, opts, appName = 'default') {
205
+ return ContextHolder.for(appName).onRedirectTo(path, opts);
108
206
  }
109
207
 
110
- static logout(callback) {
111
- return ContextHolder.getInstance().logout(callback);
208
+ static logout(callback, appName = 'default') {
209
+ return ContextHolder.for(appName).logout(callback);
112
210
  }
113
211
 
114
- static shouldLoadEntitlements() {
115
- var _ContextHolder$getIns2;
212
+ static shouldLoadEntitlements(appName = 'default') {
213
+ var _ContextHolder$for$en;
116
214
 
117
- return ((_ContextHolder$getIns2 = ContextHolder.getInstance().entitlementsOptions) == null ? void 0 : _ContextHolder$getIns2.enabled) || false;
215
+ return ((_ContextHolder$for$en = ContextHolder.for(appName).entitlementsOptions) == null ? void 0 : _ContextHolder$for$en.enabled) || false;
118
216
  }
119
217
 
120
- static isSessionPerTenantEnabled() {
121
- var _ContextHolder$getIns3;
218
+ static isSessionPerTenantEnabled(appName = 'default') {
219
+ var _ContextHolder$for$se;
122
220
 
123
- return ((_ContextHolder$getIns3 = ContextHolder.getInstance().sessionContext) == null ? void 0 : _ContextHolder$getIns3.enableSessionPerTenant) || false;
221
+ return ((_ContextHolder$for$se = ContextHolder.for(appName).sessionContext) == null ? void 0 : _ContextHolder$for$se.enableSessionPerTenant) || false;
124
222
  }
125
223
 
126
- static getAppName() {
127
- return ContextHolder.getInstance().appName;
224
+ static getAppName(appName = 'default') {
225
+ return ContextHolder.for(appName).appName;
128
226
  }
129
227
 
130
228
  }
131
229
 
132
230
  exports.ContextHolder = ContextHolder;
133
- ContextHolder.instance = void 0;
231
+ ContextHolder._apps = void 0;
232
+ const DEFAULT_APP_NAME = 'default';
134
233
  const FronteggContext = {
135
- getContext: () => ContextHolder.getContext(),
136
- getAccessToken: () => ContextHolder.getAccessToken(),
137
- getUser: () => ContextHolder.getUser(),
138
- onRedirectTo: (path, opts) => ContextHolder.onRedirectTo(path, opts),
139
- logout: callback => ContextHolder.logout(callback)
234
+ getContext: () => ContextHolder.getContext(DEFAULT_APP_NAME),
235
+ getAccessToken: () => ContextHolder.getAccessToken(DEFAULT_APP_NAME),
236
+ setAccessToken: accessToken => ContextHolder.setAccessToken(accessToken, DEFAULT_APP_NAME),
237
+ getUser: () => ContextHolder.getUser(DEFAULT_APP_NAME),
238
+ setUser: user => ContextHolder.setUser(user, DEFAULT_APP_NAME),
239
+ onRedirectTo: (path, opts) => ContextHolder.onRedirectTo(path, opts, DEFAULT_APP_NAME),
240
+ setOnRedirectTo: onRedirectTo => ContextHolder.setOnRedirectTo(onRedirectTo, DEFAULT_APP_NAME),
241
+ logout: callback => ContextHolder.logout(callback, DEFAULT_APP_NAME),
242
+ getRequestSource: () => ContextHolder.getRequestSource(DEFAULT_APP_NAME),
243
+ setRequestSource: requestSource => ContextHolder.setRequestSource(requestSource, DEFAULT_APP_NAME),
244
+ isSessionPerTenantEnabled: () => ContextHolder.isSessionPerTenantEnabled(DEFAULT_APP_NAME),
245
+ shouldLoadEntitlements: () => ContextHolder.shouldLoadEntitlements(DEFAULT_APP_NAME),
246
+ getAppName: () => ContextHolder.getAppName(DEFAULT_APP_NAME),
247
+ setEntitlementsOptions: entitlementsOptions => ContextHolder.setEntitlementsOptions(entitlementsOptions, DEFAULT_APP_NAME),
248
+ setSessionContext: sessionContext => ContextHolder.setSessionContext(sessionContext, DEFAULT_APP_NAME)
140
249
  };
141
250
  exports.FronteggContext = FronteggContext;
@@ -0,0 +1,326 @@
1
+ "use strict";
2
+
3
+ var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
4
+
5
+ Object.defineProperty(exports, "__esModule", {
6
+ value: true
7
+ });
8
+ exports.default = exports.FetchClient = void 0;
9
+
10
+ var _extends2 = _interopRequireDefault(require("@babel/runtime/helpers/extends"));
11
+
12
+ var _ContextHolder = require("./ContextHolder");
13
+
14
+ var _error = require("./error");
15
+
16
+ var _constants = require("./constants");
17
+
18
+ var _interfaces = require("./interfaces");
19
+
20
+ class FetchClient {
21
+ constructor(appName) {
22
+ this.appName = void 0;
23
+
24
+ this.getFronteggContext = () => {
25
+ return _ContextHolder.ContextHolder.for(this.appName);
26
+ };
27
+
28
+ this.prepareUrl = async (url, params) => {
29
+ const context = this.getFronteggContext().getContext();
30
+ const baseUrl = this.getContextBaseUrl(url);
31
+ const paramsToSend = await this.buildQueryParams(context, params);
32
+ let finalUrl = url.startsWith('http') ? url : `${baseUrl}${url}`;
33
+ const hasKeys = Object.keys(paramsToSend).length > 0;
34
+
35
+ if (paramsToSend && hasKeys) {
36
+ const urlParams = new URLSearchParams(paramsToSend);
37
+ finalUrl += `?${urlParams}`;
38
+ }
39
+
40
+ return finalUrl;
41
+ };
42
+
43
+ this.buildQueryParams = async (context, params) => {
44
+ if (!params) {
45
+ params = {};
46
+ }
47
+
48
+ const additionalQueryParams = await this.getAdditionalQueryParams(context);
49
+
50
+ for (const queryParam of additionalQueryParams) {
51
+ params[queryParam.key] = queryParam.value;
52
+ }
53
+
54
+ const keys = Object.keys(params);
55
+
56
+ for (const key of keys) {
57
+ const value = params[key];
58
+ params[key] = typeof value === 'object' ? JSON.stringify(value) : value;
59
+ }
60
+
61
+ return params;
62
+ };
63
+
64
+ this.getAdditionalQueryParams = async context => {
65
+ let output = [];
66
+
67
+ if (context.additionalQueryParamsResolver) {
68
+ output = await context.additionalQueryParamsResolver();
69
+ }
70
+
71
+ return output;
72
+ };
73
+
74
+ this.getAdditionalHeaders = async context => {
75
+ let output = [];
76
+
77
+ if (context.additionalHeadersResolver) {
78
+ output = await context.additionalHeadersResolver();
79
+ }
80
+
81
+ if (context.tenantResolver) {
82
+ const resolvedTenantResult = await context.tenantResolver();
83
+
84
+ if (!!(resolvedTenantResult != null && resolvedTenantResult.tenant)) {
85
+ output.push({
86
+ key: 'frontegg-login-alias',
87
+ value: resolvedTenantResult.tenant
88
+ });
89
+ }
90
+ }
91
+
92
+ if (context.appId) {
93
+ output.push({
94
+ key: 'frontegg-requested-application-id',
95
+ value: context.appId
96
+ });
97
+ }
98
+
99
+ return output;
100
+ };
101
+
102
+ this.buildRequestHeaders = async contentType => {
103
+ var _context$tokenResolve;
104
+
105
+ const fronteggContext = this.getFronteggContext();
106
+ const context = fronteggContext.getContext();
107
+ const headers = FetchClient.getMetadataHeaders(context);
108
+ const authToken = await ((_context$tokenResolve = context == null ? void 0 : context.tokenResolver) != null ? _context$tokenResolve : fronteggContext.getAccessToken)();
109
+ const requestSource = fronteggContext.getRequestSource();
110
+ const scopedTenant = FetchClient.getScopedTenant();
111
+
112
+ if (contentType) {
113
+ headers[_interfaces.fronteggHeaders.contentType] = contentType;
114
+ }
115
+
116
+ if (requestSource) {
117
+ headers[_interfaces.fronteggHeaders.source] = requestSource;
118
+ }
119
+
120
+ if (authToken) {
121
+ headers.Authorization = `Bearer ${authToken}`;
122
+ }
123
+
124
+ if (scopedTenant) {
125
+ headers[_interfaces.fronteggHeaders.scopedTenant] = scopedTenant;
126
+ }
127
+
128
+ for (const additionalHeader of await this.getAdditionalHeaders(context)) {
129
+ headers[`${additionalHeader.key}`] = `${additionalHeader.value}`;
130
+ }
131
+
132
+ return headers;
133
+ };
134
+
135
+ this.sendRequest = async opts => {
136
+ var _opts$method, _ref, _opts$credentials;
137
+
138
+ const context = this.getFronteggContext().getContext();
139
+ const headers = await this.buildRequestHeaders(opts.contentType);
140
+ const url = await this.prepareUrl(opts.url, opts.params);
141
+ const response = await fetch(url, {
142
+ body: opts.body ? opts.contentType === 'application/json' ? JSON.stringify(opts.body) : opts.body : null,
143
+ method: (_opts$method = opts.method) != null ? _opts$method : 'GET',
144
+ headers: (0, _extends2.default)({}, headers, opts.headers),
145
+ credentials: (_ref = (_opts$credentials = opts.credentials) != null ? _opts$credentials : context.requestCredentials) != null ? _ref : 'same-origin'
146
+ });
147
+
148
+ if (response.status === 302) {
149
+ window.location.href = await response.text();
150
+ return new Promise(() => {});
151
+ }
152
+
153
+ if (!response.ok) {
154
+ var _context$logLevel, _context$logLevel2;
155
+
156
+ if (response.status === 413) {
157
+ throw new _error.FronteggApiError('Error request is too large', response.status);
158
+ }
159
+
160
+ let errorMessage;
161
+ let isJsonResponse = true;
162
+
163
+ try {
164
+ errorMessage = await response.text();
165
+ errorMessage = JSON.parse(errorMessage);
166
+ } catch (e) {
167
+ isJsonResponse = false;
168
+ }
169
+
170
+ if (errorMessage.errors) {
171
+ errorMessage = errorMessage.errors.join(', ');
172
+ } else if (typeof errorMessage !== 'string') {
173
+ errorMessage = `Error ${response.status} - ${response.statusText}`;
174
+ }
175
+
176
+ if (response.status >= 400 && response.status < 500 && ['warn'].includes((_context$logLevel = context.logLevel) != null ? _context$logLevel : '')) console.warn(errorMessage);else if (response.status === 500 && ['warn', 'error'].includes((_context$logLevel2 = context.logLevel) != null ? _context$logLevel2 : '')) console.error(errorMessage);
177
+ throw new _error.FronteggApiError(isJsonResponse ? errorMessage : _constants.GENERIC_ERROR_MESSAGE, response.status);
178
+ }
179
+
180
+ if (!opts.responseType || opts.responseType === 'json') {
181
+ try {
182
+ return await response.json();
183
+ } catch (e) {
184
+ return {};
185
+ }
186
+ } else if (opts.responseType === 'blob') {
187
+ const {
188
+ outputFileName
189
+ } = opts.params;
190
+ return await response.blob().then(blob => URL.createObjectURL(blob)).then(url => {
191
+ const tempLink = document.createElement('a');
192
+ tempLink.href = url;
193
+ tempLink.setAttribute('download', outputFileName || 'output');
194
+ tempLink.click();
195
+ });
196
+ } else {
197
+ return await response.text();
198
+ }
199
+ };
200
+
201
+ this.get = async (url, params, opts) => this.sendRequest((0, _extends2.default)({
202
+ url,
203
+ method: 'GET',
204
+ contentType: 'application/json',
205
+ params
206
+ }, opts));
207
+
208
+ this.post = async (url, body, opts) => this.sendRequest((0, _extends2.default)({
209
+ url,
210
+ method: 'POST',
211
+ contentType: 'application/json',
212
+ body
213
+ }, opts));
214
+
215
+ this.patch = async (url, body, opts) => this.sendRequest((0, _extends2.default)({
216
+ url,
217
+ method: 'PATCH',
218
+ contentType: 'application/json',
219
+ body
220
+ }, opts));
221
+
222
+ this.put = async (url, body, opts) => this.sendRequest((0, _extends2.default)({
223
+ url,
224
+ method: 'PUT',
225
+ contentType: 'application/json',
226
+ body
227
+ }, opts));
228
+
229
+ this.delete = async (url, body, opts) => this.sendRequest((0, _extends2.default)({
230
+ url,
231
+ method: 'DELETE',
232
+ contentType: 'application/json',
233
+ body
234
+ }, opts));
235
+
236
+ this.postDownload = async (url, body, params, opts) => this.sendRequest((0, _extends2.default)({
237
+ url,
238
+ method: 'POST',
239
+ contentType: 'application/json',
240
+ responseType: 'blob',
241
+ body,
242
+ params
243
+ }, opts));
244
+
245
+ this.extractHeadersFromOptions = (options = {}) => (0, _extends2.default)({}, options.jwt ? {
246
+ Authorization: options.jwt
247
+ } : {});
248
+
249
+ this.getBaseUrl = (context, url, withFronteggPrefix = true) => {
250
+ return FetchClient.getBaseUrl(context, url, withFronteggPrefix);
251
+ };
252
+
253
+ this.getContextBaseUrl = (url, withFronteggPrefix = true) => {
254
+ const context = this.getFronteggContext().getContext();
255
+ return this.getBaseUrl(context, url, withFronteggPrefix);
256
+ };
257
+
258
+ this.getMetadataHeaders = context => {
259
+ return FetchClient.getMetadataHeaders(context);
260
+ };
261
+
262
+ this.getContextMetadataHeaders = () => {
263
+ const context = this.getFronteggContext().getContext();
264
+ return FetchClient.getMetadataHeaders(context);
265
+ };
266
+
267
+ this.appName = appName;
268
+ }
269
+
270
+ }
271
+
272
+ exports.FetchClient = FetchClient;
273
+
274
+ FetchClient.getBaseUrl = (context, url, withFronteggPrefix = true) => {
275
+ let baseUrl;
276
+
277
+ if (typeof context.baseUrl === 'function') {
278
+ baseUrl = context.baseUrl(url);
279
+ } else {
280
+ baseUrl = context.baseUrl;
281
+ }
282
+
283
+ const prefix = context.urlPrefix || 'frontegg';
284
+ const removePrefix = prefix === 'frontegg' && !withFronteggPrefix;
285
+
286
+ if (!baseUrl.endsWith('/')) {
287
+ baseUrl += '/';
288
+ }
289
+
290
+ if (!baseUrl.endsWith(prefix) && !removePrefix) {
291
+ baseUrl += prefix;
292
+ }
293
+
294
+ return baseUrl;
295
+ };
296
+
297
+ FetchClient.getMetadataHeaders = context => {
298
+ var _context$metadataHead, _context$metadataHead2;
299
+
300
+ const headers = {};
301
+
302
+ if (context != null && (_context$metadataHead = context.metadataHeaders) != null && _context$metadataHead.fronteggSdkVersion) {
303
+ headers[_interfaces.fronteggHeaders.fronteggSdkVersion] = context.metadataHeaders.fronteggSdkVersion;
304
+ }
305
+
306
+ if (context != null && (_context$metadataHead2 = context.metadataHeaders) != null && _context$metadataHead2.framework) {
307
+ headers[_interfaces.fronteggHeaders.frameWork] = context.metadataHeaders.framework;
308
+ }
309
+
310
+ return headers;
311
+ };
312
+
313
+ FetchClient.getScopedTenant = () => {
314
+ const urlParams = new URLSearchParams(window.location.search);
315
+ const scopedTenant = urlParams.get('tenantId');
316
+
317
+ if (scopedTenant) {
318
+ return scopedTenant;
319
+ }
320
+
321
+ return null;
322
+ };
323
+
324
+ var _default = new FetchClient('default');
325
+
326
+ exports.default = _default;
@@ -3,26 +3,37 @@
3
3
  Object.defineProperty(exports, "__esModule", {
4
4
  value: true
5
5
  });
6
- exports.getPublicSettings = getPublicSettings;
7
- exports.getSettings = getSettings;
8
- exports.updateSettings = updateSettings;
6
+ exports.default = exports.AccountSettingsApi = void 0;
9
7
 
10
8
  var _constants = require("../constants");
11
9
 
12
- var _fetch = require("../fetch");
10
+ var _BaseApiClient = require("../BaseApiClient");
13
11
 
14
- async function updateSettings(body, options) {
15
- return (0, _fetch.Put)(_constants.urls.tenants.accountSettings.v1, body, {
16
- headers: (0, _fetch.extractHeadersFromOptions)(options)
17
- });
18
- }
12
+ class AccountSettingsApi extends _BaseApiClient.BaseApiClient {
13
+ constructor(appName) {
14
+ super(appName);
15
+
16
+ this.updateSettings = async (body, options) => {
17
+ return this.put(_constants.urls.tenants.accountSettings.v1, body, {
18
+ headers: this.extractHeadersFromOptions(options)
19
+ });
20
+ };
21
+
22
+ this.getSettings = async options => {
23
+ return this.get(_constants.urls.tenants.accountSettings.v1, undefined, {
24
+ headers: this.extractHeadersFromOptions(options)
25
+ });
26
+ };
27
+
28
+ this.getPublicSettings = async () => {
29
+ return this.get(`${_constants.urls.tenants.accountSettings.v1}/public`);
30
+ };
31
+ }
19
32
 
20
- async function getSettings(options) {
21
- return (0, _fetch.Get)(_constants.urls.tenants.accountSettings.v1, undefined, {
22
- headers: (0, _fetch.extractHeadersFromOptions)(options)
23
- });
24
33
  }
25
34
 
26
- async function getPublicSettings() {
27
- return (0, _fetch.Get)(`${_constants.urls.tenants.accountSettings.v1}/public`);
28
- }
35
+ exports.AccountSettingsApi = AccountSettingsApi;
36
+
37
+ var _default = new AccountSettingsApi('default');
38
+
39
+ exports.default = _default;