@odx/auth 16.2.0 → 17.0.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/CHANGELOG.md CHANGED
@@ -1,5 +1,13 @@
1
1
  # @odx/auth
2
2
 
3
+ ## 17.0.0
4
+
5
+ ### Major Changes
6
+
7
+ - 3ce938e: Removed language code parser for `preferredLanguage` identity claim in serviceConnectUserProfulePlugin and serviceconnectUserLanguagePlugin.
8
+ The old behavior is know used for the added `languageCode` identity claim.
9
+ - f8c591d: Fix typo in ServiceConnectEnvironments enum name (was ServiceConnnectEnvironments)
10
+
3
11
  ## 16.2.0
4
12
 
5
13
  ### Minor Changes
@@ -1,2 +1,2 @@
1
1
  export {};
2
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYXV0aC50eXBpbmdzLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vbGlicy9hdXRoL3NyYy9saWIvYXV0aC50eXBpbmdzLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiIiLCJzb3VyY2VzQ29udGVudCI6WyJkZWNsYXJlIGdsb2JhbCB7XG4gIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBAdHlwZXNjcmlwdC1lc2xpbnQvbm8tbmFtZXNwYWNlXG4gIG5hbWVzcGFjZSBPZHhBdXRoIHtcbiAgICB0eXBlIFJhd0lkZW50aXR5Q2xhaW1zID0gUmVjb3JkPHN0cmluZywgdW5rbm93bj47XG5cbiAgICBpbnRlcmZhY2UgQXV0aFBsdWdpblJlc3VsdCB7XG4gICAgICBpbnN0aXR1dGlvbk5hbWU/OiBzdHJpbmc7XG4gICAgICBwcmVmZXJyZWRMYW5ndWFnZT86IHN0cmluZztcbiAgICB9XG5cbiAgICBpbnRlcmZhY2UgSWRlbnRpdHlDbGFpbXMgZXh0ZW5kcyBBdXRoUGx1Z2luUmVzdWx0IHtcbiAgICAgIHN1Yjogc3RyaW5nO1xuICAgICAgb2t0YWlkOiBzdHJpbmc7XG4gICAgICBpYXQ6IG51bWJlcjtcbiAgICAgIGF1ZDogc3RyaW5nO1xuXG4gICAgICBuYW1lOiBzdHJpbmc7XG4gICAgICBmaXJzdG5hbWU6IHN0cmluZztcbiAgICAgIGxhc3RuYW1lOiBzdHJpbmc7XG4gICAgICBkaXNwbGF5bmFtZTogc3RyaW5nO1xuICAgICAgcHJlZmVycmVkX3VzZXJuYW1lOiBzdHJpbmc7XG4gICAgICBlbWFpbDogc3RyaW5nO1xuICAgICAgaW5pdGlhbHM6IHN0cmluZztcblxuICAgICAgbG9jYWxlPzogc3RyaW5nO1xuICAgICAgem9uZWluZm8/OiBzdHJpbmc7XG4gICAgfVxuICB9XG59XG5cbmV4cG9ydCB7fTtcbiJdfQ==
2
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYXV0aC50eXBpbmdzLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vbGlicy9hdXRoL3NyYy9saWIvYXV0aC50eXBpbmdzLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiIiLCJzb3VyY2VzQ29udGVudCI6WyJkZWNsYXJlIGdsb2JhbCB7XG4gIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBAdHlwZXNjcmlwdC1lc2xpbnQvbm8tbmFtZXNwYWNlXG4gIG5hbWVzcGFjZSBPZHhBdXRoIHtcbiAgICB0eXBlIFJhd0lkZW50aXR5Q2xhaW1zID0gUmVjb3JkPHN0cmluZywgdW5rbm93bj47XG5cbiAgICBpbnRlcmZhY2UgQXV0aFBsdWdpblJlc3VsdCB7XG4gICAgICBpbnN0aXR1dGlvbk5hbWU/OiBzdHJpbmc7XG4gICAgICBsYW5ndWFnZUNvZGU/OiBzdHJpbmc7XG4gICAgICBwcmVmZXJyZWRMYW5ndWFnZT86IHN0cmluZztcbiAgICB9XG5cbiAgICBpbnRlcmZhY2UgSWRlbnRpdHlDbGFpbXMgZXh0ZW5kcyBBdXRoUGx1Z2luUmVzdWx0IHtcbiAgICAgIHN1Yjogc3RyaW5nO1xuICAgICAgb2t0YWlkOiBzdHJpbmc7XG4gICAgICBpYXQ6IG51bWJlcjtcbiAgICAgIGF1ZDogc3RyaW5nO1xuXG4gICAgICBuYW1lOiBzdHJpbmc7XG4gICAgICBmaXJzdG5hbWU6IHN0cmluZztcbiAgICAgIGxhc3RuYW1lOiBzdHJpbmc7XG4gICAgICBkaXNwbGF5bmFtZTogc3RyaW5nO1xuICAgICAgcHJlZmVycmVkX3VzZXJuYW1lOiBzdHJpbmc7XG4gICAgICBlbWFpbDogc3RyaW5nO1xuICAgICAgaW5pdGlhbHM6IHN0cmluZztcblxuICAgICAgbG9jYWxlPzogc3RyaW5nO1xuICAgICAgem9uZWluZm8/OiBzdHJpbmc7XG4gICAgfVxuICB9XG59XG5cbmV4cG9ydCB7fTtcbiJdfQ==
@@ -1,5 +1,5 @@
1
1
  import { buildUrl, isString } from '@odx/angular/utils';
2
- import { ServiceConnnectEnvironments } from '../service-connect.config';
2
+ import { ServiceConnectEnvironments } from '../service-connect.config';
3
3
  /**
4
4
  * Builds a service connect URL based on the provided environment and endpoints.
5
5
  *
@@ -9,8 +9,8 @@ import { ServiceConnnectEnvironments } from '../service-connect.config';
9
9
  */
10
10
  export function buildServiceConnectUrl(environment, ...endpoints) {
11
11
  if (isString(environment)) {
12
- return buildUrl(ServiceConnnectEnvironments[environment], ...endpoints);
12
+ return buildUrl(ServiceConnectEnvironments[environment], ...endpoints);
13
13
  }
14
14
  return buildUrl(environment.custom, ...endpoints);
15
15
  }
16
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYnVpbGQtc2VydmljZS1jb25uZWN0LXVybC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uL2xpYnMvYXV0aC9wbHVnaW5zL3NlcnZpY2UtY29ubmVjdC9zcmMvbGliL2hlbHBlcnMvYnVpbGQtc2VydmljZS1jb25uZWN0LXVybC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsUUFBUSxFQUFFLFFBQVEsRUFBRSxNQUFNLG9CQUFvQixDQUFDO0FBRXhELE9BQU8sRUFBNkIsMkJBQTJCLEVBQUUsTUFBTSwyQkFBMkIsQ0FBQztBQUVuRzs7Ozs7O0dBTUc7QUFDSCxNQUFNLFVBQVUsc0JBQXNCLENBQUMsV0FBd0QsRUFBRSxHQUFHLFNBQW1CO0lBQ3JILElBQUksUUFBUSxDQUFDLFdBQVcsQ0FBQyxFQUFFLENBQUM7UUFDMUIsT0FBTyxRQUFRLENBQUMsMkJBQTJCLENBQUMsV0FBVyxDQUFDLEVBQUUsR0FBRyxTQUFTLENBQUMsQ0FBQztJQUMxRSxDQUFDO0lBQ0QsT0FBTyxRQUFRLENBQUMsV0FBVyxDQUFDLE1BQU0sRUFBRSxHQUFHLFNBQVMsQ0FBQyxDQUFDO0FBQ3BELENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBidWlsZFVybCwgaXNTdHJpbmcgfSBmcm9tICdAb2R4L2FuZ3VsYXIvdXRpbHMnO1xuaW1wb3J0IHsgQXV0aEVudmlyb25tZW50IH0gZnJvbSAnQG9keC9hdXRoJztcbmltcG9ydCB7IFNlcnZpY2VDb25uZWN0RW52aXJvbm1lbnQsIFNlcnZpY2VDb25ubmVjdEVudmlyb25tZW50cyB9IGZyb20gJy4uL3NlcnZpY2UtY29ubmVjdC5jb25maWcnO1xuXG4vKipcbiAqIEJ1aWxkcyBhIHNlcnZpY2UgY29ubmVjdCBVUkwgYmFzZWQgb24gdGhlIHByb3ZpZGVkIGVudmlyb25tZW50IGFuZCBlbmRwb2ludHMuXG4gKlxuICogQHBhcmFtIHtTZXJ2aWNlQ29ubmVjdEVudmlyb25tZW50IHwgQXV0aEVudmlyb25tZW50fSBlbnZpcm9ubWVudCAtIFRoZSBlbnZpcm9ubWVudCBjb25maWd1cmF0aW9uIHdoaWNoIGNhbiBiZSBlaXRoZXIgYSBgU2VydmljZUNvbm5lY3RFbnZpcm9ubWVudGAgb3IgYEF1dGhFbnZpcm9ubWVudGAuXG4gKiBAcGFyYW0ge3N0cmluZ1tdfSBlbmRwb2ludHMgLSBBIGxpc3Qgb2YgZW5kcG9pbnQgc3RyaW5ncyB0byBiZSBhcHBlbmRlZCB0byB0aGUgYmFzZSBVUkwuXG4gKiBAcmV0dXJucyB7c3RyaW5nfSAtIFRoZSBjb25zdHJ1Y3RlZCBzZXJ2aWNlIGNvbm5lY3QgVVJMIGFzIGEgc3RyaW5nLlxuICovXG5leHBvcnQgZnVuY3Rpb24gYnVpbGRTZXJ2aWNlQ29ubmVjdFVybChlbnZpcm9ubWVudDogU2VydmljZUNvbm5lY3RFbnZpcm9ubWVudCB8IEF1dGhFbnZpcm9ubWVudCwgLi4uZW5kcG9pbnRzOiBzdHJpbmdbXSk6IHN0cmluZyB7XG4gIGlmIChpc1N0cmluZyhlbnZpcm9ubWVudCkpIHtcbiAgICByZXR1cm4gYnVpbGRVcmwoU2VydmljZUNvbm5uZWN0RW52aXJvbm1lbnRzW2Vudmlyb25tZW50XSwgLi4uZW5kcG9pbnRzKTtcbiAgfVxuICByZXR1cm4gYnVpbGRVcmwoZW52aXJvbm1lbnQuY3VzdG9tLCAuLi5lbmRwb2ludHMpO1xufVxuIl19
16
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYnVpbGQtc2VydmljZS1jb25uZWN0LXVybC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uL2xpYnMvYXV0aC9wbHVnaW5zL3NlcnZpY2UtY29ubmVjdC9zcmMvbGliL2hlbHBlcnMvYnVpbGQtc2VydmljZS1jb25uZWN0LXVybC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsUUFBUSxFQUFFLFFBQVEsRUFBRSxNQUFNLG9CQUFvQixDQUFDO0FBRXhELE9BQU8sRUFBNkIsMEJBQTBCLEVBQUUsTUFBTSwyQkFBMkIsQ0FBQztBQUVsRzs7Ozs7O0dBTUc7QUFDSCxNQUFNLFVBQVUsc0JBQXNCLENBQUMsV0FBd0QsRUFBRSxHQUFHLFNBQW1CO0lBQ3JILElBQUksUUFBUSxDQUFDLFdBQVcsQ0FBQyxFQUFFLENBQUM7UUFDMUIsT0FBTyxRQUFRLENBQUMsMEJBQTBCLENBQUMsV0FBVyxDQUFDLEVBQUUsR0FBRyxTQUFTLENBQUMsQ0FBQztJQUN6RSxDQUFDO0lBQ0QsT0FBTyxRQUFRLENBQUMsV0FBVyxDQUFDLE1BQU0sRUFBRSxHQUFHLFNBQVMsQ0FBQyxDQUFDO0FBQ3BELENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBidWlsZFVybCwgaXNTdHJpbmcgfSBmcm9tICdAb2R4L2FuZ3VsYXIvdXRpbHMnO1xuaW1wb3J0IHsgQXV0aEVudmlyb25tZW50IH0gZnJvbSAnQG9keC9hdXRoJztcbmltcG9ydCB7IFNlcnZpY2VDb25uZWN0RW52aXJvbm1lbnQsIFNlcnZpY2VDb25uZWN0RW52aXJvbm1lbnRzIH0gZnJvbSAnLi4vc2VydmljZS1jb25uZWN0LmNvbmZpZyc7XG5cbi8qKlxuICogQnVpbGRzIGEgc2VydmljZSBjb25uZWN0IFVSTCBiYXNlZCBvbiB0aGUgcHJvdmlkZWQgZW52aXJvbm1lbnQgYW5kIGVuZHBvaW50cy5cbiAqXG4gKiBAcGFyYW0ge1NlcnZpY2VDb25uZWN0RW52aXJvbm1lbnQgfCBBdXRoRW52aXJvbm1lbnR9IGVudmlyb25tZW50IC0gVGhlIGVudmlyb25tZW50IGNvbmZpZ3VyYXRpb24gd2hpY2ggY2FuIGJlIGVpdGhlciBhIGBTZXJ2aWNlQ29ubmVjdEVudmlyb25tZW50YCBvciBgQXV0aEVudmlyb25tZW50YC5cbiAqIEBwYXJhbSB7c3RyaW5nW119IGVuZHBvaW50cyAtIEEgbGlzdCBvZiBlbmRwb2ludCBzdHJpbmdzIHRvIGJlIGFwcGVuZGVkIHRvIHRoZSBiYXNlIFVSTC5cbiAqIEByZXR1cm5zIHtzdHJpbmd9IC0gVGhlIGNvbnN0cnVjdGVkIHNlcnZpY2UgY29ubmVjdCBVUkwgYXMgYSBzdHJpbmcuXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBidWlsZFNlcnZpY2VDb25uZWN0VXJsKGVudmlyb25tZW50OiBTZXJ2aWNlQ29ubmVjdEVudmlyb25tZW50IHwgQXV0aEVudmlyb25tZW50LCAuLi5lbmRwb2ludHM6IHN0cmluZ1tdKTogc3RyaW5nIHtcbiAgaWYgKGlzU3RyaW5nKGVudmlyb25tZW50KSkge1xuICAgIHJldHVybiBidWlsZFVybChTZXJ2aWNlQ29ubmVjdEVudmlyb25tZW50c1tlbnZpcm9ubWVudF0sIC4uLmVuZHBvaW50cyk7XG4gIH1cbiAgcmV0dXJuIGJ1aWxkVXJsKGVudmlyb25tZW50LmN1c3RvbSwgLi4uZW5kcG9pbnRzKTtcbn1cbiJdfQ==
@@ -1,14 +1,23 @@
1
1
  import { getLanguageCode } from '@odx/angular/utils';
