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