@asgardeo/auth-spa 0.2.21 → 0.2.22

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 (54) hide show
  1. package/README.md +46 -24
  2. package/dist/asgardeo-spa.production.esm.js +19 -16
  3. package/dist/asgardeo-spa.production.esm.js.map +1 -1
  4. package/dist/asgardeo-spa.production.js +19 -16
  5. package/dist/asgardeo-spa.production.js.map +1 -1
  6. package/dist/asgardeo-spa.production.min.js +1 -1
  7. package/dist/asgardeo-spa.production.min.js.map +1 -1
  8. package/dist/polyfilled/asgardeo-spa.production.esm.js +42 -39
  9. package/dist/polyfilled/asgardeo-spa.production.esm.js.map +1 -1
  10. package/dist/polyfilled/asgardeo-spa.production.js +42 -39
  11. package/dist/polyfilled/asgardeo-spa.production.js.map +1 -1
  12. package/dist/polyfilled/asgardeo-spa.production.min.js +1 -1
  13. package/dist/polyfilled/asgardeo-spa.production.min.js.map +1 -1
  14. package/dist/src/client.d.ts +6 -3
  15. package/dist/src/client.d.ts.map +1 -1
  16. package/dist/src/client.js +14 -11
  17. package/dist/src/client.js.map +1 -1
  18. package/dist/src/clients/main-thread-client.d.ts.map +1 -1
  19. package/dist/src/clients/main-thread-client.js +40 -34
  20. package/dist/src/clients/main-thread-client.js.map +1 -1
  21. package/dist/src/clients/web-worker-client.d.ts.map +1 -1
  22. package/dist/src/clients/web-worker-client.js +7 -9
  23. package/dist/src/clients/web-worker-client.js.map +1 -1
  24. package/dist/src/models/client.d.ts +2 -2
  25. package/dist/src/models/client.d.ts.map +1 -1
  26. package/dist/src/utils/crypto-utils.d.ts +2 -4
  27. package/dist/src/utils/crypto-utils.d.ts.map +1 -1
  28. package/dist/src/utils/crypto-utils.js +3 -6
  29. package/dist/src/utils/crypto-utils.js.map +1 -1
  30. package/dist/src/worker/client.worker.d.ts.map +1 -1
  31. package/dist/src/worker/client.worker.js +3 -3
  32. package/dist/src/worker/client.worker.js.map +1 -1
  33. package/dist/src/worker/worker-core.d.ts.map +1 -1
  34. package/dist/src/worker/worker-core.js +48 -42
  35. package/dist/src/worker/worker-core.js.map +1 -1
  36. package/dist/tsconfig.tsbuildinfo +1 -1
  37. package/package.json +2 -2
  38. package/src/client.ts +24 -35
  39. package/src/clients/main-thread-client.ts +63 -75
  40. package/src/clients/web-worker-client.ts +20 -30
  41. package/src/models/client.ts +2 -3
  42. package/src/utils/crypto-utils.ts +15 -19
  43. package/src/worker/client.worker.ts +5 -10
  44. package/src/worker/worker-core.ts +81 -89
  45. package/dist/src/exception/exception.d.ts +0 -27
  46. package/dist/src/exception/exception.d.ts.map +0 -1
  47. package/dist/src/exception/exception.js +0 -30
  48. package/dist/src/exception/exception.js.map +0 -1
  49. package/dist/src/exception/index.d.ts +0 -19
  50. package/dist/src/exception/index.d.ts.map +0 -1
  51. package/dist/src/exception/index.js +0 -19
  52. package/dist/src/exception/index.js.map +0 -1
  53. package/src/exception/exception.ts +0 -44
  54. package/src/exception/index.ts +0 -19
@@ -18,6 +18,7 @@
18
18
 