2
2
  import { serviceConnectPluginFactory } from './helpers';
3
3
  import { ServiceConnectEndpoints } from './service-connect.config';
4
+ /**
5
+ * Gets the preferred language from a service connect user response.
6
+ *
7
+ * @param {GetServiceConnectUserResponseDto | null} res - The service connect user response.
8
+ * @returns {string | undefined} - The language or undefined.
9
+ */
10
+ export function getServiceConnectUserLanguage(res) {
11
+ return res?.preferred_language || res?.language_code;
12
+ }
4
13
  /**
5
14
  * Gets the language code from a service connect user response.
6
15
  *
7
16
  * @param {GetServiceConnectUserResponseDto | null} res - The service connect user response.
8
17
  * @returns {string | undefined} - The language code or undefined.
9
18
  */
10
- export function getServiceConnectUserLanguage(res) {
11
- return (res?.preferred_language ?? res?.language_code) ? getLanguageCode(res.preferred_language ?? res.language_code) : undefined;
19
+ export function getServiceConnectUserLanguageCode(res) {
20
+ return res?.language_code ? getLanguageCode(res.language_code) : undefined;
12
21
  }
13
22
  /**
14
23
  * A plugin for fetching and parsing the user's preferred language from service connect.
@@ -20,6 +29,6 @@ export function getServiceConnectUserLanguage(res) {
20
29
  */
21
30
  export const serviceConnectUserLanguagePlugin = serviceConnectPluginFactory({
22
31
  endpoint: [ServiceConnectEndpoints.user],
23
- parseResponse: (res) => ({ preferredLanguage: getServiceConnectUserLanguage(res) }),
32
+ parseResponse: (res) => ({ preferredLanguage: getServiceConnectUserLanguage(res), languageCode: getServiceConnectUserLanguageCode(res) }),
24
33
  });
25
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2VydmljZS1jb25uZWN0LXVzZXItbGFuZ3VhZ2UucGx1Z2luLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vbGlicy9hdXRoL3BsdWdpbnMvc2VydmljZS1jb25uZWN0L3NyYy9saWIvc2VydmljZS1jb25uZWN0LXVzZXItbGFuZ3VhZ2UucGx1Z2luLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxlQUFlLEVBQUUsTUFBTSxvQkFBb0IsQ0FBQztBQUVyRCxPQUFPLEVBQUUsMkJBQTJCLEVBQUUsTUFBTSxXQUFXLENBQUM7QUFDeEQsT0FBTyxFQUFFLHVCQUF1QixFQUFFLE1BQU0sMEJBQTBCLENBQUM7QUFFbkU7Ozs7O0dBS0c7QUFDSCxNQUFNLFVBQVUsNkJBQTZCLENBQUMsR0FBNkM7SUFDekYsT0FBTyxDQUFDLEdBQUcsRUFBRSxrQkFBa0IsSUFBSSxHQUFHLEVBQUUsYUFBYSxDQUFDLENBQUMsQ0FBQyxDQUFDLGVBQWUsQ0FBQyxHQUFHLENBQUMsa0JBQWtCLElBQUksR0FBRyxDQUFDLGFBQWEsQ0FBQyxDQUFDLENBQUMsQ0FBQyxTQUFTLENBQUM7QUFDcEksQ0FBQztBQUVEOzs7Ozs7O0dBT0c7QUFDSCxNQUFNLENBQUMsTUFBTSxnQ0FBZ0MsR0FBRywyQkFBMkIsQ0FBbUM7SUFDNUcsUUFBUSxFQUFFLENBQUMsdUJBQXVCLENBQUMsSUFBSSxDQUFDO0lBQ3hDLGFBQWEsRUFBRSxDQUFDLEdBQUcsRUFBRSxFQUFFLENBQUMsQ0FBQyxFQUFFLGlCQUFpQixFQUFFLDZCQUE2QixDQUFDLEdBQUcsQ0FBQyxFQUFFLENBQUM7Q0FDcEYsQ0FBQyxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgZ2V0TGFuZ3VhZ2VDb2RlIH0gZnJvbSAnQG9keC9hbmd1bGFyL3V0aWxzJztcbmltcG9ydCB7IEdldFNlcnZpY2VDb25uZWN0VXNlclJlc3BvbnNlRHRvIH0gZnJvbSAnLi9kdG9zJztcbmltcG9ydCB7IHNlcnZpY2VDb25uZWN0UGx1Z2luRmFjdG9yeSB9IGZyb20gJy4vaGVscGVycyc7XG5pbXBvcnQgeyBTZXJ2aWNlQ29ubmVjdEVuZHBvaW50cyB9IGZyb20gJy4vc2VydmljZS1jb25uZWN0LmNvbmZpZyc7XG5cbi8qKlxuICogR2V0cyB0aGUgbGFuZ3VhZ2UgY29kZSBmcm9tIGEgc2VydmljZSBjb25uZWN0IHVzZXIgcmVzcG9uc2UuXG4gKlxuICogQHBhcmFtIHtHZXRTZXJ2aWNlQ29ubmVjdFVzZXJSZXNwb25zZUR0byB8IG51bGx9IHJlcyAtIFRoZSBzZXJ2aWNlIGNvbm5lY3QgdXNlciByZXNwb25zZS5cbiAqIEByZXR1cm5zIHtzdHJpbmcgfCB1bmRlZmluZWR9IC0gVGhlIGxhbmd1YWdlIGNvZGUgb3IgdW5kZWZpbmVkLlxuICovXG5leHBvcnQgZnVuY3Rpb24gZ2V0U2VydmljZUNvbm5lY3RVc2VyTGFuZ3VhZ2UocmVzPzogR2V0U2VydmljZUNvbm5lY3RVc2VyUmVzcG9uc2VEdG8gfCBudWxsKTogc3RyaW5nIHwgdW5kZWZpbmVkIHtcbiAgcmV0dXJuIChyZXM/LnByZWZlcnJlZF9sYW5ndWFnZSA/PyByZXM/Lmxhbmd1YWdlX2NvZGUpID8gZ2V0TGFuZ3VhZ2VDb2RlKHJlcy5wcmVmZXJyZWRfbGFuZ3VhZ2UgPz8gcmVzLmxhbmd1YWdlX2NvZGUpIDogdW5kZWZpbmVkO1xufVxuXG4vKipcbiAqIEEgcGx1Z2luIGZvciBmZXRjaGluZyBhbmQgcGFyc2luZyB0aGUgdXNlcidzIHByZWZlcnJlZCBsYW5ndWFnZSBmcm9tIHNlcnZpY2UgY29ubmVjdC5cbiAqXG4gKiBUaGlzIHBsdWdpbiB1c2VzIHRoZSBgc2VydmljZUNvbm5lY3RQbHVnaW5GYWN0b3J5YCB0byBjcmVhdGUgYSBwbHVnaW4gdGhhdCBmZXRjaGVzIHRoZSB1c2VyJ3MgcHJlZmVycmVkIGxhbmd1YWdlXG4gKiBmcm9tIHRoZSB1c2VyIGVuZHBvaW50IGFuZCBwYXJzZXMgdGhlIHJlc3BvbnNlIHRvIGV4dHJhY3QgdGhlIHByZWZlcnJlZCBsYW5ndWFnZS5cbiAqXG4gKiBAc2VlIHtzZXJ2aWNlQ29ubmVjdFBsdWdpbkZhY3Rvcnl9XG4gKi9cbmV4cG9ydCBjb25zdCBzZXJ2aWNlQ29ubmVjdFVzZXJMYW5ndWFnZVBsdWdpbiA9IHNlcnZpY2VDb25uZWN0UGx1Z2luRmFjdG9yeTxHZXRTZXJ2aWNlQ29ubmVjdFVzZXJSZXNwb25zZUR0bz4oe1xuICBlbmRwb2ludDogW1NlcnZpY2VDb25uZWN0RW5kcG9pbnRzLnVzZXJdLFxuICBwYXJzZVJlc3BvbnNlOiAocmVzKSA9PiAoeyBwcmVmZXJyZWRMYW5ndWFnZTogZ2V0U2VydmljZUNvbm5lY3RVc2VyTGFuZ3VhZ2UocmVzKSB9KSxcbn0pO1xuIl19
34
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2VydmljZS1jb25uZWN0LXVzZXItbGFuZ3VhZ2UucGx1Z2luLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vbGlicy9hdXRoL3BsdWdpbnMvc2VydmljZS1jb25uZWN0L3NyYy9saWIvc2VydmljZS1jb25uZWN0LXVzZXItbGFuZ3VhZ2UucGx1Z2luLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxlQUFlLEVBQUUsTUFBTSxvQkFBb0IsQ0FBQztBQUVyRCxPQUFPLEVBQUUsMkJBQTJCLEVBQUUsTUFBTSxXQUFXLENBQUM7QUFDeEQsT0FBTyxFQUFFLHVCQUF1QixFQUFFLE1BQU0sMEJBQTBCLENBQUM7QUFFbkU7Ozs7O0dBS0c7QUFDSCxNQUFNLFVBQVUsNkJBQTZCLENBQUMsR0FBNkM7SUFDekYsT0FBTyxHQUFHLEVBQUUsa0JBQWtCLElBQUksR0FBRyxFQUFFLGFBQWEsQ0FBQztBQUN2RCxDQUFDO0FBRUQ7Ozs7O0dBS0c7QUFDSCxNQUFNLFVBQVUsaUNBQWlDLENBQUMsR0FBNkM7SUFDN0YsT0FBTyxHQUFHLEVBQUUsYUFBYSxDQUFDLENBQUMsQ0FBQyxlQUFlLENBQUMsR0FBRyxDQUFDLGFBQWEsQ0FBQyxDQUFDLENBQUMsQ0FBQyxTQUFTLENBQUM7QUFDN0UsQ0FBQztBQUVEOzs7Ozs7O0dBT0c7QUFDSCxNQUFNLENBQUMsTUFBTSxnQ0FBZ0MsR0FBRywyQkFBMkIsQ0FBbUM7SUFDNUcsUUFBUSxFQUFFLENBQUMsdUJBQXVCLENBQUMsSUFBSSxDQUFDO0lBQ3hDLGFBQWEsRUFBRSxDQUFDLEdBQUcsRUFBRSxFQUFFLENBQUMsQ0FBQyxFQUFFLGlCQUFpQixFQUFFLDZCQUE2QixDQUFDLEdBQUcsQ0FBQyxFQUFFLFlBQVksRUFBRSxpQ0FBaUMsQ0FBQyxHQUFHLENBQUMsRUFBRSxDQUFDO0NBQzFJLENBQUMsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IGdldExhbmd1YWdlQ29kZSB9IGZyb20gJ0BvZHgvYW5ndWxhci91dGlscyc7XG5pbXBvcnQgeyBHZXRTZXJ2aWNlQ29ubmVjdFVzZXJSZXNwb25zZUR0byB9IGZyb20gJy4vZHRvcyc7XG5pbXBvcnQgeyBzZXJ2aWNlQ29ubmVjdFBsdWdpbkZhY3RvcnkgfSBmcm9tICcuL2hlbHBlcnMnO1xuaW1wb3J0IHsgU2VydmljZUNvbm5lY3RFbmRwb2ludHMgfSBmcm9tICcuL3NlcnZpY2UtY29ubmVjdC5jb25maWcnO1xuXG4vKipcbiAqIEdldHMgdGhlIHByZWZlcnJlZCBsYW5ndWFnZSBmcm9tIGEgc2VydmljZSBjb25uZWN0IHVzZXIgcmVzcG9uc2UuXG4gKlxuICogQHBhcmFtIHtHZXRTZXJ2aWNlQ29ubmVjdFVzZXJSZXNwb25zZUR0byB8IG51bGx9IHJlcyAtIFRoZSBzZXJ2aWNlIGNvbm5lY3QgdXNlciByZXNwb25zZS5cbiAqIEByZXR1cm5zIHtzdHJpbmcgfCB1bmRlZmluZWR9IC0gVGhlIGxhbmd1YWdlIG9yIHVuZGVmaW5lZC5cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGdldFNlcnZpY2VDb25uZWN0VXNlckxhbmd1YWdlKHJlcz86IEdldFNlcnZpY2VDb25uZWN0VXNlclJlc3BvbnNlRHRvIHwgbnVsbCk6IHN0cmluZyB8IHVuZGVmaW5lZCB7XG4gIHJldHVybiByZXM/LnByZWZlcnJlZF9sYW5ndWFnZSB8fCByZXM/Lmxhbmd1YWdlX2NvZGU7XG59XG5cbi8qKlxuICogR2V0cyB0aGUgbGFuZ3VhZ2UgY29kZSBmcm9tIGEgc2VydmljZSBjb25uZWN0IHVzZXIgcmVzcG9uc2UuXG4gKlxuICogQHBhcmFtIHtHZXRTZXJ2aWNlQ29ubmVjdFVzZXJSZXNwb25zZUR0byB8IG51bGx9IHJlcyAtIFRoZSBzZXJ2aWNlIGNvbm5lY3QgdXNlciByZXNwb25zZS5cbiAqIEByZXR1cm5zIHtzdHJpbmcgfCB1bmRlZmluZWR9IC0gVGhlIGxhbmd1YWdlIGNvZGUgb3IgdW5kZWZpbmVkLlxuICovXG5leHBvcnQgZnVuY3Rpb24gZ2V0U2VydmljZUNvbm5lY3RVc2VyTGFuZ3VhZ2VDb2RlKHJlcz86IEdldFNlcnZpY2VDb25uZWN0VXNlclJlc3BvbnNlRHRvIHwgbnVsbCk6IHN0cmluZyB8IHVuZGVmaW5lZCB7XG4gIHJldHVybiByZXM/Lmxhbmd1YWdlX2NvZGUgPyBnZXRMYW5ndWFnZUNvZGUocmVzLmxhbmd1YWdlX2NvZGUpIDogdW5kZWZpbmVkO1xufVxuXG4vKipcbiAqIEEgcGx1Z2luIGZvciBmZXRjaGluZyBhbmQgcGFyc2luZyB0aGUgdXNlcidzIHByZWZlcnJlZCBsYW5ndWFnZSBmcm9tIHNlcnZpY2UgY29ubmVjdC5cbiAqXG4gKiBUaGlzIHBsdWdpbiB1c2VzIHRoZSBgc2VydmljZUNvbm5lY3RQbHVnaW5GYWN0b3J5YCB0byBjcmVhdGUgYSBwbHVnaW4gdGhhdCBmZXRjaGVzIHRoZSB1c2VyJ3MgcHJlZmVycmVkIGxhbmd1YWdlXG4gKiBmcm9tIHRoZSB1c2VyIGVuZHBvaW50IGFuZCBwYXJzZXMgdGhlIHJlc3BvbnNlIHRvIGV4dHJhY3QgdGhlIHByZWZlcnJlZCBsYW5ndWFnZS5cbiAqXG4gKiBAc2VlIHtzZXJ2aWNlQ29ubmVjdFBsdWdpbkZhY3Rvcnl9XG4gKi9cbmV4cG9ydCBjb25zdCBzZXJ2aWNlQ29ubmVjdFVzZXJMYW5ndWFnZVBsdWdpbiA9IHNlcnZpY2VDb25uZWN0UGx1Z2luRmFjdG9yeTxHZXRTZXJ2aWNlQ29ubmVjdFVzZXJSZXNwb25zZUR0bz4oe1xuICBlbmRwb2ludDogW1NlcnZpY2VDb25uZWN0RW5kcG9pbnRzLnVzZXJdLFxuICBwYXJzZVJlc3BvbnNlOiAocmVzKSA9PiAoeyBwcmVmZXJyZWRMYW5ndWFnZTogZ2V0U2VydmljZUNvbm5lY3RVc2VyTGFuZ3VhZ2UocmVzKSwgbGFuZ3VhZ2VDb2RlOiBnZXRTZXJ2aWNlQ29ubmVjdFVzZXJMYW5ndWFnZUNvZGUocmVzKSB9KSxcbn0pO1xuIl19
@@ -1,5 +1,5 @@
1
1
  import { serviceConnectPluginFactory } from './helpers';
2
- import { getServiceConnectUserLanguage } from './service-connect-user-language.plugin';
2
+ import { getServiceConnectUserLanguage, getServiceConnectUserLanguageCode } from './service-connect-user-language.plugin';
3
3
  import { ServiceConnectEndpoints } from './service-connect.config';
4
4
  /**
5
5
  * A plugin for fetching and parsing the user's profile from service connect.
@@ -20,8 +20,9 @@ export const serviceConnectUserProfilePlugin = serviceConnectPluginFactory({
20
20
  institutionName3: res?.institution_name_3 ?? undefined,
21
21
  accountNumber: res?.account_number ?? undefined,
22
22
  institutionShortname: res?.institution_shortname,
23
+ languageCode: getServiceConnectUserLanguageCode(res),
23
24
  preferredLanguage: getServiceConnectUserLanguage(res),
24
25
  };
25
26
  },
26
27
  });
27
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2VydmljZS1jb25uZWN0LXVzZXItcHJvZmlsZS5wbHVnaW4uanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi9saWJzL2F1dGgvcGx1Z2lucy9zZXJ2aWNlLWNvbm5lY3Qvc3JjL2xpYi9zZXJ2aWNlLWNvbm5lY3QtdXNlci1wcm9maWxlLnBsdWdpbi50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFDQSxPQUFPLEVBQUUsMkJBQTJCLEVBQUUsTUFBTSxXQUFXLENBQUM7QUFDeEQsT0FBTyxFQUFFLDZCQUE2QixFQUFFLE1BQU0sd0NBQXdDLENBQUM7QUFDdkYsT0FBTyxFQUFFLHVCQUF1QixFQUFFLE1BQU0sMEJBQTBCLENBQUM7QUFpQm5FOzs7Ozs7O0dBT0c7QUFDSCxNQUFNLENBQUMsTUFBTSwrQkFBK0IsR0FBRywyQkFBMkIsQ0FBbUM7SUFDM0csUUFBUSxFQUFFLENBQUMsdUJBQXVCLENBQUMsSUFBSSxDQUFDO0lBQ3hDLGFBQWEsRUFBRSxDQUFDLEdBQUcsRUFBRSxFQUFFO1FBQ3JCLE9BQU87WUFDTCxPQUFPLEVBQUUsR0FBRyxFQUFFLE9BQU87WUFDckIsYUFBYSxFQUFFLEdBQUcsRUFBRSxjQUFjO1lBQ2xDLGVBQWUsRUFBRSxHQUFHLEVBQUUsZ0JBQWdCO1lBQ3RDLGdCQUFnQixFQUFFLEdBQUcsRUFBRSxrQkFBa0IsSUFBSSxTQUFTO1lBQ3RELGdCQUFnQixFQUFFLEdBQUcsRUFBRSxrQkFBa0IsSUFBSSxTQUFTO1lBQ3RELGFBQWEsRUFBRSxHQUFHLEVBQUUsY0FBYyxJQUFJLFNBQVM7WUFDL0Msb0JBQW9CLEVBQUUsR0FBRyxFQUFFLHFCQUFxQjtZQUNoRCxpQkFBaUIsRUFBRSw2QkFBNkIsQ0FBQyxHQUFHLENBQUM7U0FDdEQsQ0FBQztJQUNKLENBQUM7Q0FDRixDQUFDLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBHZXRTZXJ2aWNlQ29ubmVjdFVzZXJSZXNwb25zZUR0byB9IGZyb20gJy4vZHRvcyc7XG5pbXBvcnQgeyBzZXJ2aWNlQ29ubmVjdFBsdWdpbkZhY3RvcnkgfSBmcm9tICcuL2hlbHBlcnMnO1xuaW1wb3J0IHsgZ2V0U2VydmljZUNvbm5lY3RVc2VyTGFuZ3VhZ2UgfSBmcm9tICcuL3NlcnZpY2UtY29ubmVjdC11c2VyLWxhbmd1YWdlLnBsdWdpbic7XG5pbXBvcnQgeyBTZXJ2aWNlQ29ubmVjdEVuZHBvaW50cyB9IGZyb20gJy4vc2VydmljZS1jb25uZWN0LmNvbmZpZyc7XG5cbmRlY2xhcmUgZ2xvYmFsIHtcbiAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIEB0eXBlc2NyaXB0LWVzbGludC9uby1uYW1lc3BhY2VcbiAgbmFtZXNwYWNlIE9keEF1dGgge1xuICAgIGludGVyZmFjZSBBdXRoUGx1Z2luUmVzdWx0IHtcbiAgICAgIGNvdW50cnk/OiBzdHJpbmc7XG4gICAgICBpbnN0aXR1dGlvbklkPzogbnVtYmVyO1xuICAgICAgaW5zdGl0dXRpb25OYW1lPzogc3RyaW5nO1xuICAgICAgaW5zdGl0dXRpb25OYW1lMj86IHN0cmluZztcbiAgICAgIGluc3RpdHV0aW9uTmFtZTM/OiBzdHJpbmc7XG4gICAgICBpbnN0aXR1dGlvblNob3J0bmFtZT86IHN0cmluZztcbiAgICAgIGFjY291bnROdW1iZXI/OiBzdHJpbmc7XG4gICAgfVxuICB9XG59XG5cbi8qKlxuICogQSBwbHVnaW4gZm9yIGZldGNoaW5nIGFuZCBwYXJzaW5nIHRoZSB1c2VyJ3MgcHJvZmlsZSBmcm9tIHNlcnZpY2UgY29ubmVjdC5cbiAqXG4gKiBUaGlzIHBsdWdpbiB1c2VzIHRoZSBgc2VydmljZUNvbm5lY3RQbHVnaW5GYWN0b3J5YCB0byBjcmVhdGUgYSBwbHVnaW4gdGhhdCBmZXRjaGVzIHRoZSB1c2VyJ3MgcHJvZmlsZVxuICogZnJvbSB0aGUgdXNlciBlbmRwb2ludCBhbmQgcGFyc2VzIHRoZSByZXNwb25zZSB0byBleHRyYWN0IHRoZSB1c2VyJ3MgcHJvZmlsZSBpbmZvcm1hdGlvbi5cbiAqXG4gKiBAc2VlIHtzZXJ2aWNlQ29ubmVjdFBsdWdpbkZhY3Rvcnl9XG4gKi9cbmV4cG9ydCBjb25zdCBzZXJ2aWNlQ29ubmVjdFVzZXJQcm9maWxlUGx1Z2luID0gc2VydmljZUNvbm5lY3RQbHVnaW5GYWN0b3J5PEdldFNlcnZpY2VDb25uZWN0VXNlclJlc3BvbnNlRHRvPih7XG4gIGVuZHBvaW50OiBbU2VydmljZUNvbm5lY3RFbmRwb2ludHMudXNlcl0sXG4gIHBhcnNlUmVzcG9uc2U6IChyZXMpID0+IHtcbiAgICByZXR1cm4ge1xuICAgICAgY291bnRyeTogcmVzPy5jb3VudHJ5LFxuICAgICAgaW5zdGl0dXRpb25JZDogcmVzPy5pbnN0aXR1dGlvbl9pZCxcbiAgICAgIGluc3RpdHV0aW9uTmFtZTogcmVzPy5pbnN0aXR1dGlvbl9uYW1lLFxuICAgICAgaW5zdGl0dXRpb25OYW1lMjogcmVzPy5pbnN0aXR1dGlvbl9uYW1lXzIgPz8gdW5kZWZpbmVkLFxuICAgICAgaW5zdGl0dXRpb25OYW1lMzogcmVzPy5pbnN0aXR1dGlvbl9uYW1lXzMgPz8gdW5kZWZpbmVkLFxuICAgICAgYWNjb3VudE51bWJlcjogcmVzPy5hY2NvdW50X251bWJlciA/PyB1bmRlZmluZWQsXG4gICAgICBpbnN0aXR1dGlvblNob3J0bmFtZTogcmVzPy5pbnN0aXR1dGlvbl9zaG9ydG5hbWUsXG4gICAgICBwcmVmZXJyZWRMYW5ndWFnZTogZ2V0U2VydmljZUNvbm5lY3RVc2VyTGFuZ3VhZ2UocmVzKSxcbiAgICB9O1xuICB9LFxufSk7XG4iXX0=
28
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2VydmljZS1jb25uZWN0LXVzZXItcHJvZmlsZS5wbHVnaW4uanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi9saWJzL2F1dGgvcGx1Z2lucy9zZXJ2aWNlLWNvbm5lY3Qvc3JjL2xpYi9zZXJ2aWNlLWNvbm5lY3QtdXNlci1wcm9maWxlLnBsdWdpbi50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFDQSxPQUFPLEVBQUUsMkJBQTJCLEVBQUUsTUFBTSxXQUFXLENBQUM7QUFDeEQsT0FBTyxFQUFFLDZCQUE2QixFQUFFLGlDQUFpQyxFQUFFLE1BQU0sd0NBQXdDLENBQUM7QUFDMUgsT0FBTyxFQUFFLHVCQUF1QixFQUFFLE1BQU0sMEJBQTBCLENBQUM7QUFpQm5FOzs7Ozs7O0dBT0c7QUFDSCxNQUFNLENBQUMsTUFBTSwrQkFBK0IsR0FBRywyQkFBMkIsQ0FBbUM7SUFDM0csUUFBUSxFQUFFLENBQUMsdUJBQXVCLENBQUMsSUFBSSxDQUFDO0lBQ3hDLGFBQWEsRUFBRSxDQUFDLEdBQUcsRUFBRSxFQUFFO1FBQ3JCLE9BQU87WUFDTCxPQUFPLEVBQUUsR0FBRyxFQUFFLE9BQU87WUFDckIsYUFBYSxFQUFFLEdBQUcsRUFBRSxjQUFjO1lBQ2xDLGVBQWUsRUFBRSxHQUFHLEVBQUUsZ0JBQWdCO1lBQ3RDLGdCQUFnQixFQUFFLEdBQUcsRUFBRSxrQkFBa0IsSUFBSSxTQUFTO1lBQ3RELGdCQUFnQixFQUFFLEdBQUcsRUFBRSxrQkFBa0IsSUFBSSxTQUFTO1lBQ3RELGFBQWEsRUFBRSxHQUFHLEVBQUUsY0FBYyxJQUFJLFNBQVM7WUFDL0Msb0JBQW9CLEVBQUUsR0FBRyxFQUFFLHFCQUFxQjtZQUNoRCxZQUFZLEVBQUUsaUNBQWlDLENBQUMsR0FBRyxDQUFDO1lBQ3BELGlCQUFpQixFQUFFLDZCQUE2QixDQUFDLEdBQUcsQ0FBQztTQUN0RCxDQUFDO0lBQ0osQ0FBQztDQUNGLENBQUMsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEdldFNlcnZpY2VDb25uZWN0VXNlclJlc3BvbnNlRHRvIH0gZnJvbSAnLi9kdG9zJztcbmltcG9ydCB7IHNlcnZpY2VDb25uZWN0UGx1Z2luRmFjdG9yeSB9IGZyb20gJy4vaGVscGVycyc7XG5pbXBvcnQgeyBnZXRTZXJ2aWNlQ29ubmVjdFVzZXJMYW5ndWFnZSwgZ2V0U2VydmljZUNvbm5lY3RVc2VyTGFuZ3VhZ2VDb2RlIH0gZnJvbSAnLi9zZXJ2aWNlLWNvbm5lY3QtdXNlci1sYW5ndWFnZS5wbHVnaW4nO1xuaW1wb3J0IHsgU2VydmljZUNvbm5lY3RFbmRwb2ludHMgfSBmcm9tICcuL3NlcnZpY2UtY29ubmVjdC5jb25maWcnO1xuXG5kZWNsYXJlIGdsb2JhbCB7XG4gIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBAdHlwZXNjcmlwdC1lc2xpbnQvbm8tbmFtZXNwYWNlXG4gIG5hbWVzcGFjZSBPZHhBdXRoIHtcbiAgICBpbnRlcmZhY2UgQXV0aFBsdWdpblJlc3VsdCB7XG4gICAgICBjb3VudHJ5Pzogc3RyaW5nO1xuICAgICAgaW5zdGl0dXRpb25JZD86IG51bWJlcjtcbiAgICAgIGluc3RpdHV0aW9uTmFtZT86IHN0cmluZztcbiAgICAgIGluc3RpdHV0aW9uTmFtZTI/OiBzdHJpbmc7XG4gICAgICBpbnN0aXR1dGlvbk5hbWUzPzogc3RyaW5nO1xuICAgICAgaW5zdGl0dXRpb25TaG9ydG5hbWU/OiBzdHJpbmc7XG4gICAgICBhY2NvdW50TnVtYmVyPzogc3RyaW5nO1xuICAgIH1cbiAgfVxufVxuXG4vKipcbiAqIEEgcGx1Z2luIGZvciBmZXRjaGluZyBhbmQgcGFyc2luZyB0aGUgdXNlcidzIHByb2ZpbGUgZnJvbSBzZXJ2aWNlIGNvbm5lY3QuXG4gKlxuICogVGhpcyBwbHVnaW4gdXNlcyB0aGUgYHNlcnZpY2VDb25uZWN0UGx1Z2luRmFjdG9yeWAgdG8gY3JlYXRlIGEgcGx1Z2luIHRoYXQgZmV0Y2hlcyB0aGUgdXNlcidzIHByb2ZpbGVcbiAqIGZyb20gdGhlIHVzZXIgZW5kcG9pbnQgYW5kIHBhcnNlcyB0aGUgcmVzcG9uc2UgdG8gZXh0cmFjdCB0aGUgdXNlcidzIHByb2ZpbGUgaW5mb3JtYXRpb24uXG4gKlxuICogQHNlZSB7c2VydmljZUNvbm5lY3RQbHVnaW5GYWN0b3J5fVxuICovXG5leHBvcnQgY29uc3Qgc2VydmljZUNvbm5lY3RVc2VyUHJvZmlsZVBsdWdpbiA9IHNlcnZpY2VDb25uZWN0UGx1Z2luRmFjdG9yeTxHZXRTZXJ2aWNlQ29ubmVjdFVzZXJSZXNwb25zZUR0bz4oe1xuICBlbmRwb2ludDogW1NlcnZpY2VDb25uZWN0RW5kcG9pbnRzLnVzZXJdLFxuICBwYXJzZVJlc3BvbnNlOiAocmVzKSA9PiB7XG4gICAgcmV0dXJuIHtcbiAgICAgIGNvdW50cnk6IHJlcz8uY291bnRyeSxcbiAgICAgIGluc3RpdHV0aW9uSWQ6IHJlcz8uaW5zdGl0dXRpb25faWQsXG4gICAgICBpbnN0aXR1dGlvbk5hbWU6IHJlcz8uaW5zdGl0dXRpb25fbmFtZSxcbiAgICAgIGluc3RpdHV0aW9uTmFtZTI6IHJlcz8uaW5zdGl0dXRpb25fbmFtZV8yID8/IHVuZGVmaW5lZCxcbiAgICAgIGluc3RpdHV0aW9uTmFtZTM6IHJlcz8uaW5zdGl0dXRpb25fbmFtZV8zID8/IHVuZGVmaW5lZCxcbiAgICAgIGFjY291bnROdW1iZXI6IHJlcz8uYWNjb3VudF9udW1iZXIgPz8gdW5kZWZpbmVkLFxuICAgICAgaW5zdGl0dXRpb25TaG9ydG5hbWU6IHJlcz8uaW5zdGl0dXRpb25fc2hvcnRuYW1lLFxuICAgICAgbGFuZ3VhZ2VDb2RlOiBnZXRTZXJ2aWNlQ29ubmVjdFVzZXJMYW5ndWFnZUNvZGUocmVzKSxcbiAgICAgIHByZWZlcnJlZExhbmd1YWdlOiBnZXRTZXJ2aWNlQ29ubmVjdFVzZXJMYW5ndWFnZShyZXMpLFxuICAgIH07XG4gIH0sXG59KTtcbiJdfQ==
@@ -1,5 +1,5 @@
1
1
  import { AuthEnvironment } from '@odx/auth';
2
- export const ServiceConnnectEnvironments = {
2
+ export const ServiceConnectEnvironments = {
3
3
  [AuthEnvironment.DEV]: 'https://api.test.connect.draeger.com',
4
4
  [AuthEnvironment.STAGE]: 'https://api.staging.connect.draeger.com',
5
5
  [AuthEnvironment.PROD]: 'https://api.connect.draeger.com',
@@ -14,4 +14,4 @@ export const ServiceConnectEndpoints = {
14
14
  user: '/users/me',
15
15
  userRights: '/users/me/rights',
16
16
  };
17
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2VydmljZS1jb25uZWN0LmNvbmZpZy5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uL2xpYnMvYXV0aC9wbHVnaW5zL3NlcnZpY2UtY29ubmVjdC9zcmMvbGliL3NlcnZpY2UtY29ubmVjdC5jb25maWcudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLGVBQWUsRUFBRSxNQUFNLFdBQVcsQ0FBQztBQUc1QyxNQUFNLENBQUMsTUFBTSwyQkFBMkIsR0FBb0M7SUFDMUUsQ0FBQyxlQUFlLENBQUMsR0FBRyxDQUFDLEVBQUUsc0NBQXNDO0lBQzdELENBQUMsZUFBZSxDQUFDLEtBQUssQ0FBQyxFQUFFLHlDQUF5QztJQUNsRSxDQUFDLGVBQWUsQ0FBQyxJQUFJLENBQUMsRUFBRSxpQ0FBaUM7Q0FDMUQsQ0FBQztBQUNGLE1BQU0sQ0FBQyxNQUFNLG9CQUFvQixHQUFHO0lBQ2xDLElBQUksRUFBRSxNQUFNO0lBQ1osT0FBTyxFQUFFLGNBQWM7SUFDdkIsTUFBTSxFQUFFLGFBQWE7SUFDckIsV0FBVyxFQUFFLGtCQUFrQjtDQUNoQyxDQUFDO0FBQ0YsTUFBTSxDQUFDLE1BQU0sdUJBQXVCLEdBQUc7SUFDckMsSUFBSSxFQUFFLFdBQVc7SUFDakIsVUFBVSxFQUFFLGtCQUFrQjtDQUMvQixDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQXV0aEVudmlyb25tZW50IH0gZnJvbSAnQG9keC9hdXRoJztcblxuZXhwb3J0IHR5cGUgU2VydmljZUNvbm5lY3RFbnZpcm9ubWVudCA9IHsgY3VzdG9tOiBzdHJpbmcgfTtcbmV4cG9ydCBjb25zdCBTZXJ2aWNlQ29ubm5lY3RFbnZpcm9ubWVudHM6IFJlY29yZDxBdXRoRW52aXJvbm1lbnQsIHN0cmluZz4gPSB7XG4gIFtBdXRoRW52aXJvbm1lbnQuREVWXTogJ2h0dHBzOi8vYXBpLnRlc3QuY29ubmVjdC5kcmFlZ2VyLmNvbScsXG4gIFtBdXRoRW52aXJvbm1lbnQuU1RBR0VdOiAnaHR0cHM6Ly9hcGkuc3RhZ2luZy5jb25uZWN0LmRyYWVnZXIuY29tJyxcbiAgW0F1dGhFbnZpcm9ubWVudC5QUk9EXTogJ2h0dHBzOi8vYXBpLmNvbm5lY3QuZHJhZWdlci5jb20nLFxufTtcbmV4cG9ydCBjb25zdCBTZXJ2aWNlQ29ubmVjdFNjb3BlcyA9IHtcbiAgQkFTRTogJ2RjaWQnLFxuICBQUk9GSUxFOiAnZGNpZC5wcm9maWxlJyxcbiAgUklHSFRTOiAnZGNpZC5yaWdodHMnLFxuICBJTlNUSVRVVElPTjogJ2RjaWQuaW5zdGl0dXRpb24nLFxufTtcbmV4cG9ydCBjb25zdCBTZXJ2aWNlQ29ubmVjdEVuZHBvaW50cyA9IHtcbiAgdXNlcjogJy91c2Vycy9tZScsXG4gIHVzZXJSaWdodHM6ICcvdXNlcnMvbWUvcmlnaHRzJyxcbn07XG4iXX0=
17
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2VydmljZS1jb25uZWN0LmNvbmZpZy5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uL2xpYnMvYXV0aC9wbHVnaW5zL3NlcnZpY2UtY29ubmVjdC9zcmMvbGliL3NlcnZpY2UtY29ubmVjdC5jb25maWcudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLGVBQWUsRUFBRSxNQUFNLFdBQVcsQ0FBQztBQUc1QyxNQUFNLENBQUMsTUFBTSwwQkFBMEIsR0FBb0M7SUFDekUsQ0FBQyxlQUFlLENBQUMsR0FBRyxDQUFDLEVBQUUsc0NBQXNDO0lBQzdELENBQUMsZUFBZSxDQUFDLEtBQUssQ0FBQyxFQUFFLHlDQUF5QztJQUNsRSxDQUFDLGVBQWUsQ0FBQyxJQUFJLENBQUMsRUFBRSxpQ0FBaUM7Q0FDMUQsQ0FBQztBQUNGLE1BQU0sQ0FBQyxNQUFNLG9CQUFvQixHQUFHO0lBQ2xDLElBQUksRUFBRSxNQUFNO0lBQ1osT0FBTyxFQUFFLGNBQWM7SUFDdkIsTUFBTSxFQUFFLGFBQWE7SUFDckIsV0FBVyxFQUFFLGtCQUFrQjtDQUNoQyxDQUFDO0FBQ0YsTUFBTSxDQUFDLE1BQU0sdUJBQXVCLEdBQUc7SUFDckMsSUFBSSxFQUFFLFdBQVc7SUFDakIsVUFBVSxFQUFFLGtCQUFrQjtDQUMvQixDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQXV0aEVudmlyb25tZW50IH0gZnJvbSAnQG9keC9hdXRoJztcblxuZXhwb3J0IHR5cGUgU2VydmljZUNvbm5lY3RFbnZpcm9ubWVudCA9IHsgY3VzdG9tOiBzdHJpbmcgfTtcbmV4cG9ydCBjb25zdCBTZXJ2aWNlQ29ubmVjdEVudmlyb25tZW50czogUmVjb3JkPEF1dGhFbnZpcm9ubWVudCwgc3RyaW5nPiA9IHtcbiAgW0F1dGhFbnZpcm9ubWVudC5ERVZdOiAnaHR0cHM6Ly9hcGkudGVzdC5jb25uZWN0LmRyYWVnZXIuY29tJyxcbiAgW0F1dGhFbnZpcm9ubWVudC5TVEFHRV06ICdodHRwczovL2FwaS5zdGFnaW5nLmNvbm5lY3QuZHJhZWdlci5jb20nLFxuICBbQXV0aEVudmlyb25tZW50LlBST0RdOiAnaHR0cHM6Ly9hcGkuY29ubmVjdC5kcmFlZ2VyLmNvbScsXG59O1xuZXhwb3J0IGNvbnN0IFNlcnZpY2VDb25uZWN0U2NvcGVzID0ge1xuICBCQVNFOiAnZGNpZCcsXG4gIFBST0ZJTEU6ICdkY2lkLnByb2ZpbGUnLFxuICBSSUdIVFM6ICdkY2lkLnJpZ2h0cycsXG4gIElOU1RJVFVUSU9OOiAnZGNpZC5pbnN0aXR1dGlvbicsXG59O1xuZXhwb3J0IGNvbnN0IFNlcnZpY2VDb25uZWN0RW5kcG9pbnRzID0ge1xuICB1c2VyOiAnL3VzZXJzL21lJyxcbiAgdXNlclJpZ2h0czogJy91c2Vycy9tZS9yaWdodHMnLFxufTtcbiJdfQ==
@@ -6,7 +6,7 @@ import * as i0 from '@angular/core';
6
6
  import { inject, Directive, Input } from '@angular/core';
7
7
  import { defer, map } from 'rxjs';
8
8
 
9
- const ServiceConnnectEnvironments = {
9
+ const ServiceConnectEnvironments = {
10
10
  [AuthEnvironment.DEV]: 'https://api.test.connect.draeger.com',
11
11
  [AuthEnvironment.STAGE]: 'https://api.staging.connect.draeger.com',
12
12
  [AuthEnvironment.PROD]: 'https://api.connect.draeger.com',
@@ -31,7 +31,7 @@ const ServiceConnectEndpoints = {
31
31
  */
32
32
  function buildServiceConnectUrl(environment, ...endpoints) {
33
33
  if (isString(environment)) {
34
- return buildUrl(ServiceConnnectEnvironments[environment], ...endpoints);
34
+ return buildUrl(ServiceConnectEnvironments[environment], ...endpoints);
35
35
  }
36
36
  return buildUrl(environment.custom, ...endpoints);
37
37
  }
@@ -144,14 +144,23 @@ const serviceConnectRightsPlugin = serviceConnectPluginFactory({
144
144
  defaultValue: { rights: [] },
145
145
  });
146
146
 
147
+ /**
148
+ * Gets the preferred language from a service connect user response.
149
+ *
150
+ * @param {GetServiceConnectUserResponseDto | null} res - The service connect user response.
151
+ * @returns {string | undefined} - The language or undefined.
152
+ */
153
+ function getServiceConnectUserLanguage(res) {
154
+ return res?.preferred_language || res?.language_code;
155
+ }
147
156
  /**
148
157
  * Gets the language code from a service connect user response.
149
158
  *
150
159
  * @param {GetServiceConnectUserResponseDto | null} res - The service connect user response.
151
160
  * @returns {string | undefined} - The language code or undefined.
152
161
  */
153
- function getServiceConnectUserLanguage(res) {
154
- return (res?.preferred_language ?? res?.language_code) ? getLanguageCode(res.preferred_language ?? res.language_code) : undefined;
162
+ function getServiceConnectUserLanguageCode(res) {
163
+ return res?.language_code ? getLanguageCode(res.language_code) : undefined;
155
164
  }
156
165
  /**
157
166
  * A plugin for fetching and parsing the user's preferred language from service connect.
@@ -163,7 +172,7 @@ function getServiceConnectUserLanguage(res) {
163
172
  */
164
173
  const serviceConnectUserLanguagePlugin = serviceConnectPluginFactory({
165
174
  endpoint: [ServiceConnectEndpoints.user],
166
- parseResponse: (res) => ({ preferredLanguage: getServiceConnectUserLanguage(res) }),
175
+ parseResponse: (res) => ({ preferredLanguage: getServiceConnectUserLanguage(res), languageCode: getServiceConnectUserLanguageCode(res) }),
167
176
  });
168
177
 
169
178
  /**
@@ -185,6 +194,7 @@ const serviceConnectUserProfilePlugin = serviceConnectPluginFactory({
185
194
  institutionName3: res?.institution_name_3 ?? undefined,
186
195
  accountNumber: res?.account_number ?? undefined,
187
196
  institutionShortname: res?.institution_shortname,
197
+ languageCode: getServiceConnectUserLanguageCode(res),
188
198
  preferredLanguage: getServiceConnectUserLanguage(res),
189
199
  };
190
200
  },
@@ -194,5 +204,5 @@ const serviceConnectUserProfilePlugin = serviceConnectPluginFactory({
194
204
  * Generated bundle index. Do not edit.
195
205
  */
196
206
 
197
- export { ServiceConnectEndpoints, ServiceConnectRightsDirective, ServiceConnectScopes, ServiceConnnectEnvironments, buildServiceConnectUrl, getServiceConnectUserLanguage, hasRolesOrRights, hasRolesOrRightsHandler, serviceConnectPluginFactory, serviceConnectRightsGuard, serviceConnectRightsPlugin, serviceConnectUserLanguagePlugin, serviceConnectUserProfilePlugin };
207
+ export { ServiceConnectEndpoints, ServiceConnectEnvironments, ServiceConnectRightsDirective, ServiceConnectScopes, buildServiceConnectUrl, getServiceConnectUserLanguage, getServiceConnectUserLanguageCode, hasRolesOrRights, hasRolesOrRightsHandler, serviceConnectPluginFactory, serviceConnectRightsGuard, serviceConnectRightsPlugin, serviceConnectUserLanguagePlugin, serviceConnectUserProfilePlugin };
198
208
  //# sourceMappingURL=odx-auth-plugins-service-connect.mjs.map
@@ -1 +1 @@
1
- {"version":3,"file":"odx-auth-plugins-service-connect.mjs","sources":["../../../../libs/auth/plugins/service-connect/src/lib/service-connect.config.ts","../../../../libs/auth/plugins/service-connect/src/lib/helpers/build-service-connect-url.ts","../../../../libs/auth/plugins/service-connect/src/lib/helpers/has-roles-or-rights.ts","../../../../libs/auth/plugins/service-connect/src/lib/helpers/has-roles-or-rights-handler.ts","../../../../libs/auth/plugins/service-connect/src/lib/helpers/service-connect-plugin-factory.ts","../../../../libs/auth/plugins/service-connect/src/lib/service-connect-rights.directive.ts","../../../../libs/auth/plugins/service-connect/src/lib/service-connect-rights.guard.ts","../../../../libs/auth/plugins/service-connect/src/lib/service-connect-rights.plugin.ts","../../../../libs/auth/plugins/service-connect/src/lib/service-connect-user-language.plugin.ts","../../../../libs/auth/plugins/service-connect/src/lib/service-connect-user-profile.plugin.ts","../../../../libs/auth/plugins/service-connect/src/odx-auth-plugins-service-connect.ts"],"sourcesContent":["import { AuthEnvironment } from '@odx/auth';\n\nexport type ServiceConnectEnvironment = { custom: string };\nexport const ServiceConnnectEnvironments: Record<AuthEnvironment, string> = {\n [AuthEnvironment.DEV]: 'https://api.test.connect.draeger.com',\n [AuthEnvironment.STAGE]: 'https://api.staging.connect.draeger.com',\n [AuthEnvironment.PROD]: 'https://api.connect.draeger.com',\n};\nexport const ServiceConnectScopes = {\n BASE: 'dcid',\n PROFILE: 'dcid.profile',\n RIGHTS: 'dcid.rights',\n INSTITUTION: 'dcid.institution',\n};\nexport const ServiceConnectEndpoints = {\n user: '/users/me',\n userRights: '/users/me/rights',\n};\n","import { buildUrl, isString } from '@odx/angular/utils';\nimport { AuthEnvironment } from '@odx/auth';\nimport { ServiceConnectEnvironment, ServiceConnnectEnvironments } from '../service-connect.config';\n\n/**\n * Builds a service connect URL based on the provided environment and endpoints.\n *\n * @param {ServiceConnectEnvironment | AuthEnvironment} environment - The environment configuration which can be either a `ServiceConnectEnvironment` or `AuthEnvironment`.\n * @param {string[]} endpoints - A list of endpoint strings to be appended to the base URL.\n * @returns {string} - The constructed service connect URL as a string.\n */\nexport function buildServiceConnectUrl(environment: ServiceConnectEnvironment | AuthEnvironment, ...endpoints: string[]): string {\n if (isString(environment)) {\n return buildUrl(ServiceConnnectEnvironments[environment], ...endpoints);\n }\n return buildUrl(environment.custom, ...endpoints);\n}\n","export type Right = string | number;\nexport type Role = Right[];\nexport type RolesOrRights = Array<Role | Right>;\n\n/**\n * Checks if the user has any of the specified roles or rights.\n *\n * @param {Right[]} userRights - An array of rights that the user possesses.\n * @param {RolesOrRights} rolesOrRights - An array of roles or rights to check against. A role is represented as an array of rights.\n * @returns {boolean} - `true` if the user has any of the specified roles or rights, otherwise `false`.\n */\nexport function hasRolesOrRights(userRights: Right[], rolesOrRights: RolesOrRights): boolean {\n return rolesOrRights.some((rights) => (Array.isArray(rights) ? rights : [rights])?.every((right) => userRights.includes(right)));\n}\n","import { AuthorizedHandler } from '@odx/auth';\nimport { hasRolesOrRights, RolesOrRights } from './has-roles-or-rights';\n\n/**\n * Creates an authorized handler that checks if the user has the specified roles or rights.\n *\n * @param {RolesOrRights} rolesOrRights - The roles or rights to check against the user's claims.\n * @returns {AuthorizedHandler} - An handler function that takes user claims and returns a boolean indicating\n * whether the user has the required roles or rights.\n */\nexport function hasRolesOrRightsHandler(rolesOrRights: RolesOrRights): AuthorizedHandler {\n return (claims) => hasRolesOrRights(claims?.rights ?? [], rolesOrRights);\n}\n","import { HttpClient, HttpContext } from '@angular/common/http';\nimport { inject } from '@angular/core';\nimport { AuthPluginFactory, injectAuthConfig, requireAuthentication } from '@odx/auth';\nimport { defer, map } from 'rxjs';\nimport { ServiceConnectEnvironment } from '../service-connect.config';\nimport { buildServiceConnectUrl } from './build-service-connect-url';\n\nexport interface ServiceConnectPluginOptions<Dto = unknown> {\n environment?: ServiceConnectEnvironment;\n additionalClaims?: (dto: (Dto & Record<string, unknown>) | null) => Partial<OdxAuth.AuthPluginResult>;\n}\n\nexport interface ServiceConnectPluginFactoryOptions<Dto> {\n endpoint: string[];\n parseResponse: (res: Dto | null) => Partial<OdxAuth.AuthPluginResult>;\n defaultValue?: Partial<OdxAuth.AuthPluginResult>;\n setup?: (pluginOptions?: ServiceConnectPluginOptions<Dto>) => void;\n}\n\nexport type ServiceConnectPluginFactory<Dto = unknown> = (pluginOptions?: ServiceConnectPluginOptions<Dto>) => AuthPluginFactory;\n\n/**\n * Creates a plugin factory for fetching and parsing service connect data.\n *\n * @param {ServiceConnectPluginFactoryOptions<Dto>} options - The options for the service connect plugin factory.\n * @returns {ServiceConnectPluginFactory} - A function that creates an auth plugin factory for fetching and parsing service connect data.\n */\nexport function serviceConnectPluginFactory<Dto = unknown>(options: ServiceConnectPluginFactoryOptions<Dto>): ServiceConnectPluginFactory<Dto> {\n return (pluginOptions) => () => {\n options.setup?.(pluginOptions);\n const { environment } = injectAuthConfig();\n const httpClient = inject(HttpClient);\n const url = buildServiceConnectUrl(pluginOptions?.environment ?? environment, ...options.endpoint);\n const parseResponse = (res: Dto | null) => ({\n ...(options.parseResponse(res) ?? options.defaultValue ?? {}),\n ...(pluginOptions?.additionalClaims?.(res as Dto & Record<string, unknown>) ?? {}),\n });\n\n return () => defer(() => httpClient.get<Dto>(url, { context: new HttpContext().set(requireAuthentication, true) })).pipe(map((res) => parseResponse(res)));\n };\n}\n","import { Directive, inject, Input } from '@angular/core';\nimport { AuthDirective } from '@odx/auth';\nimport { hasRolesOrRightsHandler, RolesOrRights } from './helpers';\n\n/**\n * A directive that extends the functionality of the `AuthDirective` to handle\n * roles or rights for service connection authorization.\n *\n * @see AuthDirective\n *\n * This directive should be used on an `ng-template` element with the selector\n * `odxAuthServiceConnectRights`.\n */\n@Directive({\n standalone: true,\n selector: 'ng-template[odxAuthServiceConnectRights]',\n hostDirectives: [\n {\n directive: AuthDirective,\n inputs: ['odxAuthElse:odxAuthServiceConnectRightsElse'],\n },\n ],\n})\nexport class ServiceConnectRightsDirective {\n private readonly authDirective = inject(AuthDirective, { host: true });\n\n /**\n * Sets the roles or rights that the user must have to display the content.\n */\n @Input('odxAuthServiceConnectRights')\n public set rolesOrRights(value: RolesOrRights | null | undefined) {\n this.authDirective.authorizationHandler = hasRolesOrRightsHandler(value ?? []);\n }\n}\n","import { CanActivateFn } from '@angular/router';\nimport { authGuard } from '@odx/auth';\nimport { hasRolesOrRightsHandler, RolesOrRights } from './helpers';\n\n/**\n * A guard function to check if the user has the required roles or rights to access a route.\n *\n * @param {RolesOrRights} rolesOrRights - The roles or rights required to access the route.\n * @param {string | any[]} redirectTo - (Optional) The route to redirect to if the user does not have the required roles or rights.\n * @param {boolean} isExternal - (Optional) A flag indicating if the redirection is to an external URL. Defaults to `false`.\n * @returns {CanActivateFn} - A function that checks the user's roles or rights and handles redirection if necessary.\n */\n// eslint-disable-next-line @typescript-eslint/no-explicit-any\nexport function serviceConnectRightsGuard(rolesOrRights: RolesOrRights, redirectTo?: string | any[], isExternal = false): CanActivateFn {\n return authGuard(hasRolesOrRightsHandler(rolesOrRights), redirectTo, isExternal);\n}\n","import { GetServiceConnectRightsResponseDto } from './dtos';\nimport { Right, serviceConnectPluginFactory } from './helpers';\nimport { ServiceConnectEndpoints } from './service-connect.config';\n\ndeclare global {\n // eslint-disable-next-line @typescript-eslint/no-namespace\n namespace OdxAuth {\n interface AuthPluginResult {\n rights: Right[];\n }\n }\n}\n\n/**\n * A plugin for fetching and parsing service connect rights.\n *\n * This plugin uses the `serviceConnectPluginFactory` to create a plugin that fetches user rights\n * from the specified endpoint and parses the response to extract the rights.\n *\n * @see {serviceConnectPluginFactory}\n */\nexport const serviceConnectRightsPlugin = serviceConnectPluginFactory<GetServiceConnectRightsResponseDto>({\n endpoint: [ServiceConnectEndpoints.userRights],\n parseResponse: (res) => ({ rights: res?.rights ?? [] }),\n defaultValue: { rights: [] },\n});\n","import { getLanguageCode } from '@odx/angular/utils';\nimport { GetServiceConnectUserResponseDto } from './dtos';\nimport { serviceConnectPluginFactory } from './helpers';\nimport { ServiceConnectEndpoints } from './service-connect.config';\n\n/**\n * Gets the language code from a service connect user response.\n *\n * @param {GetServiceConnectUserResponseDto | null} res - The service connect user response.\n * @returns {string | undefined} - The language code or undefined.\n */\nexport function getServiceConnectUserLanguage(res?: GetServiceConnectUserResponseDto | null): string | undefined {\n return (res?.preferred_language ?? res?.language_code) ? getLanguageCode(res.preferred_language ?? res.language_code) : undefined;\n}\n\n/**\n * A plugin for fetching and parsing the user's preferred language from service connect.\n *\n * This plugin uses the `serviceConnectPluginFactory` to create a plugin that fetches the user's preferred language\n * from the user endpoint and parses the response to extract the preferred language.\n *\n * @see {serviceConnectPluginFactory}\n */\nexport const serviceConnectUserLanguagePlugin = serviceConnectPluginFactory<GetServiceConnectUserResponseDto>({\n endpoint: [ServiceConnectEndpoints.user],\n parseResponse: (res) => ({ preferredLanguage: getServiceConnectUserLanguage(res) }),\n});\n","import { GetServiceConnectUserResponseDto } from './dtos';\nimport { serviceConnectPluginFactory } from './helpers';\nimport { getServiceConnectUserLanguage } from './service-connect-user-language.plugin';\nimport { ServiceConnectEndpoints } from './service-connect.config';\n\ndeclare global {\n // eslint-disable-next-line @typescript-eslint/no-namespace\n namespace OdxAuth {\n interface AuthPluginResult {\n country?: string;\n institutionId?: number;\n institutionName?: string;\n institutionName2?: string;\n institutionName3?: string;\n institutionShortname?: string;\n accountNumber?: string;\n }\n }\n}\n\n/**\n * A plugin for fetching and parsing the user's profile from service connect.\n *\n * This plugin uses the `serviceConnectPluginFactory` to create a plugin that fetches the user's profile\n * from the user endpoint and parses the response to extract the user's profile information.\n *\n * @see {serviceConnectPluginFactory}\n */\nexport const serviceConnectUserProfilePlugin = serviceConnectPluginFactory<GetServiceConnectUserResponseDto>({\n endpoint: [ServiceConnectEndpoints.user],\n parseResponse: (res) => {\n return {\n country: res?.country,\n institutionId: res?.institution_id,\n institutionName: res?.institution_name,\n institutionName2: res?.institution_name_2 ?? undefined,\n institutionName3: res?.institution_name_3 ?? undefined,\n accountNumber: res?.account_number ?? undefined,\n institutionShortname: res?.institution_shortname,\n preferredLanguage: getServiceConnectUserLanguage(res),\n };\n },\n});\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":[],"mappings":";;;;;;;;AAGa,MAAA,2BAA2B,GAAoC;AAC1E,IAAA,CAAC,eAAe,CAAC,GAAG,GAAG,sCAAsC;AAC7D,IAAA,CAAC,eAAe,CAAC,KAAK,GAAG,yCAAyC;AAClE,IAAA,CAAC,eAAe,CAAC,IAAI,GAAG,iCAAiC;EACzD;AACW,MAAA,oBAAoB,GAAG;AAClC,IAAA,IAAI,EAAE,MAAM;AACZ,IAAA,OAAO,EAAE,cAAc;AACvB,IAAA,MAAM,EAAE,aAAa;AACrB,IAAA,WAAW,EAAE,kBAAkB;EAC/B;AACW,MAAA,uBAAuB,GAAG;AACrC,IAAA,IAAI,EAAE,WAAW;AACjB,IAAA,UAAU,EAAE,kBAAkB;;;ACZhC;;;;;;AAMG;SACa,sBAAsB,CAAC,WAAwD,EAAE,GAAG,SAAmB,EAAA;AACrH,IAAA,IAAI,QAAQ,CAAC,WAAW,CAAC,EAAE;QACzB,OAAO,QAAQ,CAAC,2BAA2B,CAAC,WAAW,CAAC,EAAE,GAAG,SAAS,CAAC,CAAC;KACzE;IACD,OAAO,QAAQ,CAAC,WAAW,CAAC,MAAM,EAAE,GAAG,SAAS,CAAC,CAAC;AACpD;;ACZA;;;;;;AAMG;AACa,SAAA,gBAAgB,CAAC,UAAmB,EAAE,aAA4B,EAAA;AAChF,IAAA,OAAO,aAAa,CAAC,IAAI,CAAC,CAAC,MAAM,KAAK,CAAC,KAAK,CAAC,OAAO,CAAC,MAAM,CAAC,GAAG,MAAM,GAAG,CAAC,MAAM,CAAC,GAAG,KAAK,CAAC,CAAC,KAAK,KAAK,UAAU,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;AACnI;;ACVA;;;;;;AAMG;AACG,SAAU,uBAAuB,CAAC,aAA4B,EAAA;AAClE,IAAA,OAAO,CAAC,MAAM,KAAK,gBAAgB,CAAC,MAAM,EAAE,MAAM,IAAI,EAAE,EAAE,aAAa,CAAC,CAAC;AAC3E;;ACSA;;;;;AAKG;AACG,SAAU,2BAA2B,CAAgB,OAAgD,EAAA;AACzG,IAAA,OAAO,CAAC,aAAa,KAAK,MAAK;AAC7B,QAAA,OAAO,CAAC,KAAK,GAAG,aAAa,CAAC,CAAC;AAC/B,QAAA,MAAM,EAAE,WAAW,EAAE,GAAG,gBAAgB,EAAE,CAAC;AAC3C,QAAA,MAAM,UAAU,GAAG,MAAM,CAAC,UAAU,CAAC,CAAC;AACtC,QAAA,MAAM,GAAG,GAAG,sBAAsB,CAAC,aAAa,EAAE,WAAW,IAAI,WAAW,EAAE,GAAG,OAAO,CAAC,QAAQ,CAAC,CAAC;AACnG,QAAA,MAAM,aAAa,GAAG,CAAC,GAAe,MAAM;AAC1C,YAAA,IAAI,OAAO,CAAC,aAAa,CAAC,GAAG,CAAC,IAAI,OAAO,CAAC,YAAY,IAAI,EAAE,CAAC;YAC7D,IAAI,aAAa,EAAE,gBAAgB,GAAG,GAAoC,CAAC,IAAI,EAAE,CAAC;AACnF,SAAA,CAAC,CAAC;QAEH,OAAO,MAAM,KAAK,CAAC,MAAM,UAAU,CAAC,GAAG,CAAM,GAAG,EAAE,EAAE,OAAO,EAAE,IAAI,WAAW,EAAE,CAAC,GAAG,CAAC,qBAAqB,EAAE,IAAI,CAAC,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,GAAG,KAAK,aAAa,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC;AAC7J,KAAC,CAAC;AACJ;;ACpCA;;;;;;;;AAQG;MAWU,6BAA6B,CAAA;AAV1C,IAAA,WAAA,GAAA;QAWmB,IAAa,CAAA,aAAA,GAAG,MAAM,CAAC,aAAa,EAAE,EAAE,IAAI,EAAE,IAAI,EAAE,CAAC,CAAC;AASxE,KAAA;AAPC;;AAEG;IACH,IACW,aAAa,CAAC,KAAuC,EAAA;QAC9D,IAAI,CAAC,aAAa,CAAC,oBAAoB,GAAG,uBAAuB,CAAC,KAAK,IAAI,EAAE,CAAC,CAAC;KAChF;+GATU,6BAA6B,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA,EAAA;mGAA7B,6BAA6B,EAAA,YAAA,EAAA,IAAA,EAAA,QAAA,EAAA,0CAAA,EAAA,MAAA,EAAA,EAAA,aAAA,EAAA,CAAA,6BAAA,EAAA,eAAA,CAAA,EAAA,EAAA,cAAA,EAAA,CAAA,EAAA,SAAA,EAAA,EAAA,CAAA,aAAA,EAAA,MAAA,EAAA,CAAA,aAAA,EAAA,iCAAA,CAAA,EAAA,CAAA,EAAA,QAAA,EAAA,EAAA,EAAA,CAAA,CAAA,EAAA;;4FAA7B,6BAA6B,EAAA,UAAA,EAAA,CAAA;kBAVzC,SAAS;AAAC,YAAA,IAAA,EAAA,CAAA;AACT,oBAAA,UAAU,EAAE,IAAI;AAChB,oBAAA,QAAQ,EAAE,0CAA0C;AACpD,oBAAA,cAAc,EAAE;AACd,wBAAA;AACE,4BAAA,SAAS,EAAE,aAAa;4BACxB,MAAM,EAAE,CAAC,6CAA6C,CAAC;AACxD,yBAAA;AACF,qBAAA;AACF,iBAAA,CAAA;8BAQY,aAAa,EAAA,CAAA;sBADvB,KAAK;uBAAC,6BAA6B,CAAA;;;ACzBtC;;;;;;;AAOG;AACH;AACM,SAAU,yBAAyB,CAAC,aAA4B,EAAE,UAA2B,EAAE,UAAU,GAAG,KAAK,EAAA;IACrH,OAAO,SAAS,CAAC,uBAAuB,CAAC,aAAa,CAAC,EAAE,UAAU,EAAE,UAAU,CAAC,CAAC;AACnF;;ACFA;;;;;;;AAOG;AACI,MAAM,0BAA0B,GAAG,2BAA2B,CAAqC;AACxG,IAAA,QAAQ,EAAE,CAAC,uBAAuB,CAAC,UAAU,CAAC;AAC9C,IAAA,aAAa,EAAE,CAAC,GAAG,MAAM,EAAE,MAAM,EAAE,GAAG,EAAE,MAAM,IAAI,EAAE,EAAE,CAAC;AACvD,IAAA,YAAY,EAAE,EAAE,MAAM,EAAE,EAAE,EAAE;AAC7B,CAAA;;ACpBD;;;;;AAKG;AACG,SAAU,6BAA6B,CAAC,GAA6C,EAAA;IACzF,OAAO,CAAC,GAAG,EAAE,kBAAkB,IAAI,GAAG,EAAE,aAAa,IAAI,eAAe,CAAC,GAAG,CAAC,kBAAkB,IAAI,GAAG,CAAC,aAAa,CAAC,GAAG,SAAS,CAAC;AACpI,CAAC;AAED;;;;;;;AAOG;AACI,MAAM,gCAAgC,GAAG,2BAA2B,CAAmC;AAC5G,IAAA,QAAQ,EAAE,CAAC,uBAAuB,CAAC,IAAI,CAAC;AACxC,IAAA,aAAa,EAAE,CAAC,GAAG,MAAM,EAAE,iBAAiB,EAAE,6BAA6B,CAAC,GAAG,CAAC,EAAE,CAAC;AACpF,CAAA;;ACND;;;;;;;AAOG;AACI,MAAM,+BAA+B,GAAG,2BAA2B,CAAmC;AAC3G,IAAA,QAAQ,EAAE,CAAC,uBAAuB,CAAC,IAAI,CAAC;AACxC,IAAA,aAAa,EAAE,CAAC,GAAG,KAAI;QACrB,OAAO;YACL,OAAO,EAAE,GAAG,EAAE,OAAO;YACrB,aAAa,EAAE,GAAG,EAAE,cAAc;YAClC,eAAe,EAAE,GAAG,EAAE,gBAAgB;AACtC,YAAA,gBAAgB,EAAE,GAAG,EAAE,kBAAkB,IAAI,SAAS;AACtD,YAAA,gBAAgB,EAAE,GAAG,EAAE,kBAAkB,IAAI,SAAS;AACtD,YAAA,aAAa,EAAE,GAAG,EAAE,cAAc,IAAI,SAAS;YAC/C,oBAAoB,EAAE,GAAG,EAAE,qBAAqB;AAChD,YAAA,iBAAiB,EAAE,6BAA6B,CAAC,GAAG,CAAC;SACtD,CAAC;KACH;AACF,CAAA;;AC1CD;;AAEG;;;;"}
1
+ {"version":3,"file":"odx-auth-plugins-service-connect.mjs","sources":["../../../../libs/auth/plugins/service-connect/src/lib/service-connect.config.ts","../../../../libs/auth/plugins/service-connect/src/lib/helpers/build-service-connect-url.ts","../../../../libs/auth/plugins/service-connect/src/lib/helpers/has-roles-or-rights.ts","../../../../libs/auth/plugins/service-connect/src/lib/helpers/has-roles-or-rights-handler.ts","../../../../libs/auth/plugins/service-connect/src/lib/helpers/service-connect-plugin-factory.ts","../../../../libs/auth/plugins/service-connect/src/lib/service-connect-rights.directive.ts","../../../../libs/auth/plugins/service-connect/src/lib/service-connect-rights.guard.ts","../../../../libs/auth/plugins/service-connect/src/lib/service-connect-rights.plugin.ts","../../../../libs/auth/plugins/service-connect/src/lib/service-connect-user-language.plugin.ts","../../../../libs/auth/plugins/service-connect/src/lib/service-connect-user-profile.plugin.ts","../../../../libs/auth/plugins/service-connect/src/odx-auth-plugins-service-connect.ts"],"sourcesContent":["import { AuthEnvironment } from '@odx/auth';\n\nexport type ServiceConnectEnvironment = { custom: string };\nexport const ServiceConnectEnvironments: Record<AuthEnvironment, string> = {\n [AuthEnvironment.DEV]: 'https://api.test.connect.draeger.com',\n [AuthEnvironment.STAGE]: 'https://api.staging.connect.draeger.com',\n [AuthEnvironment.PROD]: 'https://api.connect.draeger.com',\n};\nexport const ServiceConnectScopes = {\n BASE: 'dcid',\n PROFILE: 'dcid.profile',\n RIGHTS: 'dcid.rights',\n INSTITUTION: 'dcid.institution',\n};\nexport const ServiceConnectEndpoints = {\n user: '/users/me',\n userRights: '/users/me/rights',\n};\n","import { buildUrl, isString } from '@odx/angular/utils';\nimport { AuthEnvironment } from '@odx/auth';\nimport { ServiceConnectEnvironment, ServiceConnectEnvironments } from '../service-connect.config';\n\n/**\n * Builds a service connect URL based on the provided environment and endpoints.\n *\n * @param {ServiceConnectEnvironment | AuthEnvironment} environment - The environment configuration which can be either a `ServiceConnectEnvironment` or `AuthEnvironment`.\n * @param {string[]} endpoints - A list of endpoint strings to be appended to the base URL.\n * @returns {string} - The constructed service connect URL as a string.\n */\nexport function buildServiceConnectUrl(environment: ServiceConnectEnvironment | AuthEnvironment, ...endpoints: string[]): string {\n if (isString(environment)) {\n return buildUrl(ServiceConnectEnvironments[environment], ...endpoints);\n }\n return buildUrl(environment.custom, ...endpoints);\n}\n","export type Right = string | number;\nexport type Role = Right[];\nexport type RolesOrRights = Array<Role | Right>;\n\n/**\n * Checks if the user has any of the specified roles or rights.\n *\n * @param {Right[]} userRights - An array of rights that the user possesses.\n * @param {RolesOrRights} rolesOrRights - An array of roles or rights to check against. A role is represented as an array of rights.\n * @returns {boolean} - `true` if the user has any of the specified roles or rights, otherwise `false`.\n */\nexport function hasRolesOrRights(userRights: Right[], rolesOrRights: RolesOrRights): boolean {\n return rolesOrRights.some((rights) => (Array.isArray(rights) ? rights : [rights])?.every((right) => userRights.includes(right)));\n}\n","import { AuthorizedHandler } from '@odx/auth';\nimport { hasRolesOrRights, RolesOrRights } from './has-roles-or-rights';\n\n/**\n * Creates an authorized handler that checks if the user has the specified roles or rights.\n *\n * @param {RolesOrRights} rolesOrRights - The roles or rights to check against the user's claims.\n * @returns {AuthorizedHandler} - An handler function that takes user claims and returns a boolean indicating\n * whether the user has the required roles or rights.\n */\nexport function hasRolesOrRightsHandler(rolesOrRights: RolesOrRights): AuthorizedHandler {\n return (claims) => hasRolesOrRights(claims?.rights ?? [], rolesOrRights);\n}\n","import { HttpClient, HttpContext } from '@angular/common/http';\nimport { inject } from '@angular/core';\nimport { AuthPluginFactory, injectAuthConfig, requireAuthentication } from '@odx/auth';\nimport { defer, map } from 'rxjs';\nimport { ServiceConnectEnvironment } from '../service-connect.config';\nimport { buildServiceConnectUrl } from './build-service-connect-url';\n\nexport interface ServiceConnectPluginOptions<Dto = unknown> {\n environment?: ServiceConnectEnvironment;\n additionalClaims?: (dto: (Dto & Record<string, unknown>) | null) => Partial<OdxAuth.AuthPluginResult>;\n}\n\nexport interface ServiceConnectPluginFactoryOptions<Dto> {\n endpoint: string[];\n parseResponse: (res: Dto | null) => Partial<OdxAuth.AuthPluginResult>;\n defaultValue?: Partial<OdxAuth.AuthPluginResult>;\n setup?: (pluginOptions?: ServiceConnectPluginOptions<Dto>) => void;\n}\n\nexport type ServiceConnectPluginFactory<Dto = unknown> = (pluginOptions?: ServiceConnectPluginOptions<Dto>) => AuthPluginFactory;\n\n/**\n * Creates a plugin factory for fetching and parsing service connect data.\n *\n * @param {ServiceConnectPluginFactoryOptions<Dto>} options - The options for the service connect plugin factory.\n * @returns {ServiceConnectPluginFactory} - A function that creates an auth plugin factory for fetching and parsing service connect data.\n */\nexport function serviceConnectPluginFactory<Dto = unknown>(options: ServiceConnectPluginFactoryOptions<Dto>): ServiceConnectPluginFactory<Dto> {\n return (pluginOptions) => () => {\n options.setup?.(pluginOptions);\n const { environment } = injectAuthConfig();\n const httpClient = inject(HttpClient);\n const url = buildServiceConnectUrl(pluginOptions?.environment ?? environment, ...options.endpoint);\n const parseResponse = (res: Dto | null) => ({\n ...(options.parseResponse(res) ?? options.defaultValue ?? {}),\n ...(pluginOptions?.additionalClaims?.(res as Dto & Record<string, unknown>) ?? {}),\n });\n\n return () => defer(() => httpClient.get<Dto>(url, { context: new HttpContext().set(requireAuthentication, true) })).pipe(map((res) => parseResponse(res)));\n };\n}\n","import { Directive, inject, Input } from '@angular/core';\nimport { AuthDirective } from '@odx/auth';\nimport { hasRolesOrRightsHandler, RolesOrRights } from './helpers';\n\n/**\n * A directive that extends the functionality of the `AuthDirective` to handle\n * roles or rights for service connection authorization.\n *\n * @see AuthDirective\n *\n * This directive should be used on an `ng-template` element with the selector\n * `odxAuthServiceConnectRights`.\n */\n@Directive({\n standalone: true,\n selector: 'ng-template[odxAuthServiceConnectRights]',\n hostDirectives: [\n {\n directive: AuthDirective,\n inputs: ['odxAuthElse:odxAuthServiceConnectRightsElse'],\n },\n ],\n})\nexport class ServiceConnectRightsDirective {\n private readonly authDirective = inject(AuthDirective, { host: true });\n\n /**\n * Sets the roles or rights that the user must have to display the content.\n */\n @Input('odxAuthServiceConnectRights')\n public set rolesOrRights(value: RolesOrRights | null | undefined) {\n this.authDirective.authorizationHandler = hasRolesOrRightsHandler(value ?? []);\n }\n}\n","import { CanActivateFn } from '@angular/router';\nimport { authGuard } from '@odx/auth';\nimport { hasRolesOrRightsHandler, RolesOrRights } from './helpers';\n\n/**\n * A guard function to check if the user has the required roles or rights to access a route.\n *\n * @param {RolesOrRights} rolesOrRights - The roles or rights required to access the route.\n * @param {string | any[]} redirectTo - (Optional) The route to redirect to if the user does not have the required roles or rights.\n * @param {boolean} isExternal - (Optional) A flag indicating if the redirection is to an external URL. Defaults to `false`.\n * @returns {CanActivateFn} - A function that checks the user's roles or rights and handles redirection if necessary.\n */\n// eslint-disable-next-line @typescript-eslint/no-explicit-any\nexport function serviceConnectRightsGuard(rolesOrRights: RolesOrRights, redirectTo?: string | any[], isExternal = false): CanActivateFn {\n return authGuard(hasRolesOrRightsHandler(rolesOrRights), redirectTo, isExternal);\n}\n","import { GetServiceConnectRightsResponseDto } from './dtos';\nimport { Right, serviceConnectPluginFactory } from './helpers';\nimport { ServiceConnectEndpoints } from './service-connect.config';\n\ndeclare global {\n // eslint-disable-next-line @typescript-eslint/no-namespace\n namespace OdxAuth {\n interface AuthPluginResult {\n rights: Right[];\n }\n }\n}\n\n/**\n * A plugin for fetching and parsing service connect rights.\n *\n * This plugin uses the `serviceConnectPluginFactory` to create a plugin that fetches user rights\n * from the specified endpoint and parses the response to extract the rights.\n *\n * @see {serviceConnectPluginFactory}\n */\nexport const serviceConnectRightsPlugin = serviceConnectPluginFactory<GetServiceConnectRightsResponseDto>({\n endpoint: [ServiceConnectEndpoints.userRights],\n parseResponse: (res) => ({ rights: res?.rights ?? [] }),\n defaultValue: { rights: [] },\n});\n","import { getLanguageCode } from '@odx/angular/utils';\nimport { GetServiceConnectUserResponseDto } from './dtos';\nimport { serviceConnectPluginFactory } from './helpers';\nimport { ServiceConnectEndpoints } from './service-connect.config';\n\n/**\n * Gets the preferred language from a service connect user response.\n *\n * @param {GetServiceConnectUserResponseDto | null} res - The service connect user response.\n * @returns {string | undefined} - The language or undefined.\n */\nexport function getServiceConnectUserLanguage(res?: GetServiceConnectUserResponseDto | null): string | undefined {\n return res?.preferred_language || res?.language_code;\n}\n\n/**\n * Gets the language code from a service connect user response.\n *\n * @param {GetServiceConnectUserResponseDto | null} res - The service connect user response.\n * @returns {string | undefined} - The language code or undefined.\n */\nexport function getServiceConnectUserLanguageCode(res?: GetServiceConnectUserResponseDto | null): string | undefined {\n return res?.language_code ? getLanguageCode(res.language_code) : undefined;\n}\n\n/**\n * A plugin for fetching and parsing the user's preferred language from service connect.\n *\n * This plugin uses the `serviceConnectPluginFactory` to create a plugin that fetches the user's preferred language\n * from the user endpoint and parses the response to extract the preferred language.\n *\n * @see {serviceConnectPluginFactory}\n */\nexport const serviceConnectUserLanguagePlugin = serviceConnectPluginFactory<GetServiceConnectUserResponseDto>({\n endpoint: [ServiceConnectEndpoints.user],\n parseResponse: (res) => ({ preferredLanguage: getServiceConnectUserLanguage(res), languageCode: getServiceConnectUserLanguageCode(res) }),\n});\n","import { GetServiceConnectUserResponseDto } from './dtos';\nimport { serviceConnectPluginFactory } from './helpers';\nimport { getServiceConnectUserLanguage, getServiceConnectUserLanguageCode } from './service-connect-user-language.plugin';\nimport { ServiceConnectEndpoints } from './service-connect.config';\n\ndeclare global {\n // eslint-disable-next-line @typescript-eslint/no-namespace\n namespace OdxAuth {\n interface AuthPluginResult {\n country?: string;\n institutionId?: number;\n institutionName?: string;\n institutionName2?: string;\n institutionName3?: string;\n institutionShortname?: string;\n accountNumber?: string;\n }\n }\n}\n\n/**\n * A plugin for fetching and parsing the user's profile from service connect.\n *\n * This plugin uses the `serviceConnectPluginFactory` to create a plugin that fetches the user's profile\n * from the user endpoint and parses the response to extract the user's profile information.\n *\n * @see {serviceConnectPluginFactory}\n */\nexport const serviceConnectUserProfilePlugin = serviceConnectPluginFactory<GetServiceConnectUserResponseDto>({\n endpoint: [ServiceConnectEndpoints.user],\n parseResponse: (res) => {\n return {\n country: res?.country,\n institutionId: res?.institution_id,\n institutionName: res?.institution_name,\n institutionName2: res?.institution_name_2 ?? undefined,\n institutionName3: res?.institution_name_3 ?? undefined,\n accountNumber: res?.account_number ?? undefined,\n institutionShortname: res?.institution_shortname,\n languageCode: getServiceConnectUserLanguageCode(res),\n preferredLanguage: getServiceConnectUserLanguage(res),\n };\n },\n});\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":[],"mappings":";;;;;;;;AAGa,MAAA,0BAA0B,GAAoC;AACzE,IAAA,CAAC,eAAe,CAAC,GAAG,GAAG,sCAAsC;AAC7D,IAAA,CAAC,eAAe,CAAC,KAAK,GAAG,yCAAyC;AAClE,IAAA,CAAC,eAAe,CAAC,IAAI,GAAG,iCAAiC;EACzD;AACW,MAAA,oBAAoB,GAAG;AAClC,IAAA,IAAI,EAAE,MAAM;AACZ,IAAA,OAAO,EAAE,cAAc;AACvB,IAAA,MAAM,EAAE,aAAa;AACrB,IAAA,WAAW,EAAE,kBAAkB;EAC/B;AACW,MAAA,uBAAuB,GAAG;AACrC,IAAA,IAAI,EAAE,WAAW;AACjB,IAAA,UAAU,EAAE,kBAAkB;;;ACZhC;;;;;;AAMG;SACa,sBAAsB,CAAC,WAAwD,EAAE,GAAG,SAAmB,EAAA;AACrH,IAAA,IAAI,QAAQ,CAAC,WAAW,CAAC,EAAE;QACzB,OAAO,QAAQ,CAAC,0BAA0B,CAAC,WAAW,CAAC,EAAE,GAAG,SAAS,CAAC,CAAC;KACxE;IACD,OAAO,QAAQ,CAAC,WAAW,CAAC,MAAM,EAAE,GAAG,SAAS,CAAC,CAAC;AACpD;;ACZA;;;;;;AAMG;AACa,SAAA,gBAAgB,CAAC,UAAmB,EAAE,aAA4B,EAAA;AAChF,IAAA,OAAO,aAAa,CAAC,IAAI,CAAC,CAAC,MAAM,KAAK,CAAC,KAAK,CAAC,OAAO,CAAC,MAAM,CAAC,GAAG,MAAM,GAAG,CAAC,MAAM,CAAC,GAAG,KAAK,CAAC,CAAC,KAAK,KAAK,UAAU,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;AACnI;;ACVA;;;;;;AAMG;AACG,SAAU,uBAAuB,CAAC,aAA4B,EAAA;AAClE,IAAA,OAAO,CAAC,MAAM,KAAK,gBAAgB,CAAC,MAAM,EAAE,MAAM,IAAI,EAAE,EAAE,aAAa,CAAC,CAAC;AAC3E;;ACSA;;;;;AAKG;AACG,SAAU,2BAA2B,CAAgB,OAAgD,EAAA;AACzG,IAAA,OAAO,CAAC,aAAa,KAAK,MAAK;AAC7B,QAAA,OAAO,CAAC,KAAK,GAAG,aAAa,CAAC,CAAC;AAC/B,QAAA,MAAM,EAAE,WAAW,EAAE,GAAG,gBAAgB,EAAE,CAAC;AAC3C,QAAA,MAAM,UAAU,GAAG,MAAM,CAAC,UAAU,CAAC,CAAC;AACtC,QAAA,MAAM,GAAG,GAAG,sBAAsB,CAAC,aAAa,EAAE,WAAW,IAAI,WAAW,EAAE,GAAG,OAAO,CAAC,QAAQ,CAAC,CAAC;AACnG,QAAA,MAAM,aAAa,GAAG,CAAC,GAAe,MAAM;AAC1C,YAAA,IAAI,OAAO,CAAC,aAAa,CAAC,GAAG,CAAC,IAAI,OAAO,CAAC,YAAY,IAAI,EAAE,CAAC;YAC7D,IAAI,aAAa,EAAE,gBAAgB,GAAG,GAAoC,CAAC,IAAI,EAAE,CAAC;AACnF,SAAA,CAAC,CAAC;QAEH,OAAO,MAAM,KAAK,CAAC,MAAM,UAAU,CAAC,GAAG,CAAM,GAAG,EAAE,EAAE,OAAO,EAAE,IAAI,WAAW,EAAE,CAAC,GAAG,CAAC,qBAAqB,EAAE,IAAI,CAAC,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,GAAG,KAAK,aAAa,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC;AAC7J,KAAC,CAAC;AACJ;;ACpCA;;;;;;;;AAQG;MAWU,6BAA6B,CAAA;AAV1C,IAAA,WAAA,GAAA;QAWmB,IAAa,CAAA,aAAA,GAAG,MAAM,CAAC,aAAa,EAAE,EAAE,IAAI,EAAE,IAAI,EAAE,CAAC,CAAC;AASxE,KAAA;AAPC;;AAEG;IACH,IACW,aAAa,CAAC,KAAuC,EAAA;QAC9D,IAAI,CAAC,aAAa,CAAC,oBAAoB,GAAG,uBAAuB,CAAC,KAAK,IAAI,EAAE,CAAC,CAAC;KAChF;+GATU,6BAA6B,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA,EAAA;mGAA7B,6BAA6B,EAAA,YAAA,EAAA,IAAA,EAAA,QAAA,EAAA,0CAAA,EAAA,MAAA,EAAA,EAAA,aAAA,EAAA,CAAA,6BAAA,EAAA,eAAA,CAAA,EAAA,EAAA,cAAA,EAAA,CAAA,EAAA,SAAA,EAAA,EAAA,CAAA,aAAA,EAAA,MAAA,EAAA,CAAA,aAAA,EAAA,iCAAA,CAAA,EAAA,CAAA,EAAA,QAAA,EAAA,EAAA,EAAA,CAAA,CAAA,EAAA;;4FAA7B,6BAA6B,EAAA,UAAA,EAAA,CAAA;kBAVzC,SAAS;AAAC,YAAA,IAAA,EAAA,CAAA;AACT,oBAAA,UAAU,EAAE,IAAI;AAChB,oBAAA,QAAQ,EAAE,0CAA0C;AACpD,oBAAA,cAAc,EAAE;AACd,wBAAA;AACE,4BAAA,SAAS,EAAE,aAAa;4BACxB,MAAM,EAAE,CAAC,6CAA6C,CAAC;AACxD,yBAAA;AACF,qBAAA;AACF,iBAAA,CAAA;8BAQY,aAAa,EAAA,CAAA;sBADvB,KAAK;uBAAC,6BAA6B,CAAA;;;ACzBtC;;;;;;;AAOG;AACH;AACM,SAAU,yBAAyB,CAAC,aAA4B,EAAE,UAA2B,EAAE,UAAU,GAAG,KAAK,EAAA;IACrH,OAAO,SAAS,CAAC,uBAAuB,CAAC,aAAa,CAAC,EAAE,UAAU,EAAE,UAAU,CAAC,CAAC;AACnF;;ACFA;;;;;;;AAOG;AACI,MAAM,0BAA0B,GAAG,2BAA2B,CAAqC;AACxG,IAAA,QAAQ,EAAE,CAAC,uBAAuB,CAAC,UAAU,CAAC;AAC9C,IAAA,aAAa,EAAE,CAAC,GAAG,MAAM,EAAE,MAAM,EAAE,GAAG,EAAE,MAAM,IAAI,EAAE,EAAE,CAAC;AACvD,IAAA,YAAY,EAAE,EAAE,MAAM,EAAE,EAAE,EAAE;AAC7B,CAAA;;ACpBD;;;;;AAKG;AACG,SAAU,6BAA6B,CAAC,GAA6C,EAAA;AACzF,IAAA,OAAO,GAAG,EAAE,kBAAkB,IAAI,GAAG,EAAE,aAAa,CAAC;AACvD,CAAC;AAED;;;;;AAKG;AACG,SAAU,iCAAiC,CAAC,GAA6C,EAAA;AAC7F,IAAA,OAAO,GAAG,EAAE,aAAa,GAAG,eAAe,CAAC,GAAG,CAAC,aAAa,CAAC,GAAG,SAAS,CAAC;AAC7E,CAAC;AAED;;;;;;;AAOG;AACI,MAAM,gCAAgC,GAAG,2BAA2B,CAAmC;AAC5G,IAAA,QAAQ,EAAE,CAAC,uBAAuB,CAAC,IAAI,CAAC;IACxC,aAAa,EAAE,CAAC,GAAG,MAAM,EAAE,iBAAiB,EAAE,6BAA6B,CAAC,GAAG,CAAC,EAAE,YAAY,EAAE,iCAAiC,CAAC,GAAG,CAAC,EAAE,CAAC;AAC1I,CAAA;;AChBD;;;;;;;AAOG;AACI,MAAM,+BAA+B,GAAG,2BAA2B,CAAmC;AAC3G,IAAA,QAAQ,EAAE,CAAC,uBAAuB,CAAC,IAAI,CAAC;AACxC,IAAA,aAAa,EAAE,CAAC,GAAG,KAAI;QACrB,OAAO;YACL,OAAO,EAAE,GAAG,EAAE,OAAO;YACrB,aAAa,EAAE,GAAG,EAAE,cAAc;YAClC,eAAe,EAAE,GAAG,EAAE,gBAAgB;AACtC,YAAA,gBAAgB,EAAE,GAAG,EAAE,kBAAkB,IAAI,SAAS;AACtD,YAAA,gBAAgB,EAAE,GAAG,EAAE,kBAAkB,IAAI,SAAS;AACtD,YAAA,aAAa,EAAE,GAAG,EAAE,cAAc,IAAI,SAAS;YAC/C,oBAAoB,EAAE,GAAG,EAAE,qBAAqB;AAChD,YAAA,YAAY,EAAE,iCAAiC,CAAC,GAAG,CAAC;AACpD,YAAA,iBAAiB,EAAE,6BAA6B,CAAC,GAAG,CAAC;SACtD,CAAC;KACH;AACF,CAAA;;AC3CD;;AAEG;;;;"}
@@ -3,6 +3,7 @@ declare global {
3
3
  type RawIdentityClaims = Record<string, unknown>;
4
4
  interface AuthPluginResult {
5
5
  institutionName?: string;
6
+ languageCode?: string;
6
7
  preferredLanguage?: string;
7
8
  }
8
9
  interface IdentityClaims extends AuthPluginResult {
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@odx/auth",
3
- "version": "16.2.0",
3
+ "version": "17.0.0",
4
4
  "author": "Drägerwerk AG & Co.KGaA",
5
5
  "license": "SEE LICENSE IN LICENSE",
6
6
  "peerDependencies": {
@@ -1,11 +1,18 @@
1
1
  import { GetServiceConnectUserResponseDto } from './dtos';
2
+ /**
3
+ * Gets the preferred language from a service connect user response.
4
+ *
5
+ * @param {GetServiceConnectUserResponseDto | null} res - The service connect user response.
6
+ * @returns {string | undefined} - The language or undefined.
7
+ */
8
+ export declare function getServiceConnectUserLanguage(res?: GetServiceConnectUserResponseDto | null): string | undefined;
2
9
  /**
3
10
  * Gets the language code from a service connect user response.
4
11
  *
5
12
  * @param {GetServiceConnectUserResponseDto | null} res - The service connect user response.
6
13
  * @returns {string | undefined} - The language code or undefined.
7
14
  */
8
- export declare function getServiceConnectUserLanguage(res?: GetServiceConnectUserResponseDto | null): string | undefined;
15
+ export declare function getServiceConnectUserLanguageCode(res?: GetServiceConnectUserResponseDto | null): string | undefined;
9
16
  /**
10
17
  * A plugin for fetching and parsing the user's preferred language from service connect.
11
18
  *
@@ -2,7 +2,7 @@ import { AuthEnvironment } from '@odx/auth';
2
2
  export type ServiceConnectEnvironment = {
3
3
  custom: string;
4
4
  };
5
- export declare const ServiceConnnectEnvironments: Record<AuthEnvironment, string>;
5
+ export declare const ServiceConnectEnvironments: Record<AuthEnvironment, string>;
6
6
  export declare const ServiceConnectScopes: {
7
7
  BASE: string;
8
8
  PROFILE: string;