@commercetools-frontend/application-shell-connectors 27.9.1 → 27.9.2
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.
|
@@ -15,7 +15,6 @@ var react = require('react');
|
|
|
15
15
|
var moment = require('moment-timezone');
|
|
16
16
|
var sentry = require('@commercetools-frontend/sentry');
|
|
17
17
|
var _URL = require('@babel/runtime-corejs3/core-js-stable/url');
|
|
18
|
-
var _concatInstanceProperty = require('@babel/runtime-corejs3/core-js-stable/instance/concat');
|
|
19
18
|
var _slicedToArray = require('@babel/runtime-corejs3/helpers/slicedToArray');
|
|
20
19
|
var _reduceInstanceProperty = require('@babel/runtime-corejs3/core-js-stable/instance/reduce');
|
|
21
20
|
var _Object$entries = require('@babel/runtime-corejs3/core-js-stable/object/entries');
|
|
@@ -33,6 +32,7 @@ var history = require('@commercetools-frontend/browser-history');
|
|
|
33
32
|
var _Array$isArray = require('@babel/runtime-corejs3/core-js-stable/array/is-array');
|
|
34
33
|
var _someInstanceProperty = require('@babel/runtime-corejs3/core-js-stable/instance/some');
|
|
35
34
|
var _Object$values = require('@babel/runtime-corejs3/core-js-stable/object/values');
|
|
35
|
+
var _bindInstanceProperty = require('@babel/runtime-corejs3/core-js-stable/instance/bind');
|
|
36
36
|
var _mapInstanceProperty = require('@babel/runtime-corejs3/core-js-stable/instance/map');
|
|
37
37
|
var createHttpUserAgent = require('@commercetools/http-user-agent');
|
|
38
38
|
var omitEmpty = require('omit-empty-es');
|
|
@@ -59,7 +59,6 @@ var _Object$defineProperties__default = /*#__PURE__*/_interopDefault(_Object$def
|
|
|
59
59
|
var _Object$defineProperty__default = /*#__PURE__*/_interopDefault(_Object$defineProperty);
|
|
60
60
|
var moment__default = /*#__PURE__*/_interopDefault(moment);
|
|
61
61
|
var _URL__default = /*#__PURE__*/_interopDefault(_URL);
|
|
62
|
-
var _concatInstanceProperty__default = /*#__PURE__*/_interopDefault(_concatInstanceProperty);
|
|
63
62
|
var _reduceInstanceProperty__default = /*#__PURE__*/_interopDefault(_reduceInstanceProperty);
|
|
64
63
|
var _Object$entries__default = /*#__PURE__*/_interopDefault(_Object$entries);
|
|
65
64
|
var _valuesInstanceProperty__default = /*#__PURE__*/_interopDefault(_valuesInstanceProperty);
|
|
@@ -71,6 +70,7 @@ var history__default = /*#__PURE__*/_interopDefault(history);
|
|
|
71
70
|
var _Array$isArray__default = /*#__PURE__*/_interopDefault(_Array$isArray);
|
|
72
71
|
var _someInstanceProperty__default = /*#__PURE__*/_interopDefault(_someInstanceProperty);
|
|
73
72
|
var _Object$values__default = /*#__PURE__*/_interopDefault(_Object$values);
|
|
73
|
+
var _bindInstanceProperty__default = /*#__PURE__*/_interopDefault(_bindInstanceProperty);
|
|
74
74
|
var _mapInstanceProperty__default = /*#__PURE__*/_interopDefault(_mapInstanceProperty);
|
|
75
75
|
var createHttpUserAgent__default = /*#__PURE__*/_interopDefault(createHttpUserAgent);
|
|
76
76
|
var omitEmpty__default = /*#__PURE__*/_interopDefault(omitEmpty);
|
|
@@ -78,7 +78,7 @@ var _Reflect$construct__default = /*#__PURE__*/_interopDefault(_Reflect$construc
|
|
|
78
78
|
var _JSON$stringify__default = /*#__PURE__*/_interopDefault(_JSON$stringify);
|
|
79
79
|
|
|
80
80
|
// NOTE: This string will be replaced on build time with the package version.
|
|
81
|
-
var version = "27.9.
|
|
81
|
+
var version = "27.9.2";
|
|
82
82
|
|
|
83
83
|
// From https://github.com/acdlite/recompose/blob/master/src/packages/recompose/getDisplayName.js
|
|
84
84
|
const getDisplayName = Component => {
|
|
@@ -100,10 +100,9 @@ const getMcOriginTld = host => {
|
|
|
100
100
|
return host.replace(mcHostnameRegex, '$3');
|
|
101
101
|
};
|
|
102
102
|
const getMcApiUrlFromOrigin = origin => {
|
|
103
|
-
var _context;
|
|
104
103
|
const url = new _URL__default["default"](origin);
|
|
105
104
|
const originTld = getMcOriginTld(url.host);
|
|
106
|
-
return
|
|
105
|
+
return `${url.protocol}//mc-api.${originTld}`;
|
|
107
106
|
};
|
|
108
107
|
const parseAsBoolean = value => value === true || value === 'true';
|
|
109
108
|
function getMcApiUrl() {
|
|
@@ -323,9 +322,9 @@ const createApplicationContext = (environment, user, project, projectDataLocale)
|
|
|
323
322
|
environment: mapEnvironmentToApplicationContextEnvironment(environment),
|
|
324
323
|
user: mapUserToApplicationContextUser(user),
|
|
325
324
|
project: mapProjectToApplicationContextProject(project),
|
|
326
|
-
permissions: normalizeAllAppliedPermissions(project
|
|
327
|
-
actionRights: normalizeAllAppliedActionRights(project
|
|
328
|
-
dataFences: normalizeAllAppliedDataFences(project
|
|
325
|
+
permissions: normalizeAllAppliedPermissions(project?.allAppliedPermissions),
|
|
326
|
+
actionRights: normalizeAllAppliedActionRights(project?.allAppliedActionRights),
|
|
327
|
+
dataFences: normalizeAllAppliedDataFences(project?.allAppliedDataFences),
|
|
329
328
|
dataLocale: projectDataLocale || null
|
|
330
329
|
});
|
|
331
330
|
const ApplicationContextProvider = props => jsxRuntime.jsx(Context$2.Provider, {
|
|
@@ -355,7 +354,7 @@ function withApplicationContext(mapApplicationContextToProps) {
|
|
|
355
354
|
return jsxRuntime.jsx(Component, _objectSpread$6(_objectSpread$6({}, props), mappedProps));
|
|
356
355
|
}
|
|
357
356
|
});
|
|
358
|
-
WrappedComponent.displayName =
|
|
357
|
+
WrappedComponent.displayName = `withApplicationContext(${getDisplayName(Component)})`;
|
|
359
358
|
return WrappedComponent;
|
|
360
359
|
};
|
|
361
360
|
}
|
|
@@ -471,7 +470,7 @@ const ProjectExtensionProviderForImageRegex = props => {
|
|
|
471
470
|
};
|
|
472
471
|
ProjectExtensionProviderForImageRegex.displayName = 'ProjectExtensionProviderForImageRegex';
|
|
473
472
|
const GetProjectExtensionImageRegex = props => {
|
|
474
|
-
useWarning(false,
|
|
473
|
+
useWarning(false, `@commercetools-frontend/application-shell-connectors: It is not recommended to use the 'GetProjectExtensionImageRegex' anymore. Please use the 'useProjectExtensionImageRegex' hook instead.`);
|
|
475
474
|
return jsxRuntime.jsx(Context.Consumer, {
|
|
476
475
|
children: imageRegexContext => props.render(imageRegexContext)
|
|
477
476
|
});
|
|
@@ -481,7 +480,7 @@ function withProjectExtensionImageRegex() {
|
|
|
481
480
|
let propKey = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : 'imageRegexData';
|
|
482
481
|
return Component => {
|
|
483
482
|
const WrappedComponent = props => {
|
|
484
|
-
useWarning(false,
|
|
483
|
+
useWarning(false, `@commercetools-frontend/application-shell-connectors: It is not recommended to use the 'withProjectExtensionImageRegex' high order component anymore. Please use the 'useProjectExtensionImageRegex' hook instead.`);
|
|
485
484
|
const imageregexContext = useProjectExtensionImageRegex();
|
|
486
485
|
return jsxRuntime.jsx(GetProjectExtensionImageRegex, {
|
|
487
486
|
render: () =>
|
|
@@ -491,7 +490,7 @@ function withProjectExtensionImageRegex() {
|
|
|
491
490
|
}))
|
|
492
491
|
});
|
|
493
492
|
};
|
|
494
|
-
WrappedComponent.displayName =
|
|
493
|
+
WrappedComponent.displayName = `withProjectExtensionImageRegex(${getDisplayName(Component)})`;
|
|
495
494
|
return WrappedComponent;
|
|
496
495
|
};
|
|
497
496
|
}
|
|
@@ -512,8 +511,8 @@ const forwardTokenRetryHeader = headers => _objectSpread$3(_objectSpread$3({}, h
|
|
|
512
511
|
// so that the MC BE can issue a new token.
|
|
513
512
|
// NOTE: the retry is not meant to work for the MC access token.
|
|
514
513
|
const getDoesGraphQLTargetSupportTokenRetry = context => {
|
|
515
|
-
var _context
|
|
516
|
-
const graphQLTarget =
|
|
514
|
+
var _context;
|
|
515
|
+
const graphQLTarget = context.headers?.[constants.SUPPORTED_HEADERS.X_GRAPHQL_TARGET] || context.headers?.[constants.SUPPORTED_HEADERS.X_GRAPHQL_TARGET.toLowerCase()];
|
|
517
516
|
return Boolean(graphQLTarget && _includesInstanceProperty__default["default"](_context = [constants.GRAPHQL_TARGETS.COMMERCETOOLS_PLATFORM, constants.GRAPHQL_TARGETS.ADMINISTRATION_SERVICE, constants.GRAPHQL_TARGETS.SETTINGS_SERVICE, constants.GRAPHQL_TARGETS.MERCHANT_CENTER_BACKEND]).call(_context, graphQLTarget));
|
|
518
517
|
};
|
|
519
518
|
const isHttpError = error => error.statusCode !== undefined || error.statusCode !== undefined;
|
|
@@ -527,7 +526,7 @@ const errorLink = error.onError(_ref => {
|
|
|
527
526
|
operation = _ref.operation,
|
|
528
527
|
forward = _ref.forward;
|
|
529
528
|
if (networkError && isHttpError(networkError) && networkError.statusCode === constants.STATUS_CODES.UNAUTHORIZED) {
|
|
530
|
-
history__default["default"].push(
|
|
529
|
+
history__default["default"].push(`/logout?reason=${constants.LOGOUT_REASONS.UNAUTHORIZED}`);
|
|
531
530
|
return;
|
|
532
531
|
}
|
|
533
532
|
|
|
@@ -539,8 +538,7 @@ const errorLink = error.onError(_ref => {
|
|
|
539
538
|
const context = operation.getContext();
|
|
540
539
|
if (graphQLErrors && isGraphQLError(graphQLErrors)) {
|
|
541
540
|
for (const err of graphQLErrors) {
|
|
542
|
-
|
|
543
|
-
const isNonAuthenticatedViaExtensionCode = (err === null || err === void 0 || (_err$extensions = err.extensions) === null || _err$extensions === void 0 ? void 0 : _err$extensions.code) === 'UNAUTHENTICATED';
|
|
541
|
+
const isNonAuthenticatedViaExtensionCode = err?.extensions?.code === 'UNAUTHENTICATED';
|
|
544
542
|
/**
|
|
545
543
|
* NOTE:
|
|
546
544
|
* Not not all GraphQL APIs expose an `extensions` field in
|
|
@@ -548,7 +546,7 @@ const errorLink = error.onError(_ref => {
|
|
|
548
546
|
* property until they introduced support for the `extensions`
|
|
549
547
|
* field.
|
|
550
548
|
*/
|
|
551
|
-
const isNonAuthenticatedViaCode =
|
|
549
|
+
const isNonAuthenticatedViaCode = err?.message === 'invalid_token';
|
|
552
550
|
if ((isNonAuthenticatedViaExtensionCode || isNonAuthenticatedViaCode) && getDoesGraphQLTargetSupportTokenRetry(context) && !getSkipTokenRetry(context)) {
|
|
553
551
|
operation.setContext(_ref2 => {
|
|
554
552
|
let headers = _ref2.headers;
|
|
@@ -584,8 +582,7 @@ const errorLink = error.onError(_ref => {
|
|
|
584
582
|
|
|
585
583
|
// Attempt to load the `teamId` from sessionStorage
|
|
586
584
|
function selectTeamIdFromStorage() {
|
|
587
|
-
|
|
588
|
-
return window.sessionStorage.getItem(constants.STORAGE_KEYS.ACTIVE_TEAM_ID) || ((_window$app$__DEVELOP = window.app.__DEVELOPMENT__) === null || _window$app$__DEVELOP === void 0 || (_window$app$__DEVELOP = _window$app$__DEVELOP.oidc) === null || _window$app$__DEVELOP === void 0 ? void 0 : _window$app$__DEVELOP.teamId);
|
|
585
|
+
return window.sessionStorage.getItem(constants.STORAGE_KEYS.ACTIVE_TEAM_ID) || window.app.__DEVELOPMENT__?.oidc?.teamId;
|
|
589
586
|
}
|
|
590
587
|
|
|
591
588
|
const staticUrlPathsInPositionOfProjectKey = ['login', 'logout', 'account'];
|
|
@@ -646,7 +643,7 @@ function getCorrelationId() {
|
|
|
646
643
|
|
|
647
644
|
const createApolloContextForProxyForwardTo = proxyForwardTocontext => ({
|
|
648
645
|
// Send the request to the forward-to endpoint.
|
|
649
|
-
uri:
|
|
646
|
+
uri: `${getMcApiUrl()}/proxy/forward-to`,
|
|
650
647
|
// Custom properties to be used by the "header-link".
|
|
651
648
|
forwardToConfig: proxyForwardTocontext,
|
|
652
649
|
skipGraphQlTargetCheck: true
|
|
@@ -688,7 +685,7 @@ function selectUserLanguageFromStorage() {
|
|
|
688
685
|
const getSessionToken = () => window.sessionStorage.getItem(constants.STORAGE_KEYS.SESSION_TOKEN);
|
|
689
686
|
const setActiveSession = sessionToken => {
|
|
690
687
|
if (!sessionToken) return;
|
|
691
|
-
window.sessionStorage.setItem(constants.STORAGE_KEYS.SESSION_TOKEN, sessionToken
|
|
688
|
+
window.sessionStorage.setItem(constants.STORAGE_KEYS.SESSION_TOKEN, sessionToken ?? '');
|
|
692
689
|
window.localStorage.setItem(constants.STORAGE_KEYS.LOGIN_STRATEGY, constants.LOGIN_STRATEGY_OIDC);
|
|
693
690
|
// Remove flag for original workflow
|
|
694
691
|
window.localStorage.removeItem(constants.STORAGE_KEYS.IS_AUTHENTICATED);
|
|
@@ -710,8 +707,7 @@ const setSessionScope = scope => {
|
|
|
710
707
|
window.sessionStorage.setItem(constants.STORAGE_KEYS.SESSION_SCOPE, scope);
|
|
711
708
|
};
|
|
712
709
|
const getSessionState = stateId => {
|
|
713
|
-
|
|
714
|
-
const sessionStateKey = _concatInstanceProperty__default["default"](_context = "".concat(constants.STORAGE_KEYS.NONCE, "_")).call(_context, stateId);
|
|
710
|
+
const sessionStateKey = `${constants.STORAGE_KEYS.NONCE}_${stateId}`;
|
|
715
711
|
const unparsedSessionState = window.sessionStorage.getItem(sessionStateKey);
|
|
716
712
|
if (unparsedSessionState) {
|
|
717
713
|
try {
|
|
@@ -719,22 +715,19 @@ const getSessionState = stateId => {
|
|
|
719
715
|
return parsedSessionState;
|
|
720
716
|
} catch (error) {
|
|
721
717
|
if (process.env.NODE_ENV !== 'production') {
|
|
722
|
-
var _context2;
|
|
723
718
|
// eslint-disable-next-line no-console
|
|
724
|
-
console.warn(
|
|
719
|
+
console.warn(`Cannot parse session state for "${sessionStateKey}".\n${unparsedSessionState}`);
|
|
725
720
|
}
|
|
726
721
|
}
|
|
727
722
|
}
|
|
728
723
|
return null;
|
|
729
724
|
};
|
|
730
725
|
const setSessionState = (stateId, state) => {
|
|
731
|
-
|
|
732
|
-
const sessionStateKey = _concatInstanceProperty__default["default"](_context3 = "".concat(constants.STORAGE_KEYS.NONCE, "_")).call(_context3, stateId);
|
|
726
|
+
const sessionStateKey = `${constants.STORAGE_KEYS.NONCE}_${stateId}`;
|
|
733
727
|
window.sessionStorage.setItem(sessionStateKey, _JSON$stringify__default["default"](state));
|
|
734
728
|
};
|
|
735
729
|
const removeSessionState = stateId => {
|
|
736
|
-
|
|
737
|
-
const sessionStateKey = _concatInstanceProperty__default["default"](_context4 = "".concat(constants.STORAGE_KEYS.NONCE, "_")).call(_context4, stateId);
|
|
730
|
+
const sessionStateKey = `${constants.STORAGE_KEYS.NONCE}_${stateId}`;
|
|
738
731
|
window.sessionStorage.removeItem(sessionStateKey);
|
|
739
732
|
};
|
|
740
733
|
|
|
@@ -756,14 +749,13 @@ var oidcStorage = /*#__PURE__*/Object.freeze({
|
|
|
756
749
|
function _callSuper(t, o, e) { return o = _getPrototypeOf(o), _possibleConstructorReturn(t, _isNativeReflectConstruct() ? _Reflect$construct__default["default"](o, e || [], _getPrototypeOf(t).constructor) : o.apply(t, e)); }
|
|
757
750
|
function _isNativeReflectConstruct() { try { var t = !Boolean.prototype.valueOf.call(_Reflect$construct__default["default"](Boolean, [], function () {})); } catch (t) {} return (_isNativeReflectConstruct = function () { return !!t; })(); }
|
|
758
751
|
function ownKeys$2(e, r) { var t = _Object$keys__default["default"](e); if (_Object$getOwnPropertySymbols__default["default"]) { var o = _Object$getOwnPropertySymbols__default["default"](e); r && (o = _filterInstanceProperty__default["default"](o).call(o, function (r) { return _Object$getOwnPropertyDescriptor__default["default"](e, r).enumerable; })), t.push.apply(t, o); } return t; }
|
|
759
|
-
function _objectSpread$2(e) { for (var r = 1; r < arguments.length; r++) { var
|
|
752
|
+
function _objectSpread$2(e) { for (var r = 1; r < arguments.length; r++) { var _context2, _context3; var t = null != arguments[r] ? arguments[r] : {}; r % 2 ? _forEachInstanceProperty__default["default"](_context2 = ownKeys$2(Object(t), !0)).call(_context2, function (r) { _defineProperty(e, r, t[r]); }) : _Object$getOwnPropertyDescriptors__default["default"] ? _Object$defineProperties__default["default"](e, _Object$getOwnPropertyDescriptors__default["default"](t)) : _forEachInstanceProperty__default["default"](_context3 = ownKeys$2(Object(t))).call(_context3, function (r) { _Object$defineProperty__default["default"](e, r, _Object$getOwnPropertyDescriptor__default["default"](t, r)); }); } return e; }
|
|
760
753
|
let _userAgent$1;
|
|
761
754
|
const getUserAgent$1 = () => {
|
|
762
755
|
if (!_userAgent$1) {
|
|
763
|
-
var _window$app$applicati, _window$app;
|
|
764
756
|
_userAgent$1 = createHttpUserAgent__default["default"]({
|
|
765
757
|
name: 'unknown-http-client',
|
|
766
|
-
libraryName: typeof window !== 'undefined' ?
|
|
758
|
+
libraryName: typeof window !== 'undefined' ? window.app?.applicationName ?? 'unknown-application-name' : undefined
|
|
767
759
|
});
|
|
768
760
|
}
|
|
769
761
|
return _userAgent$1;
|
|
@@ -771,50 +763,48 @@ const getUserAgent$1 = () => {
|
|
|
771
763
|
const defaultForwardToVersion = 'v2';
|
|
772
764
|
const defaultForwardToAudiencePolicy = 'forward-url-full-path';
|
|
773
765
|
function buildApiUrl(endpoint) {
|
|
774
|
-
var _context;
|
|
775
766
|
const apiUrl = getMcApiUrl().replace(/\/$/, '');
|
|
776
|
-
return
|
|
767
|
+
return `${apiUrl}${endpoint}`;
|
|
777
768
|
}
|
|
778
769
|
const getAppliedForwardToHeaders = forwardToConfig => {
|
|
779
|
-
var
|
|
770
|
+
var _context;
|
|
780
771
|
if (!forwardToConfig) {
|
|
781
772
|
return {};
|
|
782
773
|
}
|
|
783
774
|
if (!forwardToConfig.uri) {
|
|
784
|
-
throw new Error(
|
|
775
|
+
throw new Error(`Missing required "uri" option.`);
|
|
785
776
|
}
|
|
786
777
|
const exchangeTokenClaims = [];
|
|
787
778
|
if (forwardToConfig.includeUserPermissions) {
|
|
788
779
|
exchangeTokenClaims.push('permissions');
|
|
789
780
|
}
|
|
790
|
-
return _objectSpread$2(_objectSpread$2({}, _reduceInstanceProperty__default["default"](
|
|
781
|
+
return _objectSpread$2(_objectSpread$2({}, _reduceInstanceProperty__default["default"](_context = _Object$entries__default["default"](forwardToConfig.headers ?? {})).call(_context, (customForwardHeaders, _ref) => {
|
|
791
782
|
let _ref2 = _slicedToArray(_ref, 2),
|
|
792
783
|
headerName = _ref2[0],
|
|
793
784
|
headerValue = _ref2[1];
|
|
794
785
|
return _objectSpread$2(_objectSpread$2({}, customForwardHeaders), {}, {
|
|
795
786
|
// Prefix headers so that the MC API can allow and forward them.
|
|
796
|
-
[
|
|
787
|
+
[`x-forward-header-${headerName}`]: headerValue
|
|
797
788
|
});
|
|
798
789
|
}, {})), {}, {
|
|
799
|
-
[constants.SUPPORTED_HEADERS.ACCEPT_VERSION]:
|
|
790
|
+
[constants.SUPPORTED_HEADERS.ACCEPT_VERSION]: forwardToConfig.version ?? defaultForwardToVersion,
|
|
800
791
|
[constants.SUPPORTED_HEADERS.X_FORWARD_TO]: forwardToConfig.uri,
|
|
801
|
-
[constants.SUPPORTED_HEADERS.X_FORWARD_TO_AUDIENCE_POLICY]:
|
|
792
|
+
[constants.SUPPORTED_HEADERS.X_FORWARD_TO_AUDIENCE_POLICY]: forwardToConfig.audiencePolicy ?? defaultForwardToAudiencePolicy,
|
|
802
793
|
[constants.SUPPORTED_HEADERS.X_FORWARD_TO_CLAIMS]: exchangeTokenClaims.join(' ')
|
|
803
794
|
});
|
|
804
795
|
};
|
|
805
796
|
function createHttpClientOptions() {
|
|
806
|
-
var _config$projectKey, _window$app$__DEVELOP;
|
|
807
797
|
let config = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};
|
|
808
798
|
const sessionToken = getSessionToken();
|
|
809
|
-
const projectKey =
|
|
799
|
+
const projectKey = config.projectKey ?? selectProjectKeyFromUrl();
|
|
810
800
|
const userId = selectUserId();
|
|
811
|
-
const userAgent =
|
|
801
|
+
const userAgent = config?.userAgent || getUserAgent$1();
|
|
812
802
|
return {
|
|
813
803
|
credentials: 'include',
|
|
814
804
|
headers: omitEmpty__default["default"](_objectSpread$2(_objectSpread$2({}, config.headers), {}, {
|
|
815
805
|
// Required headers
|
|
816
806
|
[constants.SUPPORTED_HEADERS.ACCEPT]: 'application/json',
|
|
817
|
-
[constants.SUPPORTED_HEADERS.AUTHORIZATION]: sessionToken ?
|
|
807
|
+
[constants.SUPPORTED_HEADERS.AUTHORIZATION]: sessionToken ? `Bearer ${sessionToken}` : undefined,
|
|
818
808
|
[constants.SUPPORTED_HEADERS.X_APPLICATION_ID]: window.app.applicationIdentifier,
|
|
819
809
|
[constants.SUPPORTED_HEADERS.X_CUSTOM_VIEW_ID]: window.app.customViewId,
|
|
820
810
|
[constants.SUPPORTED_HEADERS.X_CORRELATION_ID]: getCorrelationId({
|
|
@@ -823,7 +813,7 @@ function createHttpClientOptions() {
|
|
|
823
813
|
[constants.SUPPORTED_HEADERS.X_PROJECT_KEY]: projectKey,
|
|
824
814
|
[constants.SUPPORTED_HEADERS.X_USER_AGENT]: userAgent,
|
|
825
815
|
// MC Identity Login Mode Override header for development
|
|
826
|
-
[constants.SUPPORTED_HEADERS.X_MC_IDENTITY_LOGIN_MODE_OVERRIDE]:
|
|
816
|
+
[constants.SUPPORTED_HEADERS.X_MC_IDENTITY_LOGIN_MODE_OVERRIDE]: window.app.__DEVELOPMENT__?.mcIdentityLoginModeOverride
|
|
827
817
|
}, getAppliedForwardToHeaders(config.forwardToConfig)))
|
|
828
818
|
};
|
|
829
819
|
}
|
|
@@ -854,7 +844,7 @@ async function executeHttpClientRequest(fetcher) {
|
|
|
854
844
|
}))
|
|
855
845
|
}));
|
|
856
846
|
if (response.statusCode === constants.STATUS_CODES.UNAUTHORIZED) {
|
|
857
|
-
throw new RenewTokenError(
|
|
847
|
+
throw new RenewTokenError(`Unauthorized response, attempting retry.`);
|
|
858
848
|
}
|
|
859
849
|
|
|
860
850
|
// In case a new session token is returned from the server, save it.
|
|
@@ -878,15 +868,15 @@ async function executeHttpClientRequest(fetcher) {
|
|
|
878
868
|
}
|
|
879
869
|
|
|
880
870
|
function ownKeys$1(e, r) { var t = _Object$keys__default["default"](e); if (_Object$getOwnPropertySymbols__default["default"]) { var o = _Object$getOwnPropertySymbols__default["default"](e); r && (o = _filterInstanceProperty__default["default"](o).call(o, function (r) { return _Object$getOwnPropertyDescriptor__default["default"](e, r).enumerable; })), t.push.apply(t, o); } return t; }
|
|
881
|
-
function _objectSpread$1(e) { for (var r = 1; r < arguments.length; r++) { var
|
|
871
|
+
function _objectSpread$1(e) { for (var r = 1; r < arguments.length; r++) { var _context6, _context7; var t = null != arguments[r] ? arguments[r] : {}; r % 2 ? _forEachInstanceProperty__default["default"](_context6 = ownKeys$1(Object(t), !0)).call(_context6, function (r) { _defineProperty(e, r, t[r]); }) : _Object$getOwnPropertyDescriptors__default["default"] ? _Object$defineProperties__default["default"](e, _Object$getOwnPropertyDescriptors__default["default"](t)) : _forEachInstanceProperty__default["default"](_context7 = ownKeys$1(Object(t))).call(_context7, function (r) { _Object$defineProperty__default["default"](e, r, _Object$getOwnPropertyDescriptor__default["default"](t, r)); }); } return e; }
|
|
882
872
|
let _userAgent;
|
|
883
873
|
const getUserAgent = () => {
|
|
884
874
|
if (!_userAgent) {
|
|
885
|
-
var _context
|
|
875
|
+
var _context;
|
|
886
876
|
_userAgent = createHttpUserAgent__default["default"]({
|
|
887
877
|
name: 'apollo-client',
|
|
888
878
|
// version: apolloVersion,
|
|
889
|
-
libraryName: _filterInstanceProperty__default["default"](_context = [typeof window !== 'undefined' ?
|
|
879
|
+
libraryName: _filterInstanceProperty__default["default"](_context = [typeof window !== 'undefined' ? window.app?.applicationName ?? 'unknown-application-name' : undefined, 'application-shell']).call(_context, Boolean).join('/'),
|
|
890
880
|
libraryVersion: version,
|
|
891
881
|
contactUrl: 'https://git.io/fjuyC',
|
|
892
882
|
// points to the appkit repo issues
|
|
@@ -900,18 +890,14 @@ const isKnownGraphQlTarget = target => {
|
|
|
900
890
|
return target ? _includesInstanceProperty__default["default"](_context2 = _Object$values__default["default"](constants.GRAPHQL_TARGETS)).call(_context2, target) : false;
|
|
901
891
|
};
|
|
902
892
|
const extractSessionTokenFromResponse = context => {
|
|
903
|
-
var
|
|
904
|
-
const refreshedSessionToken =
|
|
893
|
+
var _context3, _context4;
|
|
894
|
+
const refreshedSessionToken = context.response?.headers?.get('x-refreshed-session-token');
|
|
905
895
|
if (refreshedSessionToken) {
|
|
906
|
-
return refreshedSessionToken
|
|
896
|
+
return refreshedSessionToken ?? null;
|
|
907
897
|
}
|
|
908
|
-
const restResponseWithRefreshTokenHeader = (
|
|
909
|
-
var _response$headers;
|
|
910
|
-
return (_response$headers = response.headers) === null || _response$headers === void 0 ? void 0 : _response$headers.has('x-refreshed-session-token');
|
|
911
|
-
});
|
|
898
|
+
const restResponseWithRefreshTokenHeader = ((_context3 = context.restResponses) == null ? void 0 : _bindInstanceProperty__default["default"](_context4 = Function.call).call(_context4, _findInstanceProperty__default["default"](_context3), _context3))?.(response => response.headers?.has('x-refreshed-session-token'));
|
|
912
899
|
if (restResponseWithRefreshTokenHeader) {
|
|
913
|
-
|
|
914
|
-
return (_restResponseWithRefr = restResponseWithRefreshTokenHeader.headers.get('x-refreshed-session-token')) !== null && _restResponseWithRefr !== void 0 ? _restResponseWithRefr : null;
|
|
900
|
+
return restResponseWithRefreshTokenHeader.headers.get('x-refreshed-session-token') ?? null;
|
|
915
901
|
}
|
|
916
902
|
return null;
|
|
917
903
|
};
|
|
@@ -919,11 +905,11 @@ const extractSessionTokenFromResponse = context => {
|
|
|
919
905
|
/* eslint-disable import/prefer-default-export */
|
|
920
906
|
// Use a middleware to update the request headers with the correct params.
|
|
921
907
|
const headerLink = new client.ApolloLink((operation, forward) => {
|
|
922
|
-
var
|
|
908
|
+
var _context5;
|
|
923
909
|
const apolloContext = operation.getContext();
|
|
924
910
|
const variables = operation.variables;
|
|
925
911
|
const graphQlTarget = apolloContext.target || variables.target;
|
|
926
|
-
if (!apolloContext.skipGraphQlTargetCheck && !isKnownGraphQlTarget(graphQlTarget)) throw new Error(
|
|
912
|
+
if (!apolloContext.skipGraphQlTargetCheck && !isKnownGraphQlTarget(graphQlTarget)) throw new Error(`GraphQL target "${graphQlTarget}" is missing (or is not supported) in operation "${operation.operationName}"`);
|
|
927
913
|
|
|
928
914
|
/**
|
|
929
915
|
* NOTE:
|
|
@@ -950,7 +936,7 @@ const headerLink = new client.ApolloLink((operation, forward) => {
|
|
|
950
936
|
forwardToConfig: apolloContext.forwardToConfig,
|
|
951
937
|
projectKey
|
|
952
938
|
}));
|
|
953
|
-
return _mapInstanceProperty__default["default"](
|
|
939
|
+
return _mapInstanceProperty__default["default"](_context5 = forward(operation)).call(_context5, response => {
|
|
954
940
|
const context = operation.getContext();
|
|
955
941
|
const refreshedSessionToken = extractSessionTokenFromResponse(context);
|
|
956
942
|
if (refreshedSessionToken) {
|
|
@@ -963,7 +949,7 @@ const headerLink = new client.ApolloLink((operation, forward) => {
|
|
|
963
949
|
const tokenRetryLink = new retry.RetryLink({
|
|
964
950
|
attempts: (count, operation, error) => {
|
|
965
951
|
const context = operation.getContext();
|
|
966
|
-
if (
|
|
952
|
+
if (error?.statusCode === constants.STATUS_CODES.UNAUTHORIZED && count === 1 && getDoesGraphQLTargetSupportTokenRetry(context) && !getSkipTokenRetry(context)) {
|
|
967
953
|
operation.setContext(_ref => {
|
|
968
954
|
let headers = _ref.headers;
|
|
969
955
|
return {
|
|
@@ -981,7 +967,7 @@ function _objectSpread(e) { for (var r = 1; r < arguments.length; r++) { var _co
|
|
|
981
967
|
const createApolloLink = function () {
|
|
982
968
|
let options = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};
|
|
983
969
|
const httpLink = client.createHttpLink({
|
|
984
|
-
uri:
|
|
970
|
+
uri: `${getMcApiUrl()}/graphql`,
|
|
985
971
|
fetch
|
|
986
972
|
});
|
|
987
973
|
|
|
@@ -1025,9 +1011,8 @@ const mergeArraysObjects = function () {
|
|
|
1025
1011
|
}, []);
|
|
1026
1012
|
};
|
|
1027
1013
|
const createApolloClient = function () {
|
|
1028
|
-
var _options$cache, _customCacheConfig$ty;
|
|
1029
1014
|
let options = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};
|
|
1030
|
-
const customCacheConfig =
|
|
1015
|
+
const customCacheConfig = options?.cache ?? {};
|
|
1031
1016
|
return new client.ApolloClient({
|
|
1032
1017
|
link: createApolloLink(options),
|
|
1033
1018
|
// https://www.apollographql.com/docs/react/caching/cache-configuration/
|
|
@@ -1066,7 +1051,7 @@ const createApolloClient = function () {
|
|
|
1066
1051
|
}
|
|
1067
1052
|
}
|
|
1068
1053
|
}
|
|
1069
|
-
},
|
|
1054
|
+
}, customCacheConfig.typePolicies ?? {})
|
|
1070
1055
|
}))
|
|
1071
1056
|
});
|
|
1072
1057
|
};
|
|
@@ -15,7 +15,6 @@ var react = require('react');
|
|
|
15
15
|
var moment = require('moment-timezone');
|
|
16
16
|
var sentry = require('@commercetools-frontend/sentry');
|
|
17
17
|
var _URL = require('@babel/runtime-corejs3/core-js-stable/url');
|
|
18
|
-
var _concatInstanceProperty = require('@babel/runtime-corejs3/core-js-stable/instance/concat');
|
|
19
18
|
var _slicedToArray = require('@babel/runtime-corejs3/helpers/slicedToArray');
|
|
20
19
|
var _reduceInstanceProperty = require('@babel/runtime-corejs3/core-js-stable/instance/reduce');
|
|
21
20
|
var _Object$entries = require('@babel/runtime-corejs3/core-js-stable/object/entries');
|
|
@@ -33,6 +32,7 @@ var history = require('@commercetools-frontend/browser-history');
|
|
|
33
32
|
var _Array$isArray = require('@babel/runtime-corejs3/core-js-stable/array/is-array');
|
|
34
33
|
var _someInstanceProperty = require('@babel/runtime-corejs3/core-js-stable/instance/some');
|
|
35
34
|
var _Object$values = require('@babel/runtime-corejs3/core-js-stable/object/values');
|
|
35
|
+
var _bindInstanceProperty = require('@babel/runtime-corejs3/core-js-stable/instance/bind');
|
|
36
36
|
var _mapInstanceProperty = require('@babel/runtime-corejs3/core-js-stable/instance/map');
|
|
37
37
|
var createHttpUserAgent = require('@commercetools/http-user-agent');
|
|
38
38
|
var omitEmpty = require('omit-empty-es');
|
|
@@ -59,7 +59,6 @@ var _Object$defineProperties__default = /*#__PURE__*/_interopDefault(_Object$def
|
|
|
59
59
|
var _Object$defineProperty__default = /*#__PURE__*/_interopDefault(_Object$defineProperty);
|
|
60
60
|
var moment__default = /*#__PURE__*/_interopDefault(moment);
|
|
61
61
|
var _URL__default = /*#__PURE__*/_interopDefault(_URL);
|
|
62
|
-
var _concatInstanceProperty__default = /*#__PURE__*/_interopDefault(_concatInstanceProperty);
|
|
63
62
|
var _reduceInstanceProperty__default = /*#__PURE__*/_interopDefault(_reduceInstanceProperty);
|
|
64
63
|
var _Object$entries__default = /*#__PURE__*/_interopDefault(_Object$entries);
|
|
65
64
|
var _valuesInstanceProperty__default = /*#__PURE__*/_interopDefault(_valuesInstanceProperty);
|
|
@@ -70,6 +69,7 @@ var history__default = /*#__PURE__*/_interopDefault(history);
|
|
|
70
69
|
var _Array$isArray__default = /*#__PURE__*/_interopDefault(_Array$isArray);
|
|
71
70
|
var _someInstanceProperty__default = /*#__PURE__*/_interopDefault(_someInstanceProperty);
|
|
72
71
|
var _Object$values__default = /*#__PURE__*/_interopDefault(_Object$values);
|
|
72
|
+
var _bindInstanceProperty__default = /*#__PURE__*/_interopDefault(_bindInstanceProperty);
|
|
73
73
|
var _mapInstanceProperty__default = /*#__PURE__*/_interopDefault(_mapInstanceProperty);
|
|
74
74
|
var createHttpUserAgent__default = /*#__PURE__*/_interopDefault(createHttpUserAgent);
|
|
75
75
|
var omitEmpty__default = /*#__PURE__*/_interopDefault(omitEmpty);
|
|
@@ -77,7 +77,7 @@ var _Reflect$construct__default = /*#__PURE__*/_interopDefault(_Reflect$construc
|
|
|
77
77
|
var _JSON$stringify__default = /*#__PURE__*/_interopDefault(_JSON$stringify);
|
|
78
78
|
|
|
79
79
|
// NOTE: This string will be replaced on build time with the package version.
|
|
80
|
-
var version = "27.9.
|
|
80
|
+
var version = "27.9.2";
|
|
81
81
|
|
|
82
82
|
// From https://github.com/acdlite/recompose/blob/master/src/packages/recompose/getDisplayName.js
|
|
83
83
|
const getDisplayName = Component => {
|
|
@@ -99,10 +99,9 @@ const getMcOriginTld = host => {
|
|
|
99
99
|
return host.replace(mcHostnameRegex, '$3');
|
|
100
100
|
};
|
|
101
101
|
const getMcApiUrlFromOrigin = origin => {
|
|
102
|
-
var _context;
|
|
103
102
|
const url = new _URL__default["default"](origin);
|
|
104
103
|
const originTld = getMcOriginTld(url.host);
|
|
105
|
-
return
|
|
104
|
+
return `${url.protocol}//mc-api.${originTld}`;
|
|
106
105
|
};
|
|
107
106
|
const parseAsBoolean = value => value === true || value === 'true';
|
|
108
107
|
function getMcApiUrl() {
|
|
@@ -322,9 +321,9 @@ const createApplicationContext = (environment, user, project, projectDataLocale)
|
|
|
322
321
|
environment: mapEnvironmentToApplicationContextEnvironment(environment),
|
|
323
322
|
user: mapUserToApplicationContextUser(user),
|
|
324
323
|
project: mapProjectToApplicationContextProject(project),
|
|
325
|
-
permissions: normalizeAllAppliedPermissions(project
|
|
326
|
-
actionRights: normalizeAllAppliedActionRights(project
|
|
327
|
-
dataFences: normalizeAllAppliedDataFences(project
|
|
324
|
+
permissions: normalizeAllAppliedPermissions(project?.allAppliedPermissions),
|
|
325
|
+
actionRights: normalizeAllAppliedActionRights(project?.allAppliedActionRights),
|
|
326
|
+
dataFences: normalizeAllAppliedDataFences(project?.allAppliedDataFences),
|
|
328
327
|
dataLocale: projectDataLocale || null
|
|
329
328
|
});
|
|
330
329
|
const ApplicationContextProvider = props => jsxRuntime.jsx(Context$2.Provider, {
|
|
@@ -354,7 +353,7 @@ function withApplicationContext(mapApplicationContextToProps) {
|
|
|
354
353
|
return jsxRuntime.jsx(Component, _objectSpread$6(_objectSpread$6({}, props), mappedProps));
|
|
355
354
|
}
|
|
356
355
|
});
|
|
357
|
-
WrappedComponent.displayName =
|
|
356
|
+
WrappedComponent.displayName = `withApplicationContext(${getDisplayName(Component)})`;
|
|
358
357
|
return WrappedComponent;
|
|
359
358
|
};
|
|
360
359
|
}
|
|
@@ -489,7 +488,7 @@ function withProjectExtensionImageRegex() {
|
|
|
489
488
|
}))
|
|
490
489
|
});
|
|
491
490
|
};
|
|
492
|
-
WrappedComponent.displayName =
|
|
491
|
+
WrappedComponent.displayName = `withProjectExtensionImageRegex(${getDisplayName(Component)})`;
|
|
493
492
|
return WrappedComponent;
|
|
494
493
|
};
|
|
495
494
|
}
|
|
@@ -510,8 +509,8 @@ const forwardTokenRetryHeader = headers => _objectSpread$3(_objectSpread$3({}, h
|
|
|
510
509
|
// so that the MC BE can issue a new token.
|
|
511
510
|
// NOTE: the retry is not meant to work for the MC access token.
|
|
512
511
|
const getDoesGraphQLTargetSupportTokenRetry = context => {
|
|
513
|
-
var _context
|
|
514
|
-
const graphQLTarget =
|
|
512
|
+
var _context;
|
|
513
|
+
const graphQLTarget = context.headers?.[constants.SUPPORTED_HEADERS.X_GRAPHQL_TARGET] || context.headers?.[constants.SUPPORTED_HEADERS.X_GRAPHQL_TARGET.toLowerCase()];
|
|
515
514
|
return Boolean(graphQLTarget && _includesInstanceProperty__default["default"](_context = [constants.GRAPHQL_TARGETS.COMMERCETOOLS_PLATFORM, constants.GRAPHQL_TARGETS.ADMINISTRATION_SERVICE, constants.GRAPHQL_TARGETS.SETTINGS_SERVICE, constants.GRAPHQL_TARGETS.MERCHANT_CENTER_BACKEND]).call(_context, graphQLTarget));
|
|
516
515
|
};
|
|
517
516
|
const isHttpError = error => error.statusCode !== undefined || error.statusCode !== undefined;
|
|
@@ -525,7 +524,7 @@ const errorLink = error.onError(_ref => {
|
|
|
525
524
|
operation = _ref.operation,
|
|
526
525
|
forward = _ref.forward;
|
|
527
526
|
if (networkError && isHttpError(networkError) && networkError.statusCode === constants.STATUS_CODES.UNAUTHORIZED) {
|
|
528
|
-
history__default["default"].push(
|
|
527
|
+
history__default["default"].push(`/logout?reason=${constants.LOGOUT_REASONS.UNAUTHORIZED}`);
|
|
529
528
|
return;
|
|
530
529
|
}
|
|
531
530
|
|
|
@@ -537,8 +536,7 @@ const errorLink = error.onError(_ref => {
|
|
|
537
536
|
const context = operation.getContext();
|
|
538
537
|
if (graphQLErrors && isGraphQLError(graphQLErrors)) {
|
|
539
538
|
for (const err of graphQLErrors) {
|
|
540
|
-
|
|
541
|
-
const isNonAuthenticatedViaExtensionCode = (err === null || err === void 0 || (_err$extensions = err.extensions) === null || _err$extensions === void 0 ? void 0 : _err$extensions.code) === 'UNAUTHENTICATED';
|
|
539
|
+
const isNonAuthenticatedViaExtensionCode = err?.extensions?.code === 'UNAUTHENTICATED';
|
|
542
540
|
/**
|
|
543
541
|
* NOTE:
|
|
544
542
|
* Not not all GraphQL APIs expose an `extensions` field in
|
|
@@ -546,7 +544,7 @@ const errorLink = error.onError(_ref => {
|
|
|
546
544
|
* property until they introduced support for the `extensions`
|
|
547
545
|
* field.
|
|
548
546
|
*/
|
|
549
|
-
const isNonAuthenticatedViaCode =
|
|
547
|
+
const isNonAuthenticatedViaCode = err?.message === 'invalid_token';
|
|
550
548
|
if ((isNonAuthenticatedViaExtensionCode || isNonAuthenticatedViaCode) && getDoesGraphQLTargetSupportTokenRetry(context) && !getSkipTokenRetry(context)) {
|
|
551
549
|
operation.setContext(_ref2 => {
|
|
552
550
|
let headers = _ref2.headers;
|
|
@@ -582,8 +580,7 @@ const errorLink = error.onError(_ref => {
|
|
|
582
580
|
|
|
583
581
|
// Attempt to load the `teamId` from sessionStorage
|
|
584
582
|
function selectTeamIdFromStorage() {
|
|
585
|
-
|
|
586
|
-
return window.sessionStorage.getItem(constants.STORAGE_KEYS.ACTIVE_TEAM_ID) || ((_window$app$__DEVELOP = window.app.__DEVELOPMENT__) === null || _window$app$__DEVELOP === void 0 || (_window$app$__DEVELOP = _window$app$__DEVELOP.oidc) === null || _window$app$__DEVELOP === void 0 ? void 0 : _window$app$__DEVELOP.teamId);
|
|
583
|
+
return window.sessionStorage.getItem(constants.STORAGE_KEYS.ACTIVE_TEAM_ID) || window.app.__DEVELOPMENT__?.oidc?.teamId;
|
|
587
584
|
}
|
|
588
585
|
|
|
589
586
|
const staticUrlPathsInPositionOfProjectKey = ['login', 'logout', 'account'];
|
|
@@ -644,7 +641,7 @@ function getCorrelationId() {
|
|
|
644
641
|
|
|
645
642
|
const createApolloContextForProxyForwardTo = proxyForwardTocontext => ({
|
|
646
643
|
// Send the request to the forward-to endpoint.
|
|
647
|
-
uri:
|
|
644
|
+
uri: `${getMcApiUrl()}/proxy/forward-to`,
|
|
648
645
|
// Custom properties to be used by the "header-link".
|
|
649
646
|
forwardToConfig: proxyForwardTocontext,
|
|
650
647
|
skipGraphQlTargetCheck: true
|
|
@@ -685,7 +682,7 @@ function selectUserLanguageFromStorage() {
|
|
|
685
682
|
const getSessionToken = () => window.sessionStorage.getItem(constants.STORAGE_KEYS.SESSION_TOKEN);
|
|
686
683
|
const setActiveSession = sessionToken => {
|
|
687
684
|
if (!sessionToken) return;
|
|
688
|
-
window.sessionStorage.setItem(constants.STORAGE_KEYS.SESSION_TOKEN, sessionToken
|
|
685
|
+
window.sessionStorage.setItem(constants.STORAGE_KEYS.SESSION_TOKEN, sessionToken ?? '');
|
|
689
686
|
window.localStorage.setItem(constants.STORAGE_KEYS.LOGIN_STRATEGY, constants.LOGIN_STRATEGY_OIDC);
|
|
690
687
|
// Remove flag for original workflow
|
|
691
688
|
window.localStorage.removeItem(constants.STORAGE_KEYS.IS_AUTHENTICATED);
|
|
@@ -707,8 +704,7 @@ const setSessionScope = scope => {
|
|
|
707
704
|
window.sessionStorage.setItem(constants.STORAGE_KEYS.SESSION_SCOPE, scope);
|
|
708
705
|
};
|
|
709
706
|
const getSessionState = stateId => {
|
|
710
|
-
|
|
711
|
-
const sessionStateKey = _concatInstanceProperty__default["default"](_context = "".concat(constants.STORAGE_KEYS.NONCE, "_")).call(_context, stateId);
|
|
707
|
+
const sessionStateKey = `${constants.STORAGE_KEYS.NONCE}_${stateId}`;
|
|
712
708
|
const unparsedSessionState = window.sessionStorage.getItem(sessionStateKey);
|
|
713
709
|
if (unparsedSessionState) {
|
|
714
710
|
try {
|
|
@@ -720,13 +716,11 @@ const getSessionState = stateId => {
|
|
|
720
716
|
return null;
|
|
721
717
|
};
|
|
722
718
|
const setSessionState = (stateId, state) => {
|
|
723
|
-
|
|
724
|
-
const sessionStateKey = _concatInstanceProperty__default["default"](_context3 = "".concat(constants.STORAGE_KEYS.NONCE, "_")).call(_context3, stateId);
|
|
719
|
+
const sessionStateKey = `${constants.STORAGE_KEYS.NONCE}_${stateId}`;
|
|
725
720
|
window.sessionStorage.setItem(sessionStateKey, _JSON$stringify__default["default"](state));
|
|
726
721
|
};
|
|
727
722
|
const removeSessionState = stateId => {
|
|
728
|
-
|
|
729
|
-
const sessionStateKey = _concatInstanceProperty__default["default"](_context4 = "".concat(constants.STORAGE_KEYS.NONCE, "_")).call(_context4, stateId);
|
|
723
|
+
const sessionStateKey = `${constants.STORAGE_KEYS.NONCE}_${stateId}`;
|
|
730
724
|
window.sessionStorage.removeItem(sessionStateKey);
|
|
731
725
|
};
|
|
732
726
|
|
|
@@ -748,14 +742,13 @@ var oidcStorage = /*#__PURE__*/Object.freeze({
|
|
|
748
742
|
function _callSuper(t, o, e) { return o = _getPrototypeOf(o), _possibleConstructorReturn(t, _isNativeReflectConstruct() ? _Reflect$construct__default["default"](o, e || [], _getPrototypeOf(t).constructor) : o.apply(t, e)); }
|
|
749
743
|
function _isNativeReflectConstruct() { try { var t = !Boolean.prototype.valueOf.call(_Reflect$construct__default["default"](Boolean, [], function () {})); } catch (t) {} return (_isNativeReflectConstruct = function () { return !!t; })(); }
|
|
750
744
|
function ownKeys$2(e, r) { var t = _Object$keys__default["default"](e); if (_Object$getOwnPropertySymbols__default["default"]) { var o = _Object$getOwnPropertySymbols__default["default"](e); r && (o = _filterInstanceProperty__default["default"](o).call(o, function (r) { return _Object$getOwnPropertyDescriptor__default["default"](e, r).enumerable; })), t.push.apply(t, o); } return t; }
|
|
751
|
-
function _objectSpread$2(e) { for (var r = 1; r < arguments.length; r++) { var
|
|
745
|
+
function _objectSpread$2(e) { for (var r = 1; r < arguments.length; r++) { var _context2, _context3; var t = null != arguments[r] ? arguments[r] : {}; r % 2 ? _forEachInstanceProperty__default["default"](_context2 = ownKeys$2(Object(t), !0)).call(_context2, function (r) { _defineProperty(e, r, t[r]); }) : _Object$getOwnPropertyDescriptors__default["default"] ? _Object$defineProperties__default["default"](e, _Object$getOwnPropertyDescriptors__default["default"](t)) : _forEachInstanceProperty__default["default"](_context3 = ownKeys$2(Object(t))).call(_context3, function (r) { _Object$defineProperty__default["default"](e, r, _Object$getOwnPropertyDescriptor__default["default"](t, r)); }); } return e; }
|
|
752
746
|
let _userAgent$1;
|
|
753
747
|
const getUserAgent$1 = () => {
|
|
754
748
|
if (!_userAgent$1) {
|
|
755
|
-
var _window$app$applicati, _window$app;
|
|
756
749
|
_userAgent$1 = createHttpUserAgent__default["default"]({
|
|
757
750
|
name: 'unknown-http-client',
|
|
758
|
-
libraryName: typeof window !== 'undefined' ?
|
|
751
|
+
libraryName: typeof window !== 'undefined' ? window.app?.applicationName ?? 'unknown-application-name' : undefined
|
|
759
752
|
});
|
|
760
753
|
}
|
|
761
754
|
return _userAgent$1;
|
|
@@ -763,50 +756,48 @@ const getUserAgent$1 = () => {
|
|
|
763
756
|
const defaultForwardToVersion = 'v2';
|
|
764
757
|
const defaultForwardToAudiencePolicy = 'forward-url-full-path';
|
|
765
758
|
function buildApiUrl(endpoint) {
|
|
766
|
-
var _context;
|
|
767
759
|
const apiUrl = getMcApiUrl().replace(/\/$/, '');
|
|
768
|
-
return
|
|
760
|
+
return `${apiUrl}${endpoint}`;
|
|
769
761
|
}
|
|
770
762
|
const getAppliedForwardToHeaders = forwardToConfig => {
|
|
771
|
-
var
|
|
763
|
+
var _context;
|
|
772
764
|
if (!forwardToConfig) {
|
|
773
765
|
return {};
|
|
774
766
|
}
|
|
775
767
|
if (!forwardToConfig.uri) {
|
|
776
|
-
throw new Error(
|
|
768
|
+
throw new Error(`Missing required "uri" option.`);
|
|
777
769
|
}
|
|
778
770
|
const exchangeTokenClaims = [];
|
|
779
771
|
if (forwardToConfig.includeUserPermissions) {
|
|
780
772
|
exchangeTokenClaims.push('permissions');
|
|
781
773
|
}
|
|
782
|
-
return _objectSpread$2(_objectSpread$2({}, _reduceInstanceProperty__default["default"](
|
|
774
|
+
return _objectSpread$2(_objectSpread$2({}, _reduceInstanceProperty__default["default"](_context = _Object$entries__default["default"](forwardToConfig.headers ?? {})).call(_context, (customForwardHeaders, _ref) => {
|
|
783
775
|
let _ref2 = _slicedToArray(_ref, 2),
|
|
784
776
|
headerName = _ref2[0],
|
|
785
777
|
headerValue = _ref2[1];
|
|
786
778
|
return _objectSpread$2(_objectSpread$2({}, customForwardHeaders), {}, {
|
|
787
779
|
// Prefix headers so that the MC API can allow and forward them.
|
|
788
|
-
[
|
|
780
|
+
[`x-forward-header-${headerName}`]: headerValue
|
|
789
781
|
});
|
|
790
782
|
}, {})), {}, {
|
|
791
|
-
[constants.SUPPORTED_HEADERS.ACCEPT_VERSION]:
|
|
783
|
+
[constants.SUPPORTED_HEADERS.ACCEPT_VERSION]: forwardToConfig.version ?? defaultForwardToVersion,
|
|
792
784
|
[constants.SUPPORTED_HEADERS.X_FORWARD_TO]: forwardToConfig.uri,
|
|
793
|
-
[constants.SUPPORTED_HEADERS.X_FORWARD_TO_AUDIENCE_POLICY]:
|
|
785
|
+
[constants.SUPPORTED_HEADERS.X_FORWARD_TO_AUDIENCE_POLICY]: forwardToConfig.audiencePolicy ?? defaultForwardToAudiencePolicy,
|
|
794
786
|
[constants.SUPPORTED_HEADERS.X_FORWARD_TO_CLAIMS]: exchangeTokenClaims.join(' ')
|
|
795
787
|
});
|
|
796
788
|
};
|
|
797
789
|
function createHttpClientOptions() {
|
|
798
|
-
var _config$projectKey, _window$app$__DEVELOP;
|
|
799
790
|
let config = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};
|
|
800
791
|
const sessionToken = getSessionToken();
|
|
801
|
-
const projectKey =
|
|
792
|
+
const projectKey = config.projectKey ?? selectProjectKeyFromUrl();
|
|
802
793
|
const userId = selectUserId();
|
|
803
|
-
const userAgent =
|
|
794
|
+
const userAgent = config?.userAgent || getUserAgent$1();
|
|
804
795
|
return {
|
|
805
796
|
credentials: 'include',
|
|
806
797
|
headers: omitEmpty__default["default"](_objectSpread$2(_objectSpread$2({}, config.headers), {}, {
|
|
807
798
|
// Required headers
|
|
808
799
|
[constants.SUPPORTED_HEADERS.ACCEPT]: 'application/json',
|
|
809
|
-
[constants.SUPPORTED_HEADERS.AUTHORIZATION]: sessionToken ?
|
|
800
|
+
[constants.SUPPORTED_HEADERS.AUTHORIZATION]: sessionToken ? `Bearer ${sessionToken}` : undefined,
|
|
810
801
|
[constants.SUPPORTED_HEADERS.X_APPLICATION_ID]: window.app.applicationIdentifier,
|
|
811
802
|
[constants.SUPPORTED_HEADERS.X_CUSTOM_VIEW_ID]: window.app.customViewId,
|
|
812
803
|
[constants.SUPPORTED_HEADERS.X_CORRELATION_ID]: getCorrelationId({
|
|
@@ -815,7 +806,7 @@ function createHttpClientOptions() {
|
|
|
815
806
|
[constants.SUPPORTED_HEADERS.X_PROJECT_KEY]: projectKey,
|
|
816
807
|
[constants.SUPPORTED_HEADERS.X_USER_AGENT]: userAgent,
|
|
817
808
|
// MC Identity Login Mode Override header for development
|
|
818
|
-
[constants.SUPPORTED_HEADERS.X_MC_IDENTITY_LOGIN_MODE_OVERRIDE]:
|
|
809
|
+
[constants.SUPPORTED_HEADERS.X_MC_IDENTITY_LOGIN_MODE_OVERRIDE]: window.app.__DEVELOPMENT__?.mcIdentityLoginModeOverride
|
|
819
810
|
}, getAppliedForwardToHeaders(config.forwardToConfig)))
|
|
820
811
|
};
|
|
821
812
|
}
|
|
@@ -846,7 +837,7 @@ async function executeHttpClientRequest(fetcher) {
|
|
|
846
837
|
}))
|
|
847
838
|
}));
|
|
848
839
|
if (response.statusCode === constants.STATUS_CODES.UNAUTHORIZED) {
|
|
849
|
-
throw new RenewTokenError(
|
|
840
|
+
throw new RenewTokenError(`Unauthorized response, attempting retry.`);
|
|
850
841
|
}
|
|
851
842
|
|
|
852
843
|
// In case a new session token is returned from the server, save it.
|
|
@@ -870,15 +861,15 @@ async function executeHttpClientRequest(fetcher) {
|
|
|
870
861
|
}
|
|
871
862
|
|
|
872
863
|
function ownKeys$1(e, r) { var t = _Object$keys__default["default"](e); if (_Object$getOwnPropertySymbols__default["default"]) { var o = _Object$getOwnPropertySymbols__default["default"](e); r && (o = _filterInstanceProperty__default["default"](o).call(o, function (r) { return _Object$getOwnPropertyDescriptor__default["default"](e, r).enumerable; })), t.push.apply(t, o); } return t; }
|
|
873
|
-
function _objectSpread$1(e) { for (var r = 1; r < arguments.length; r++) { var
|
|
864
|
+
function _objectSpread$1(e) { for (var r = 1; r < arguments.length; r++) { var _context6, _context7; var t = null != arguments[r] ? arguments[r] : {}; r % 2 ? _forEachInstanceProperty__default["default"](_context6 = ownKeys$1(Object(t), !0)).call(_context6, function (r) { _defineProperty(e, r, t[r]); }) : _Object$getOwnPropertyDescriptors__default["default"] ? _Object$defineProperties__default["default"](e, _Object$getOwnPropertyDescriptors__default["default"](t)) : _forEachInstanceProperty__default["default"](_context7 = ownKeys$1(Object(t))).call(_context7, function (r) { _Object$defineProperty__default["default"](e, r, _Object$getOwnPropertyDescriptor__default["default"](t, r)); }); } return e; }
|
|
874
865
|
let _userAgent;
|
|
875
866
|
const getUserAgent = () => {
|
|
876
867
|
if (!_userAgent) {
|
|
877
|
-
var _context
|
|
868
|
+
var _context;
|
|
878
869
|
_userAgent = createHttpUserAgent__default["default"]({
|
|
879
870
|
name: 'apollo-client',
|
|
880
871
|
// version: apolloVersion,
|
|
881
|
-
libraryName: _filterInstanceProperty__default["default"](_context = [typeof window !== 'undefined' ?
|
|
872
|
+
libraryName: _filterInstanceProperty__default["default"](_context = [typeof window !== 'undefined' ? window.app?.applicationName ?? 'unknown-application-name' : undefined, 'application-shell']).call(_context, Boolean).join('/'),
|
|
882
873
|
libraryVersion: version,
|
|
883
874
|
contactUrl: 'https://git.io/fjuyC',
|
|
884
875
|
// points to the appkit repo issues
|
|
@@ -892,18 +883,14 @@ const isKnownGraphQlTarget = target => {
|
|
|
892
883
|
return target ? _includesInstanceProperty__default["default"](_context2 = _Object$values__default["default"](constants.GRAPHQL_TARGETS)).call(_context2, target) : false;
|
|
893
884
|
};
|
|
894
885
|
const extractSessionTokenFromResponse = context => {
|
|
895
|
-
var
|
|
896
|
-
const refreshedSessionToken =
|
|
886
|
+
var _context3, _context4;
|
|
887
|
+
const refreshedSessionToken = context.response?.headers?.get('x-refreshed-session-token');
|
|
897
888
|
if (refreshedSessionToken) {
|
|
898
|
-
return refreshedSessionToken
|
|
889
|
+
return refreshedSessionToken ?? null;
|
|
899
890
|
}
|
|
900
|
-
const restResponseWithRefreshTokenHeader = (
|
|
901
|
-
var _response$headers;
|
|
902
|
-
return (_response$headers = response.headers) === null || _response$headers === void 0 ? void 0 : _response$headers.has('x-refreshed-session-token');
|
|
903
|
-
});
|
|
891
|
+
const restResponseWithRefreshTokenHeader = ((_context3 = context.restResponses) == null ? void 0 : _bindInstanceProperty__default["default"](_context4 = Function.call).call(_context4, _findInstanceProperty__default["default"](_context3), _context3))?.(response => response.headers?.has('x-refreshed-session-token'));
|
|
904
892
|
if (restResponseWithRefreshTokenHeader) {
|
|
905
|
-
|
|
906
|
-
return (_restResponseWithRefr = restResponseWithRefreshTokenHeader.headers.get('x-refreshed-session-token')) !== null && _restResponseWithRefr !== void 0 ? _restResponseWithRefr : null;
|
|
893
|
+
return restResponseWithRefreshTokenHeader.headers.get('x-refreshed-session-token') ?? null;
|
|
907
894
|
}
|
|
908
895
|
return null;
|
|
909
896
|
};
|
|
@@ -911,11 +898,11 @@ const extractSessionTokenFromResponse = context => {
|
|
|
911
898
|
/* eslint-disable import/prefer-default-export */
|
|
912
899
|
// Use a middleware to update the request headers with the correct params.
|
|
913
900
|
const headerLink = new client.ApolloLink((operation, forward) => {
|
|
914
|
-
var
|
|
901
|
+
var _context5;
|
|
915
902
|
const apolloContext = operation.getContext();
|
|
916
903
|
const variables = operation.variables;
|
|
917
904
|
const graphQlTarget = apolloContext.target || variables.target;
|
|
918
|
-
if (!apolloContext.skipGraphQlTargetCheck && !isKnownGraphQlTarget(graphQlTarget)) throw new Error(
|
|
905
|
+
if (!apolloContext.skipGraphQlTargetCheck && !isKnownGraphQlTarget(graphQlTarget)) throw new Error(`GraphQL target "${graphQlTarget}" is missing (or is not supported) in operation "${operation.operationName}"`);
|
|
919
906
|
|
|
920
907
|
/**
|
|
921
908
|
* NOTE:
|
|
@@ -942,7 +929,7 @@ const headerLink = new client.ApolloLink((operation, forward) => {
|
|
|
942
929
|
forwardToConfig: apolloContext.forwardToConfig,
|
|
943
930
|
projectKey
|
|
944
931
|
}));
|
|
945
|
-
return _mapInstanceProperty__default["default"](
|
|
932
|
+
return _mapInstanceProperty__default["default"](_context5 = forward(operation)).call(_context5, response => {
|
|
946
933
|
const context = operation.getContext();
|
|
947
934
|
const refreshedSessionToken = extractSessionTokenFromResponse(context);
|
|
948
935
|
if (refreshedSessionToken) {
|
|
@@ -955,7 +942,7 @@ const headerLink = new client.ApolloLink((operation, forward) => {
|
|
|
955
942
|
const tokenRetryLink = new retry.RetryLink({
|
|
956
943
|
attempts: (count, operation, error) => {
|
|
957
944
|
const context = operation.getContext();
|
|
958
|
-
if (
|
|
945
|
+
if (error?.statusCode === constants.STATUS_CODES.UNAUTHORIZED && count === 1 && getDoesGraphQLTargetSupportTokenRetry(context) && !getSkipTokenRetry(context)) {
|
|
959
946
|
operation.setContext(_ref => {
|
|
960
947
|
let headers = _ref.headers;
|
|
961
948
|
return {
|
|
@@ -973,7 +960,7 @@ function _objectSpread(e) { for (var r = 1; r < arguments.length; r++) { var _co
|
|
|
973
960
|
const createApolloLink = function () {
|
|
974
961
|
let options = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};
|
|
975
962
|
const httpLink = client.createHttpLink({
|
|
976
|
-
uri:
|
|
963
|
+
uri: `${getMcApiUrl()}/graphql`,
|
|
977
964
|
fetch
|
|
978
965
|
});
|
|
979
966
|
|
|
@@ -1017,9 +1004,8 @@ const mergeArraysObjects = function () {
|
|
|
1017
1004
|
}, []);
|
|
1018
1005
|
};
|
|
1019
1006
|
const createApolloClient = function () {
|
|
1020
|
-
var _options$cache, _customCacheConfig$ty;
|
|
1021
1007
|
let options = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};
|
|
1022
|
-
const customCacheConfig =
|
|
1008
|
+
const customCacheConfig = options?.cache ?? {};
|
|
1023
1009
|
return new client.ApolloClient({
|
|
1024
1010
|
link: createApolloLink(options),
|
|
1025
1011
|
// https://www.apollographql.com/docs/react/caching/cache-configuration/
|
|
@@ -1058,7 +1044,7 @@ const createApolloClient = function () {
|
|
|
1058
1044
|
}
|
|
1059
1045
|
}
|
|
1060
1046
|
}
|
|
1061
|
-
},
|
|
1047
|
+
}, customCacheConfig.typePolicies ?? {})
|
|
1062
1048
|
}))
|
|
1063
1049
|
});
|
|
1064
1050
|
};
|
|
@@ -11,7 +11,6 @@ import { createContext, useContext, useCallback, useEffect, useMemo } from 'reac
|
|
|
11
11
|
import moment from 'moment-timezone';
|
|
12
12
|
import { reportErrorToSentry } from '@commercetools-frontend/sentry';
|
|
13
13
|
import _URL from '@babel/runtime-corejs3/core-js-stable/url';
|
|
14
|
-
import _concatInstanceProperty from '@babel/runtime-corejs3/core-js-stable/instance/concat';
|
|
15
14
|
import _slicedToArray from '@babel/runtime-corejs3/helpers/esm/slicedToArray';
|
|
16
15
|
import _reduceInstanceProperty from '@babel/runtime-corejs3/core-js-stable/instance/reduce';
|
|
17
16
|
import _Object$entries from '@babel/runtime-corejs3/core-js-stable/object/entries';
|
|
@@ -29,6 +28,7 @@ import history from '@commercetools-frontend/browser-history';
|
|
|
29
28
|
import _Array$isArray from '@babel/runtime-corejs3/core-js-stable/array/is-array';
|
|
30
29
|
import _someInstanceProperty from '@babel/runtime-corejs3/core-js-stable/instance/some';
|
|
31
30
|
import _Object$values from '@babel/runtime-corejs3/core-js-stable/object/values';
|
|
31
|
+
import _bindInstanceProperty from '@babel/runtime-corejs3/core-js-stable/instance/bind';
|
|
32
32
|
import _mapInstanceProperty from '@babel/runtime-corejs3/core-js-stable/instance/map';
|
|
33
33
|
import createHttpUserAgent from '@commercetools/http-user-agent';
|
|
34
34
|
import omitEmpty from 'omit-empty-es';
|
|
@@ -44,7 +44,7 @@ import _JSON$stringify from '@babel/runtime-corejs3/core-js-stable/json/stringif
|
|
|
44
44
|
import { RetryLink } from '@apollo/client/link/retry';
|
|
45
45
|
|
|
46
46
|
// NOTE: This string will be replaced on build time with the package version.
|
|
47
|
-
var version = "27.9.
|
|
47
|
+
var version = "27.9.2";
|
|
48
48
|
|
|
49
49
|
// From https://github.com/acdlite/recompose/blob/master/src/packages/recompose/getDisplayName.js
|
|
50
50
|
const getDisplayName = Component => {
|
|
@@ -66,10 +66,9 @@ const getMcOriginTld = host => {
|
|
|
66
66
|
return host.replace(mcHostnameRegex, '$3');
|
|
67
67
|
};
|
|
68
68
|
const getMcApiUrlFromOrigin = origin => {
|
|
69
|
-
var _context;
|
|
70
69
|
const url = new _URL(origin);
|
|
71
70
|
const originTld = getMcOriginTld(url.host);
|
|
72
|
-
return
|
|
71
|
+
return `${url.protocol}//mc-api.${originTld}`;
|
|
73
72
|
};
|
|
74
73
|
const parseAsBoolean = value => value === true || value === 'true';
|
|
75
74
|
function getMcApiUrl() {
|
|
@@ -289,9 +288,9 @@ const createApplicationContext = (environment, user, project, projectDataLocale)
|
|
|
289
288
|
environment: mapEnvironmentToApplicationContextEnvironment(environment),
|
|
290
289
|
user: mapUserToApplicationContextUser(user),
|
|
291
290
|
project: mapProjectToApplicationContextProject(project),
|
|
292
|
-
permissions: normalizeAllAppliedPermissions(project
|
|
293
|
-
actionRights: normalizeAllAppliedActionRights(project
|
|
294
|
-
dataFences: normalizeAllAppliedDataFences(project
|
|
291
|
+
permissions: normalizeAllAppliedPermissions(project?.allAppliedPermissions),
|
|
292
|
+
actionRights: normalizeAllAppliedActionRights(project?.allAppliedActionRights),
|
|
293
|
+
dataFences: normalizeAllAppliedDataFences(project?.allAppliedDataFences),
|
|
295
294
|
dataLocale: projectDataLocale || null
|
|
296
295
|
});
|
|
297
296
|
const ApplicationContextProvider = props => jsx(Context$2.Provider, {
|
|
@@ -321,7 +320,7 @@ function withApplicationContext(mapApplicationContextToProps) {
|
|
|
321
320
|
return jsx(Component, _objectSpread$6(_objectSpread$6({}, props), mappedProps));
|
|
322
321
|
}
|
|
323
322
|
});
|
|
324
|
-
WrappedComponent.displayName =
|
|
323
|
+
WrappedComponent.displayName = `withApplicationContext(${getDisplayName(Component)})`;
|
|
325
324
|
return WrappedComponent;
|
|
326
325
|
};
|
|
327
326
|
}
|
|
@@ -437,7 +436,7 @@ const ProjectExtensionProviderForImageRegex = props => {
|
|
|
437
436
|
};
|
|
438
437
|
ProjectExtensionProviderForImageRegex.displayName = 'ProjectExtensionProviderForImageRegex';
|
|
439
438
|
const GetProjectExtensionImageRegex = props => {
|
|
440
|
-
useWarning(false,
|
|
439
|
+
useWarning(false, `@commercetools-frontend/application-shell-connectors: It is not recommended to use the 'GetProjectExtensionImageRegex' anymore. Please use the 'useProjectExtensionImageRegex' hook instead.`);
|
|
441
440
|
return jsx(Context.Consumer, {
|
|
442
441
|
children: imageRegexContext => props.render(imageRegexContext)
|
|
443
442
|
});
|
|
@@ -447,7 +446,7 @@ function withProjectExtensionImageRegex() {
|
|
|
447
446
|
let propKey = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : 'imageRegexData';
|
|
448
447
|
return Component => {
|
|
449
448
|
const WrappedComponent = props => {
|
|
450
|
-
useWarning(false,
|
|
449
|
+
useWarning(false, `@commercetools-frontend/application-shell-connectors: It is not recommended to use the 'withProjectExtensionImageRegex' high order component anymore. Please use the 'useProjectExtensionImageRegex' hook instead.`);
|
|
451
450
|
const imageregexContext = useProjectExtensionImageRegex();
|
|
452
451
|
return jsx(GetProjectExtensionImageRegex, {
|
|
453
452
|
render: () =>
|
|
@@ -457,7 +456,7 @@ function withProjectExtensionImageRegex() {
|
|
|
457
456
|
}))
|
|
458
457
|
});
|
|
459
458
|
};
|
|
460
|
-
WrappedComponent.displayName =
|
|
459
|
+
WrappedComponent.displayName = `withProjectExtensionImageRegex(${getDisplayName(Component)})`;
|
|
461
460
|
return WrappedComponent;
|
|
462
461
|
};
|
|
463
462
|
}
|
|
@@ -478,8 +477,8 @@ const forwardTokenRetryHeader = headers => _objectSpread$3(_objectSpread$3({}, h
|
|
|
478
477
|
// so that the MC BE can issue a new token.
|
|
479
478
|
// NOTE: the retry is not meant to work for the MC access token.
|
|
480
479
|
const getDoesGraphQLTargetSupportTokenRetry = context => {
|
|
481
|
-
var _context
|
|
482
|
-
const graphQLTarget =
|
|
480
|
+
var _context;
|
|
481
|
+
const graphQLTarget = context.headers?.[SUPPORTED_HEADERS.X_GRAPHQL_TARGET] || context.headers?.[SUPPORTED_HEADERS.X_GRAPHQL_TARGET.toLowerCase()];
|
|
483
482
|
return Boolean(graphQLTarget && _includesInstanceProperty(_context = [GRAPHQL_TARGETS.COMMERCETOOLS_PLATFORM, GRAPHQL_TARGETS.ADMINISTRATION_SERVICE, GRAPHQL_TARGETS.SETTINGS_SERVICE, GRAPHQL_TARGETS.MERCHANT_CENTER_BACKEND]).call(_context, graphQLTarget));
|
|
484
483
|
};
|
|
485
484
|
const isHttpError = error => error.statusCode !== undefined || error.statusCode !== undefined;
|
|
@@ -493,7 +492,7 @@ const errorLink = onError(_ref => {
|
|
|
493
492
|
operation = _ref.operation,
|
|
494
493
|
forward = _ref.forward;
|
|
495
494
|
if (networkError && isHttpError(networkError) && networkError.statusCode === STATUS_CODES.UNAUTHORIZED) {
|
|
496
|
-
history.push(
|
|
495
|
+
history.push(`/logout?reason=${LOGOUT_REASONS.UNAUTHORIZED}`);
|
|
497
496
|
return;
|
|
498
497
|
}
|
|
499
498
|
|
|
@@ -505,8 +504,7 @@ const errorLink = onError(_ref => {
|
|
|
505
504
|
const context = operation.getContext();
|
|
506
505
|
if (graphQLErrors && isGraphQLError(graphQLErrors)) {
|
|
507
506
|
for (const err of graphQLErrors) {
|
|
508
|
-
|
|
509
|
-
const isNonAuthenticatedViaExtensionCode = (err === null || err === void 0 || (_err$extensions = err.extensions) === null || _err$extensions === void 0 ? void 0 : _err$extensions.code) === 'UNAUTHENTICATED';
|
|
507
|
+
const isNonAuthenticatedViaExtensionCode = err?.extensions?.code === 'UNAUTHENTICATED';
|
|
510
508
|
/**
|
|
511
509
|
* NOTE:
|
|
512
510
|
* Not not all GraphQL APIs expose an `extensions` field in
|
|
@@ -514,7 +512,7 @@ const errorLink = onError(_ref => {
|
|
|
514
512
|
* property until they introduced support for the `extensions`
|
|
515
513
|
* field.
|
|
516
514
|
*/
|
|
517
|
-
const isNonAuthenticatedViaCode =
|
|
515
|
+
const isNonAuthenticatedViaCode = err?.message === 'invalid_token';
|
|
518
516
|
if ((isNonAuthenticatedViaExtensionCode || isNonAuthenticatedViaCode) && getDoesGraphQLTargetSupportTokenRetry(context) && !getSkipTokenRetry(context)) {
|
|
519
517
|
operation.setContext(_ref2 => {
|
|
520
518
|
let headers = _ref2.headers;
|
|
@@ -550,8 +548,7 @@ const errorLink = onError(_ref => {
|
|
|
550
548
|
|
|
551
549
|
// Attempt to load the `teamId` from sessionStorage
|
|
552
550
|
function selectTeamIdFromStorage() {
|
|
553
|
-
|
|
554
|
-
return window.sessionStorage.getItem(STORAGE_KEYS.ACTIVE_TEAM_ID) || ((_window$app$__DEVELOP = window.app.__DEVELOPMENT__) === null || _window$app$__DEVELOP === void 0 || (_window$app$__DEVELOP = _window$app$__DEVELOP.oidc) === null || _window$app$__DEVELOP === void 0 ? void 0 : _window$app$__DEVELOP.teamId);
|
|
551
|
+
return window.sessionStorage.getItem(STORAGE_KEYS.ACTIVE_TEAM_ID) || window.app.__DEVELOPMENT__?.oidc?.teamId;
|
|
555
552
|
}
|
|
556
553
|
|
|
557
554
|
const staticUrlPathsInPositionOfProjectKey = ['login', 'logout', 'account'];
|
|
@@ -612,7 +609,7 @@ function getCorrelationId() {
|
|
|
612
609
|
|
|
613
610
|
const createApolloContextForProxyForwardTo = proxyForwardTocontext => ({
|
|
614
611
|
// Send the request to the forward-to endpoint.
|
|
615
|
-
uri:
|
|
612
|
+
uri: `${getMcApiUrl()}/proxy/forward-to`,
|
|
616
613
|
// Custom properties to be used by the "header-link".
|
|
617
614
|
forwardToConfig: proxyForwardTocontext,
|
|
618
615
|
skipGraphQlTargetCheck: true
|
|
@@ -654,7 +651,7 @@ function selectUserLanguageFromStorage() {
|
|
|
654
651
|
const getSessionToken = () => window.sessionStorage.getItem(STORAGE_KEYS.SESSION_TOKEN);
|
|
655
652
|
const setActiveSession = sessionToken => {
|
|
656
653
|
if (!sessionToken) return;
|
|
657
|
-
window.sessionStorage.setItem(STORAGE_KEYS.SESSION_TOKEN, sessionToken
|
|
654
|
+
window.sessionStorage.setItem(STORAGE_KEYS.SESSION_TOKEN, sessionToken ?? '');
|
|
658
655
|
window.localStorage.setItem(STORAGE_KEYS.LOGIN_STRATEGY, LOGIN_STRATEGY_OIDC);
|
|
659
656
|
// Remove flag for original workflow
|
|
660
657
|
window.localStorage.removeItem(STORAGE_KEYS.IS_AUTHENTICATED);
|
|
@@ -676,8 +673,7 @@ const setSessionScope = scope => {
|
|
|
676
673
|
window.sessionStorage.setItem(STORAGE_KEYS.SESSION_SCOPE, scope);
|
|
677
674
|
};
|
|
678
675
|
const getSessionState = stateId => {
|
|
679
|
-
|
|
680
|
-
const sessionStateKey = _concatInstanceProperty(_context = "".concat(STORAGE_KEYS.NONCE, "_")).call(_context, stateId);
|
|
676
|
+
const sessionStateKey = `${STORAGE_KEYS.NONCE}_${stateId}`;
|
|
681
677
|
const unparsedSessionState = window.sessionStorage.getItem(sessionStateKey);
|
|
682
678
|
if (unparsedSessionState) {
|
|
683
679
|
try {
|
|
@@ -685,22 +681,19 @@ const getSessionState = stateId => {
|
|
|
685
681
|
return parsedSessionState;
|
|
686
682
|
} catch (error) {
|
|
687
683
|
if (process.env.NODE_ENV !== 'production') {
|
|
688
|
-
var _context2;
|
|
689
684
|
// eslint-disable-next-line no-console
|
|
690
|
-
console.warn(
|
|
685
|
+
console.warn(`Cannot parse session state for "${sessionStateKey}".\n${unparsedSessionState}`);
|
|
691
686
|
}
|
|
692
687
|
}
|
|
693
688
|
}
|
|
694
689
|
return null;
|
|
695
690
|
};
|
|
696
691
|
const setSessionState = (stateId, state) => {
|
|
697
|
-
|
|
698
|
-
const sessionStateKey = _concatInstanceProperty(_context3 = "".concat(STORAGE_KEYS.NONCE, "_")).call(_context3, stateId);
|
|
692
|
+
const sessionStateKey = `${STORAGE_KEYS.NONCE}_${stateId}`;
|
|
699
693
|
window.sessionStorage.setItem(sessionStateKey, _JSON$stringify(state));
|
|
700
694
|
};
|
|
701
695
|
const removeSessionState = stateId => {
|
|
702
|
-
|
|
703
|
-
const sessionStateKey = _concatInstanceProperty(_context4 = "".concat(STORAGE_KEYS.NONCE, "_")).call(_context4, stateId);
|
|
696
|
+
const sessionStateKey = `${STORAGE_KEYS.NONCE}_${stateId}`;
|
|
704
697
|
window.sessionStorage.removeItem(sessionStateKey);
|
|
705
698
|
};
|
|
706
699
|
|
|
@@ -722,14 +715,13 @@ var oidcStorage = /*#__PURE__*/Object.freeze({
|
|
|
722
715
|
function _callSuper(t, o, e) { return o = _getPrototypeOf(o), _possibleConstructorReturn(t, _isNativeReflectConstruct() ? _Reflect$construct(o, e || [], _getPrototypeOf(t).constructor) : o.apply(t, e)); }
|
|
723
716
|
function _isNativeReflectConstruct() { try { var t = !Boolean.prototype.valueOf.call(_Reflect$construct(Boolean, [], function () {})); } catch (t) {} return (_isNativeReflectConstruct = function () { return !!t; })(); }
|
|
724
717
|
function ownKeys$2(e, r) { var t = _Object$keys(e); if (_Object$getOwnPropertySymbols) { var o = _Object$getOwnPropertySymbols(e); r && (o = _filterInstanceProperty(o).call(o, function (r) { return _Object$getOwnPropertyDescriptor(e, r).enumerable; })), t.push.apply(t, o); } return t; }
|
|
725
|
-
function _objectSpread$2(e) { for (var r = 1; r < arguments.length; r++) { var
|
|
718
|
+
function _objectSpread$2(e) { for (var r = 1; r < arguments.length; r++) { var _context2, _context3; var t = null != arguments[r] ? arguments[r] : {}; r % 2 ? _forEachInstanceProperty(_context2 = ownKeys$2(Object(t), !0)).call(_context2, function (r) { _defineProperty(e, r, t[r]); }) : _Object$getOwnPropertyDescriptors ? _Object$defineProperties(e, _Object$getOwnPropertyDescriptors(t)) : _forEachInstanceProperty(_context3 = ownKeys$2(Object(t))).call(_context3, function (r) { _Object$defineProperty(e, r, _Object$getOwnPropertyDescriptor(t, r)); }); } return e; }
|
|
726
719
|
let _userAgent$1;
|
|
727
720
|
const getUserAgent$1 = () => {
|
|
728
721
|
if (!_userAgent$1) {
|
|
729
|
-
var _window$app$applicati, _window$app;
|
|
730
722
|
_userAgent$1 = createHttpUserAgent({
|
|
731
723
|
name: 'unknown-http-client',
|
|
732
|
-
libraryName: typeof window !== 'undefined' ?
|
|
724
|
+
libraryName: typeof window !== 'undefined' ? window.app?.applicationName ?? 'unknown-application-name' : undefined
|
|
733
725
|
});
|
|
734
726
|
}
|
|
735
727
|
return _userAgent$1;
|
|
@@ -737,50 +729,48 @@ const getUserAgent$1 = () => {
|
|
|
737
729
|
const defaultForwardToVersion = 'v2';
|
|
738
730
|
const defaultForwardToAudiencePolicy = 'forward-url-full-path';
|
|
739
731
|
function buildApiUrl(endpoint) {
|
|
740
|
-
var _context;
|
|
741
732
|
const apiUrl = getMcApiUrl().replace(/\/$/, '');
|
|
742
|
-
return
|
|
733
|
+
return `${apiUrl}${endpoint}`;
|
|
743
734
|
}
|
|
744
735
|
const getAppliedForwardToHeaders = forwardToConfig => {
|
|
745
|
-
var
|
|
736
|
+
var _context;
|
|
746
737
|
if (!forwardToConfig) {
|
|
747
738
|
return {};
|
|
748
739
|
}
|
|
749
740
|
if (!forwardToConfig.uri) {
|
|
750
|
-
throw new Error(
|
|
741
|
+
throw new Error(`Missing required "uri" option.`);
|
|
751
742
|
}
|
|
752
743
|
const exchangeTokenClaims = [];
|
|
753
744
|
if (forwardToConfig.includeUserPermissions) {
|
|
754
745
|
exchangeTokenClaims.push('permissions');
|
|
755
746
|
}
|
|
756
|
-
return _objectSpread$2(_objectSpread$2({}, _reduceInstanceProperty(
|
|
747
|
+
return _objectSpread$2(_objectSpread$2({}, _reduceInstanceProperty(_context = _Object$entries(forwardToConfig.headers ?? {})).call(_context, (customForwardHeaders, _ref) => {
|
|
757
748
|
let _ref2 = _slicedToArray(_ref, 2),
|
|
758
749
|
headerName = _ref2[0],
|
|
759
750
|
headerValue = _ref2[1];
|
|
760
751
|
return _objectSpread$2(_objectSpread$2({}, customForwardHeaders), {}, {
|
|
761
752
|
// Prefix headers so that the MC API can allow and forward them.
|
|
762
|
-
[
|
|
753
|
+
[`x-forward-header-${headerName}`]: headerValue
|
|
763
754
|
});
|
|
764
755
|
}, {})), {}, {
|
|
765
|
-
[SUPPORTED_HEADERS.ACCEPT_VERSION]:
|
|
756
|
+
[SUPPORTED_HEADERS.ACCEPT_VERSION]: forwardToConfig.version ?? defaultForwardToVersion,
|
|
766
757
|
[SUPPORTED_HEADERS.X_FORWARD_TO]: forwardToConfig.uri,
|
|
767
|
-
[SUPPORTED_HEADERS.X_FORWARD_TO_AUDIENCE_POLICY]:
|
|
758
|
+
[SUPPORTED_HEADERS.X_FORWARD_TO_AUDIENCE_POLICY]: forwardToConfig.audiencePolicy ?? defaultForwardToAudiencePolicy,
|
|
768
759
|
[SUPPORTED_HEADERS.X_FORWARD_TO_CLAIMS]: exchangeTokenClaims.join(' ')
|
|
769
760
|
});
|
|
770
761
|
};
|
|
771
762
|
function createHttpClientOptions() {
|
|
772
|
-
var _config$projectKey, _window$app$__DEVELOP;
|
|
773
763
|
let config = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};
|
|
774
764
|
const sessionToken = getSessionToken();
|
|
775
|
-
const projectKey =
|
|
765
|
+
const projectKey = config.projectKey ?? selectProjectKeyFromUrl();
|
|
776
766
|
const userId = selectUserId();
|
|
777
|
-
const userAgent =
|
|
767
|
+
const userAgent = config?.userAgent || getUserAgent$1();
|
|
778
768
|
return {
|
|
779
769
|
credentials: 'include',
|
|
780
770
|
headers: omitEmpty(_objectSpread$2(_objectSpread$2({}, config.headers), {}, {
|
|
781
771
|
// Required headers
|
|
782
772
|
[SUPPORTED_HEADERS.ACCEPT]: 'application/json',
|
|
783
|
-
[SUPPORTED_HEADERS.AUTHORIZATION]: sessionToken ?
|
|
773
|
+
[SUPPORTED_HEADERS.AUTHORIZATION]: sessionToken ? `Bearer ${sessionToken}` : undefined,
|
|
784
774
|
[SUPPORTED_HEADERS.X_APPLICATION_ID]: window.app.applicationIdentifier,
|
|
785
775
|
[SUPPORTED_HEADERS.X_CUSTOM_VIEW_ID]: window.app.customViewId,
|
|
786
776
|
[SUPPORTED_HEADERS.X_CORRELATION_ID]: getCorrelationId({
|
|
@@ -789,7 +779,7 @@ function createHttpClientOptions() {
|
|
|
789
779
|
[SUPPORTED_HEADERS.X_PROJECT_KEY]: projectKey,
|
|
790
780
|
[SUPPORTED_HEADERS.X_USER_AGENT]: userAgent,
|
|
791
781
|
// MC Identity Login Mode Override header for development
|
|
792
|
-
[SUPPORTED_HEADERS.X_MC_IDENTITY_LOGIN_MODE_OVERRIDE]:
|
|
782
|
+
[SUPPORTED_HEADERS.X_MC_IDENTITY_LOGIN_MODE_OVERRIDE]: window.app.__DEVELOPMENT__?.mcIdentityLoginModeOverride
|
|
793
783
|
}, getAppliedForwardToHeaders(config.forwardToConfig)))
|
|
794
784
|
};
|
|
795
785
|
}
|
|
@@ -820,7 +810,7 @@ async function executeHttpClientRequest(fetcher) {
|
|
|
820
810
|
}))
|
|
821
811
|
}));
|
|
822
812
|
if (response.statusCode === STATUS_CODES.UNAUTHORIZED) {
|
|
823
|
-
throw new RenewTokenError(
|
|
813
|
+
throw new RenewTokenError(`Unauthorized response, attempting retry.`);
|
|
824
814
|
}
|
|
825
815
|
|
|
826
816
|
// In case a new session token is returned from the server, save it.
|
|
@@ -844,15 +834,15 @@ async function executeHttpClientRequest(fetcher) {
|
|
|
844
834
|
}
|
|
845
835
|
|
|
846
836
|
function ownKeys$1(e, r) { var t = _Object$keys(e); if (_Object$getOwnPropertySymbols) { var o = _Object$getOwnPropertySymbols(e); r && (o = _filterInstanceProperty(o).call(o, function (r) { return _Object$getOwnPropertyDescriptor(e, r).enumerable; })), t.push.apply(t, o); } return t; }
|
|
847
|
-
function _objectSpread$1(e) { for (var r = 1; r < arguments.length; r++) { var
|
|
837
|
+
function _objectSpread$1(e) { for (var r = 1; r < arguments.length; r++) { var _context6, _context7; var t = null != arguments[r] ? arguments[r] : {}; r % 2 ? _forEachInstanceProperty(_context6 = ownKeys$1(Object(t), !0)).call(_context6, function (r) { _defineProperty(e, r, t[r]); }) : _Object$getOwnPropertyDescriptors ? _Object$defineProperties(e, _Object$getOwnPropertyDescriptors(t)) : _forEachInstanceProperty(_context7 = ownKeys$1(Object(t))).call(_context7, function (r) { _Object$defineProperty(e, r, _Object$getOwnPropertyDescriptor(t, r)); }); } return e; }
|
|
848
838
|
let _userAgent;
|
|
849
839
|
const getUserAgent = () => {
|
|
850
840
|
if (!_userAgent) {
|
|
851
|
-
var _context
|
|
841
|
+
var _context;
|
|
852
842
|
_userAgent = createHttpUserAgent({
|
|
853
843
|
name: 'apollo-client',
|
|
854
844
|
// version: apolloVersion,
|
|
855
|
-
libraryName: _filterInstanceProperty(_context = [typeof window !== 'undefined' ?
|
|
845
|
+
libraryName: _filterInstanceProperty(_context = [typeof window !== 'undefined' ? window.app?.applicationName ?? 'unknown-application-name' : undefined, 'application-shell']).call(_context, Boolean).join('/'),
|
|
856
846
|
libraryVersion: version,
|
|
857
847
|
contactUrl: 'https://git.io/fjuyC',
|
|
858
848
|
// points to the appkit repo issues
|
|
@@ -866,18 +856,14 @@ const isKnownGraphQlTarget = target => {
|
|
|
866
856
|
return target ? _includesInstanceProperty(_context2 = _Object$values(GRAPHQL_TARGETS)).call(_context2, target) : false;
|
|
867
857
|
};
|
|
868
858
|
const extractSessionTokenFromResponse = context => {
|
|
869
|
-
var
|
|
870
|
-
const refreshedSessionToken =
|
|
859
|
+
var _context3, _context4;
|
|
860
|
+
const refreshedSessionToken = context.response?.headers?.get('x-refreshed-session-token');
|
|
871
861
|
if (refreshedSessionToken) {
|
|
872
|
-
return refreshedSessionToken
|
|
862
|
+
return refreshedSessionToken ?? null;
|
|
873
863
|
}
|
|
874
|
-
const restResponseWithRefreshTokenHeader = (
|
|
875
|
-
var _response$headers;
|
|
876
|
-
return (_response$headers = response.headers) === null || _response$headers === void 0 ? void 0 : _response$headers.has('x-refreshed-session-token');
|
|
877
|
-
});
|
|
864
|
+
const restResponseWithRefreshTokenHeader = ((_context3 = context.restResponses) == null ? void 0 : _bindInstanceProperty(_context4 = Function.call).call(_context4, _findInstanceProperty(_context3), _context3))?.(response => response.headers?.has('x-refreshed-session-token'));
|
|
878
865
|
if (restResponseWithRefreshTokenHeader) {
|
|
879
|
-
|
|
880
|
-
return (_restResponseWithRefr = restResponseWithRefreshTokenHeader.headers.get('x-refreshed-session-token')) !== null && _restResponseWithRefr !== void 0 ? _restResponseWithRefr : null;
|
|
866
|
+
return restResponseWithRefreshTokenHeader.headers.get('x-refreshed-session-token') ?? null;
|
|
881
867
|
}
|
|
882
868
|
return null;
|
|
883
869
|
};
|
|
@@ -885,11 +871,11 @@ const extractSessionTokenFromResponse = context => {
|
|
|
885
871
|
/* eslint-disable import/prefer-default-export */
|
|
886
872
|
// Use a middleware to update the request headers with the correct params.
|
|
887
873
|
const headerLink = new ApolloLink((operation, forward) => {
|
|
888
|
-
var
|
|
874
|
+
var _context5;
|
|
889
875
|
const apolloContext = operation.getContext();
|
|
890
876
|
const variables = operation.variables;
|
|
891
877
|
const graphQlTarget = apolloContext.target || variables.target;
|
|
892
|
-
if (!apolloContext.skipGraphQlTargetCheck && !isKnownGraphQlTarget(graphQlTarget)) throw new Error(
|
|
878
|
+
if (!apolloContext.skipGraphQlTargetCheck && !isKnownGraphQlTarget(graphQlTarget)) throw new Error(`GraphQL target "${graphQlTarget}" is missing (or is not supported) in operation "${operation.operationName}"`);
|
|
893
879
|
|
|
894
880
|
/**
|
|
895
881
|
* NOTE:
|
|
@@ -916,7 +902,7 @@ const headerLink = new ApolloLink((operation, forward) => {
|
|
|
916
902
|
forwardToConfig: apolloContext.forwardToConfig,
|
|
917
903
|
projectKey
|
|
918
904
|
}));
|
|
919
|
-
return _mapInstanceProperty(
|
|
905
|
+
return _mapInstanceProperty(_context5 = forward(operation)).call(_context5, response => {
|
|
920
906
|
const context = operation.getContext();
|
|
921
907
|
const refreshedSessionToken = extractSessionTokenFromResponse(context);
|
|
922
908
|
if (refreshedSessionToken) {
|
|
@@ -929,7 +915,7 @@ const headerLink = new ApolloLink((operation, forward) => {
|
|
|
929
915
|
const tokenRetryLink = new RetryLink({
|
|
930
916
|
attempts: (count, operation, error) => {
|
|
931
917
|
const context = operation.getContext();
|
|
932
|
-
if (
|
|
918
|
+
if (error?.statusCode === STATUS_CODES.UNAUTHORIZED && count === 1 && getDoesGraphQLTargetSupportTokenRetry(context) && !getSkipTokenRetry(context)) {
|
|
933
919
|
operation.setContext(_ref => {
|
|
934
920
|
let headers = _ref.headers;
|
|
935
921
|
return {
|
|
@@ -947,7 +933,7 @@ function _objectSpread(e) { for (var r = 1; r < arguments.length; r++) { var _co
|
|
|
947
933
|
const createApolloLink = function () {
|
|
948
934
|
let options = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};
|
|
949
935
|
const httpLink = createHttpLink({
|
|
950
|
-
uri:
|
|
936
|
+
uri: `${getMcApiUrl()}/graphql`,
|
|
951
937
|
fetch
|
|
952
938
|
});
|
|
953
939
|
|
|
@@ -991,9 +977,8 @@ const mergeArraysObjects = function () {
|
|
|
991
977
|
}, []);
|
|
992
978
|
};
|
|
993
979
|
const createApolloClient = function () {
|
|
994
|
-
var _options$cache, _customCacheConfig$ty;
|
|
995
980
|
let options = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};
|
|
996
|
-
const customCacheConfig =
|
|
981
|
+
const customCacheConfig = options?.cache ?? {};
|
|
997
982
|
return new ApolloClient({
|
|
998
983
|
link: createApolloLink(options),
|
|
999
984
|
// https://www.apollographql.com/docs/react/caching/cache-configuration/
|
|
@@ -1032,7 +1017,7 @@ const createApolloClient = function () {
|
|
|
1032
1017
|
}
|
|
1033
1018
|
}
|
|
1034
1019
|
}
|
|
1035
|
-
},
|
|
1020
|
+
}, customCacheConfig.typePolicies ?? {})
|
|
1036
1021
|
}))
|
|
1037
1022
|
});
|
|
1038
1023
|
};
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@commercetools-frontend/application-shell-connectors",
|
|
3
|
-
"version": "27.9.
|
|
3
|
+
"version": "27.9.2",
|
|
4
4
|
"description": "Contains complementary tools for @commercetools-frontend/application-shell",
|
|
5
5
|
"bugs": "https://github.com/commercetools/merchant-center-application-kit/issues",
|
|
6
6
|
"repository": {
|
|
@@ -51,10 +51,10 @@
|
|
|
51
51
|
"tiny-warning": "1.0.3",
|
|
52
52
|
"uuid": "14.0.1",
|
|
53
53
|
"wait-for-observables": "1.0.3",
|
|
54
|
-
"@commercetools-frontend/application-config": "^27.9.
|
|
55
|
-
"@commercetools-frontend/
|
|
56
|
-
"@commercetools-frontend/
|
|
57
|
-
"@commercetools-frontend/
|
|
54
|
+
"@commercetools-frontend/application-config": "^27.9.2",
|
|
55
|
+
"@commercetools-frontend/sentry": "^27.9.2",
|
|
56
|
+
"@commercetools-frontend/browser-history": "^27.9.2",
|
|
57
|
+
"@commercetools-frontend/constants": "^27.9.2"
|
|
58
58
|
},
|
|
59
59
|
"devDependencies": {
|
|
60
60
|
"@apollo/client": "3.14.1",
|