19
19
  import {
20
20
  AsgardeoAuthClient,
21
+ AsgardeoAuthException,
21
22
  AuthClientConfig,
22
23
  AuthorizationURLParams,
23
24
  BasicUserInfo,
@@ -31,7 +32,6 @@ import {
31
32
  TokenResponse
32
33
  } from "@asgardeo/auth-js";
33
34
  import { CUSTOM_GRANT_CONFIG } from "../constants";
34
- import { AsgardeoSPAException } from "../exception";
35
35
  import { SPAHelper } from "../helpers";
36
36
  import { HttpClient, HttpClientInstance } from "../http-client";
37
37
  import {
@@ -63,7 +63,7 @@ export const WebWorkerCore = async (
63
63
  if (requestConfig.attachToken) {
64
64
  request.headers = {
65
65
  ...request.headers,
66
- Authorization: `Bearer ${await _authenticationClient.getAccessToken()}`
66
+ Authorization: `Bearer ${ await _authenticationClient.getAccessToken() }`
67
67
  };
68
68
  }
69
69
  };
@@ -84,13 +84,13 @@ export const WebWorkerCore = async (
84
84
 
85
85
  const httpRequest = async (requestConfig: HttpRequestConfig): Promise<HttpResponse> => {
86
86
  let matches = false;
87
- const config = await _dataLayer.getConfigData();
87
+ const serverOrigin = (config as any).baseUrl || (config as any).serverOrigin;
88
88
 
89
89
  for (const baseUrl of [
90
90
  ...((await _dataLayer.getConfigData())?.resourceServerURLs ?? []),
91
- config?.serverOrigin
91
+ serverOrigin
92
92
  ]) {
93
- if (requestConfig?.url?.startsWith(baseUrl)) {
93
+ if (baseUrl && requestConfig?.url?.startsWith(baseUrl)) {
94
94
  matches = true;
95
95
 
96
96
  break;
@@ -103,45 +103,43 @@ export const WebWorkerCore = async (
103
103
  .then((response: HttpResponse) => {
104
104
  return Promise.resolve(response);
105
105
  })
106
- .catch((error: HttpError) => {
106
+ .catch(async (error: HttpError) => {
107
107
  if (error?.response?.status === 401 || !error?.response) {
108
- return refreshAccessToken()
109
- .then(() => {
110
- return _httpClient
111
- .request(requestConfig)
112
- .then((response) => {
113
- return Promise.resolve(response);
114
- })
115
- .catch((error) => {
116
- return Promise.reject(error);
117
- });
118
- })
119
- .catch((refreshError) => {
120
- return Promise.reject(
121
- new AsgardeoSPAException(
122
- "WORKER_CORE-HR-ES01",
123
- "worker-core",
124
- "httpRequest",
125
- "",
126
- "",
127
- refreshError
128
- )
129
- );
130
- });
108
+ let refreshAccessTokenResponse: BasicUserInfo;
109
+ try {
110
+ refreshAccessTokenResponse = await refreshAccessToken();
111
+ } catch (refreshError: any) {
112
+ throw new AsgardeoAuthException(
113
+ "SPA-WORKER_CORE-HR-SE01",
114
+ refreshError?.name ?? "Refresh token request failed.",
115
+ refreshError?.message ??
116
+ "An error occurred while trying to refresh the " +
117
+ "access token following a 401 response from the server."
118
+ );
119
+ }
120
+
121
+ if (refreshAccessTokenResponse) {
122
+ return _httpClient
123
+ .request(requestConfig)
124
+ .then((response) => {
125
+ return Promise.resolve(response);
126
+ })
127
+ .catch((error) => {
128
+ return Promise.reject(error);
129
+ });
130
+ }
131
131
  }
132
132
 
133
133
  return Promise.reject(error);
134
134
  });
135
135
  } else {
136
136
  return Promise.reject(
137
- new AsgardeoSPAException(
138
- "WORKER_CORE-HR-IV02",
139
- "worker-core",
140
- "httpRequest",
137
+ new AsgardeoAuthException(
138
+ "SPA-WORKER_CORE-HR-IV02",
141
139
  "Request to the provided endpoint is prohibited.",
142
140
  "Requests can only be sent to resource servers specified by the `resourceServerURLs`" +
143
- " attribute while initializing the SDK. The specified endpoint in this request " +
144
- "cannot be found among the `resourceServerURLs`"
141
+ " attribute while initializing the SDK. The specified endpoint in this request " +
142
+ "cannot be found among the `resourceServerURLs`"
145
143
  )
146
144
  );
147
145
  }
@@ -149,16 +147,17 @@ export const WebWorkerCore = async (
149
147
 
150
148
  const httpRequestAll = async (requestConfigs: HttpRequestConfig[]): Promise<HttpResponse[] | undefined> => {
151
149
  let matches = true;
152
- const config = await _dataLayer.getConfigData();
150
+
151
+ const serverOrigin = (config as any).baseUrl || (config as any).serverOrigin;
153
152
 
154
153
  for (const requestConfig of requestConfigs) {
155
154
  let urlMatches = false;
156
155
 
157
156
  for (const baseUrl of [
158
157
  ...((await _dataLayer.getConfigData())?.resourceServerURLs ?? []),
159
- config?.serverOrigin
158
+ serverOrigin
160
159
  ]) {
161
- if (requestConfig.url?.startsWith(baseUrl)) {
160
+ if (baseUrl && requestConfig.url?.startsWith(baseUrl)) {
162
161
  urlMatches = true;
163
162
 
164
163
  break;
@@ -186,35 +185,34 @@ export const WebWorkerCore = async (
186
185
  .then((responses: HttpResponse[]) => {
187
186
  return Promise.resolve(responses);
188
187
  })
189
- .catch((error: HttpError) => {
188
+ .catch(async (error: HttpError) => {
190
189
  if (error?.response?.status === 401) {
191
- return _authenticationClient
192
- .refreshAccessToken()
193
- .then(() => {
194
- return (
195
- _httpClient.all &&
196
- _httpClient
197
- .all(requests)
198
- .then((response) => {
199
- return Promise.resolve(response);
200
- })
201
- .catch((error) => {
202
- return Promise.reject(error);
203
- })
204
- );
205
- })
206
- .catch((refreshError) => {
207
- return Promise.reject(
208
- new AsgardeoSPAException(
209
- "WORKER_CORE-HRA-ES01",
210
- "worker-core",
211
- "httpRequestAll",
212
- "",
213
- "",
214
- refreshError
215
- )
216
- );
217
- });
190
+ let refreshAccessTokenResponse: BasicUserInfo;
191
+ try {
192
+ refreshAccessTokenResponse = await refreshAccessToken();
193
+ } catch (refreshError: any) {
194
+ throw new AsgardeoAuthException(
195
+ "SPA-WORKER_CORE-HRA-SE01",
196
+ refreshError?.name ?? "Refresh token request failed.",
197
+ refreshError?.message ??
198
+ "An error occurred while trying to refresh the " +
199
+ "access token following a 401 response from the server."
200
+ );
201
+ }
202
+
203
+ if (refreshAccessTokenResponse) {
204
+ return (
205
+ _httpClient.all &&
206
+ _httpClient
207
+ .all(requests)
208
+ .then((response) => {
209
+ return Promise.resolve(response);
210
+ })
211
+ .catch((error) => {
212
+ return Promise.reject(error);
213
+ })
214
+ );
215
+ }
218
216
  }
219
217
 
220
218
  return Promise.reject(error);
@@ -222,14 +220,12 @@ export const WebWorkerCore = async (
222
220
  );
223
221
  } else {
224
222
  return Promise.reject(
225
- new AsgardeoSPAException(
226
- "WORKER_CORE-HRA-IV02",
227
- "worker-core",
228
- "httpRequest",
223
+ new AsgardeoAuthException(
224
+ "SPA-WORKER_CORE-HRA-IV02",
229
225
  "Request to the provided endpoint is prohibited.",
230
226
  "Requests can only be sent to resource servers specified by the `resourceServerURLs`" +
231
- " attribute while initializing the SDK. The specified endpoint in this request " +
232
- "cannot be found among the `resourceServerURLs`"
227
+ " attribute while initializing the SDK. The specified endpoint in this request " +
228
+ "cannot be found among the `resourceServerURLs`"
233
229
  )
234
230
  );
235
231
  }
@@ -289,10 +285,8 @@ export const WebWorkerCore = async (
289
285
  }
290
286
 
291
287
  return Promise.reject(
292
- new AsgardeoSPAException(
293
- "WORKER_CORE-RAT1-NF01",
294
- "worker-core",
295
- "requestAccessToken",
288
+ new AsgardeoAuthException(
289
+ "SPA-WORKER_CORE-RAT1-NF01",
296
290
  "No authorization code.",
297
291
  "No authorization code was found."
298
292
  )
@@ -312,23 +306,23 @@ export const WebWorkerCore = async (
312
306
  const requestCustomGrant = async (config: CustomGrantConfig): Promise<BasicUserInfo | FetchResponse> => {
313
307
  let useDefaultEndpoint = true;
314
308
  let matches = false;
315
- const clientConfig = await _dataLayer.getConfigData();
309
+ const serverOrigin = (config as any).baseUrl || (config as any).serverOrigin;
316
310
 
317
311
  // If the config does not contains a token endpoint, default token endpoint will be used.
318
312
  if (config?.tokenEndpoint) {
319
313
  useDefaultEndpoint = false;
320
314
  for (const baseUrl of [
321
315
  ...((await _dataLayer.getConfigData())?.resourceServerURLs ?? []),
322
- clientConfig?.serverOrigin
316
+ serverOrigin
323
317
  ]) {
324
- if (config.tokenEndpoint?.startsWith(baseUrl)) {
318
+ if (baseUrl && config.tokenEndpoint?.startsWith(baseUrl)) {
325
319
  matches = true;
326
320
  break;
327
321
  }
328
322
  }
329
323
  }
330
324
 
331
- if(config.shouldReplayAfterRefresh) {
325
+ if (config.shouldReplayAfterRefresh) {
332
326
  _dataLayer.setTemporaryDataParameter(CUSTOM_GRANT_CONFIG, JSON.stringify(config));
333
327
  }
334
328
  if (useDefaultEndpoint || matches) {
@@ -348,14 +342,12 @@ export const WebWorkerCore = async (
348
342
  });
349
343
  } else {
350
344
  return Promise.reject(
351
- new AsgardeoSPAException(
352
- "WORKER_CORE-RCG-IV01",
353
- "worker-core",
354
- "requestCustomGrant",
345
+ new AsgardeoAuthException(
346
+ "SPA-WORKER_CORE-RCG-IV01",
355
347
  "Request to the provided endpoint is prohibited.",
356
348
  "Requests can only be sent to resource servers specified by the `resourceServerURLs`" +
357
- " attribute while initializing the SDK. The specified token endpoint in this request " +
358
- "cannot be found among the `resourceServerURLs`"
349
+ " attribute while initializing the SDK. The specified token endpoint in this request " +
350
+ "cannot be found among the `resourceServerURLs`"
359
351
  )
360
352
  );
361
353
  }
@@ -427,11 +419,11 @@ export const WebWorkerCore = async (
427
419
  };
428
420
 
429
421
  const getCustomGrantConfigData = async (): Promise<AuthClientConfig<CustomGrantConfig> | null> => {
430
- const configString = await _dataLayer.getTemporaryDataParameter(CUSTOM_GRANT_CONFIG);
431
- if(configString) {
422
+ const configString = await _dataLayer.getTemporaryDataParameter(CUSTOM_GRANT_CONFIG);
423
+ if (configString) {
432
424
  return JSON.parse(configString as string);
433
425
  } else {
434
- return null
426
+ return null;
435
427
  }
436
428
  };
437
429
 
@@ -1,27 +0,0 @@
1
- /**
2
- * Copyright (c) 2020, WSO2 Inc. (http://www.wso2.org) All Rights Reserved.
3
- *
4
- * WSO2 Inc. licenses this file to you under the Apache License,
5
- * Version 2.0 (the "License"); you may not use this file except
6
- * in compliance with the License.
7
- * You may obtain a copy of the License at
8
- *
9
- * http://www.apache.org/licenses/LICENSE-2.0
10
- *
11
- * Unless required by applicable law or agreed to in writing,
12
- * software distributed under the License is distributed on an
13
- * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
14
- * KIND, either express or implied. See the License for the
15
- * specific language governing permissions and limitations
16
- * under the License.
17
- */
18
- export declare class AsgardeoSPAException extends Error {
19
- name: string;
20
- code: string;
21
- file: string;
22
- method: string;
23
- description: string;
24
- error: AsgardeoSPAException | undefined;
25
- constructor(code: string, file: string, method: string, message: string, description: string, error?: AsgardeoSPAException | undefined);
26
- }
27
- //# sourceMappingURL=exception.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"exception.d.ts","sourceRoot":"","sources":["../../../src/exception/exception.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;GAgBG;AAEH,qBAAa,oBAAqB,SAAQ,KAAK;IACpC,IAAI,EAAE,MAAM,CAAC;IACb,IAAI,EAAE,MAAM,CAAC;IACb,IAAI,EAAE,MAAM,CAAC;IACb,MAAM,EAAE,MAAM,CAAC;IACf,WAAW,EAAE,MAAM,CAAC;IACpB,KAAK,EAAE,oBAAoB,GAAG,SAAS,CAAC;gBAG3C,IAAI,EAAE,MAAM,EACZ,IAAI,EAAE,MAAM,EACZ,MAAM,EAAE,MAAM,EACd,OAAO,EAAE,MAAM,EACf,WAAW,EAAE,MAAM,EACnB,KAAK,CAAC,EAAE,oBAAoB,GAAG,SAAS;CAW/C"}
@@ -1,30 +0,0 @@
1
- /**
2
- * Copyright (c) 2020, WSO2 Inc. (http://www.wso2.org) All Rights Reserved.
3
- *
4
- * WSO2 Inc. licenses this file to you under the Apache License,
5
- * Version 2.0 (the "License"); you may not use this file except
6
- * in compliance with the License.
7
- * You may obtain a copy of the License at
8
- *
9
- * http://www.apache.org/licenses/LICENSE-2.0
10
- *
11
- * Unless required by applicable law or agreed to in writing,
12
- * software distributed under the License is distributed on an
13
- * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
14
- * KIND, either express or implied. See the License for the
15
- * specific language governing permissions and limitations
16
- * under the License.
17
- */
18
- export class AsgardeoSPAException extends Error {
19
- constructor(code, file, method, message, description, error) {
20
- super(message !== null && message !== void 0 ? message : error === null || error === void 0 ? void 0 : error.message);
21
- this.name = this.constructor.name;
22
- this.code = code;
23
- this.file = file;
24
- this.method = method;
25
- this.error = error;
26
- this.description = description;
27
- Object.setPrototypeOf(this, new.target.prototype);
28
- }
29
- }
30
- //# sourceMappingURL=exception.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"exception.js","sourceRoot":"","sources":["../../../src/exception/exception.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;GAgBG;AAEH,MAAM,OAAO,oBAAqB,SAAQ,KAAK;IAQ3C,YACI,IAAY,EACZ,IAAY,EACZ,MAAc,EACd,OAAe,EACf,WAAmB,EACnB,KAAwC;QAExC,KAAK,CAAC,OAAO,aAAP,OAAO,cAAP,OAAO,GAAI,KAAK,aAAL,KAAK,uBAAL,KAAK,CAAE,OAAO,CAAC,CAAC;QACjC,IAAI,CAAC,IAAI,GAAG,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC;QAClC,IAAI,CAAC,IAAI,GAAG,IAAI,CAAC;QACjB,IAAI,CAAC,IAAI,GAAG,IAAI,CAAC;QACjB,IAAI,CAAC,MAAM,GAAG,MAAM,CAAC;QACrB,IAAI,CAAC,KAAK,GAAG,KAAK,CAAC;QACnB,IAAI,CAAC,WAAW,GAAG,WAAW,CAAC;QAC/B,MAAM,CAAC,cAAc,CAAC,IAAI,EAAE,GAAG,CAAC,MAAM,CAAC,SAAS,CAAC,CAAC;IACtD,CAAC;CACJ"}
@@ -1,19 +0,0 @@
1
- /**
2
- * Copyright (c) 2020, WSO2 Inc. (http://www.wso2.org) All Rights Reserved.
3
- *
4
- * WSO2 Inc. licenses this file to you under the Apache License,
5
- * Version 2.0 (the "License"); you may not use this file except
6
- * in compliance with the License.
7
- * You may obtain a copy of the License at
8
- *
9
- * http://www.apache.org/licenses/LICENSE-2.0
10
- *
11
- * Unless required by applicable law or agreed to in writing,
12
- * software distributed under the License is distributed on an
13
- * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
14
- * KIND, either express or implied. See the License for the
15
- * specific language governing permissions and limitations
16
- * under the License.
17
- */
18
- export * from "./exception";
19
- //# sourceMappingURL=index.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/exception/index.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;EAgBE;AAEF,cAAc,aAAa,CAAC"}
@@ -1,19 +0,0 @@
1
- /**
2
- * Copyright (c) 2020, WSO2 Inc. (http://www.wso2.org) All Rights Reserved.
3
- *
4
- * WSO2 Inc. licenses this file to you under the Apache License,
5
- * Version 2.0 (the "License"); you may not use this file except
6
- * in compliance with the License.
7
- * You may obtain a copy of the License at
8
- *
9
- * http://www.apache.org/licenses/LICENSE-2.0
10
- *
11
- * Unless required by applicable law or agreed to in writing,
12
- * software distributed under the License is distributed on an
13
- * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
14
- * KIND, either express or implied. See the License for the
15
- * specific language governing permissions and limitations
16
- * under the License.
17
- */
18
- export * from "./exception";
19
- //# sourceMappingURL=index.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/exception/index.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;EAgBE;AAEF,cAAc,aAAa,CAAC"}
@@ -1,44 +0,0 @@
1
- /**
2
- * Copyright (c) 2020, WSO2 Inc. (http://www.wso2.org) All Rights Reserved.
3
- *
4
- * WSO2 Inc. licenses this file to you under the Apache License,
5
- * Version 2.0 (the "License"); you may not use this file except
6
- * in compliance with the License.
7
- * You may obtain a copy of the License at
8
- *
9
- * http://www.apache.org/licenses/LICENSE-2.0
10
- *
11
- * Unless required by applicable law or agreed to in writing,
12
- * software distributed under the License is distributed on an
13
- * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
14
- * KIND, either express or implied. See the License for the
15
- * specific language governing permissions and limitations
16
- * under the License.
17
- */
18
-
19
- export class AsgardeoSPAException extends Error {
20
- public name: string;
21
- public code: string;
22
- public file: string;
23
- public method: string;
24
- public description: string;
25
- public error: AsgardeoSPAException | undefined;
26
-
27
- public constructor(
28
- code: string,
29
- file: string,
30
- method: string,
31
- message: string,
32
- description: string,
33
- error?: AsgardeoSPAException | undefined
34
- ) {
35
- super(message ?? error?.message);
36
- this.name = this.constructor.name;
37
- this.code = code;
38
- this.file = file;
39
- this.method = method;
40
- this.error = error;
41
- this.description = description;
42
- Object.setPrototypeOf(this, new.target.prototype);
43
- }
44
- }
@@ -1,19 +0,0 @@
1
- /**
2
- * Copyright (c) 2020, WSO2 Inc. (http://www.wso2.org) All Rights Reserved.
3
- *
4
- * WSO2 Inc. licenses this file to you under the Apache License,
5
- * Version 2.0 (the "License"); you may not use this file except
6
- * in compliance with the License.
7
- * You may obtain a copy of the License at
8
- *
9
- * http://www.apache.org/licenses/LICENSE-2.0
10
- *
11
- * Unless required by applicable law or agreed to in writing,
12
- * software distributed under the License is distributed on an
13
- * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
14
- * KIND, either express or implied. See the License for the
15
- * specific language governing permissions and limitations
16
- * under the License.
17
- */
18
-
19
- export * from "./exception";