@commercetools-frontend/mc-html-template 22.2.0 → 22.3.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.
@@ -23,7 +23,7 @@ var _Object$defineProperty = require('@babel/runtime-corejs3/core-js-stable/obje
23
23
  var constants = require('@commercetools-frontend/constants');
24
24
  var crypto = require('crypto');
25
25
  var serialize = require('serialize-javascript');
26
- var generateTemplate = require('./generate-template-6b67f23b.cjs.dev.js');
26
+ var generateTemplate = require('./generate-template-357c85bd.cjs.dev.js');
27
27
 
28
28
  function _interopDefault (e) { return e && e.__esModule ? e : { 'default': e }; }
29
29
 
@@ -47,6 +47,7 @@ var serialize__default = /*#__PURE__*/_interopDefault(serialize);
47
47
 
48
48
  function createAssetHash(content) {
49
49
  const sha256Hash = crypto__default["default"].createHash('sha256').update(content).digest('base64');
50
+
50
51
  /**
51
52
  * NOTE:
52
53
  * We prefix the hash function type as the browser
@@ -54,7 +55,6 @@ function createAssetHash(content) {
54
55
  * CSP headers sent.
55
56
  * For more information head to: developer.mozilla.org/en-US/docs/Web/HTTP/Headers/Content-Security-Policy/script-src#Sources
56
57
  */
57
-
58
58
  return "sha256-".concat(sha256Hash);
59
59
  }
60
60
 
@@ -63,66 +63,56 @@ const sanitizeAppEnvironment = env => serialize__default["default"](env, {
63
63
  });
64
64
 
65
65
  function ownKeys(object, enumerableOnly) { var keys = _Object$keys__default["default"](object); if (_Object$getOwnPropertySymbols__default["default"]) { var symbols = _Object$getOwnPropertySymbols__default["default"](object); enumerableOnly && (symbols = _filterInstanceProperty__default["default"](symbols).call(symbols, function (sym) { return _Object$getOwnPropertyDescriptor__default["default"](object, sym).enumerable; })), keys.push.apply(keys, symbols); } return keys; }
66
-
67
66
  function _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var _context9, _context10; var source = null != arguments[i] ? arguments[i] : {}; i % 2 ? _forEachInstanceProperty__default["default"](_context9 = ownKeys(Object(source), !0)).call(_context9, function (key) { _defineProperty(target, key, source[key]); }) : _Object$getOwnPropertyDescriptors__default["default"] ? _Object$defineProperties__default["default"](target, _Object$getOwnPropertyDescriptors__default["default"](source)) : _forEachInstanceProperty__default["default"](_context10 = ownKeys(Object(source))).call(_context10, function (key) { _Object$defineProperty__default["default"](target, key, _Object$getOwnPropertyDescriptor__default["default"](source, key)); }); } return target; }
68
67
  const htmlScripts$1 = {
69
68
  "loadingScreen": "window.onAppLoaded=function(){var e=document.querySelector(\"#app-loader\");e&&e.parentNode.removeChild(e)},setTimeout(function(){var e=document.querySelector(\".loading-screen\");e&&e.classList.remove(\"loading-screen--hidden\")},250),setTimeout(function(){var e=document.querySelector(\".long-loading-notice\");e&&e.classList.remove(\"long-loading-notice--hidden\")},2e3);",
70
69
  "publicPath": "window.__dynamicImportHandler__=function(n){return window.app.cdnUrl.replace(/\\/$/,\"\")+\"/\"+n.replace(/^(\\.\\/)?/,\"\")},window.__dynamicImportPreload__=function(n){return n.map(n=>window.app.cdnUrl.replace(/\\/$/,\"\")+\"/\"+n)};"
71
70
  };
71
+ // https://babeljs.io/blog/2017/09/11/zero-config-with-babel-macros
72
72
 
73
73
  const toArray = value => _Array$isArray__default["default"](value) ? value : [value];
74
-
75
74
  const mergeCspDirectives = function () {
76
75
  for (var _len = arguments.length, directives = new Array(_len), _key = 0; _key < _len; _key++) {
77
76
  directives[_key] = arguments[_key];
78
77
  }
79
-
80
78
  return _reduceInstanceProperty__default["default"](directives).call(directives, (mergedCsp, csp) => {
81
79
  var _context;
82
-
83
80
  return _Object$assign__default["default"](mergedCsp, _reduceInstanceProperty__default["default"](_context = _Object$keys__default["default"](csp)).call(_context, (acc, directiveKey) => _Object$assign__default["default"](acc, {
84
81
  [directiveKey]: [...toArray(mergedCsp[directiveKey] ? mergedCsp[directiveKey] : []), ...toArray(csp[directiveKey])]
85
82
  }), {}));
86
83
  }, {});
87
84
  };
88
-
89
85
  const toHeaderString = function () {
90
86
  var _context2;
91
-
92
87
  let directives = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};
93
88
  return _mapInstanceProperty__default["default"](_context2 = _Object$entries__default["default"](directives)).call(_context2, _ref => {
94
89
  var _context3;
95
-
96
90
  let _ref2 = _slicedToArray(_ref, 2),
97
- directive = _ref2[0],
98
- value = _ref2[1];
99
-
91
+ directive = _ref2[0],
92
+ value = _ref2[1];
100
93
  return _concatInstanceProperty__default["default"](_context3 = "".concat(directive, " ")).call(_context3, _Array$isArray__default["default"](value) ? value.join(' ') : value);
101
94
  }).join('; ');
102
95
  };
103
-
104
96
  const toStructuredHeaderString = function () {
105
97
  var _context4;
106
-
107
98
  let directives = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};
108
99
  return _mapInstanceProperty__default["default"](_context4 = _Object$entries__default["default"](directives)).call(_context4, _ref3 => {
109
100
  var _context5;
110
-
111
101
  let _ref4 = _slicedToArray(_ref3, 2),
112
- directive = _ref4[0],
113
- value = _ref4[1];
114
-
102
+ directive = _ref4[0],
103
+ value = _ref4[1];
115
104
  return _concatInstanceProperty__default["default"](_context5 = "".concat(directive, "=")).call(_context5, _Array$isArray__default["default"](value) ? value.join(' ') : value);
116
105
  }).join(', ');
117
106
  };
118
-
119
107
  const processHeaders = applicationConfig => {
120
108
  var _context6, _context7, _context8, _applicationConfig$he, _applicationConfig$he2, _applicationConfig$he3, _applicationConfig$he4;
109
+ const isMcDevEnv = applicationConfig.env.env === 'development';
121
110
 
122
- const isMcDevEnv = applicationConfig.env.env === 'development'; // List hashes for injected inline scripts.
111
+ // List hashes for injected inline scripts.
123
112
  // https://developer.mozilla.org/en-US/docs/Web/HTTP/Headers/Content-Security-Policy/script-src
113
+ const htmlScriptsHashes = [createAssetHash(htmlScripts$1.loadingScreen), createAssetHash("window.app = ".concat(sanitizeAppEnvironment(applicationConfig.env), ";")), createAssetHash(htmlScripts$1.publicPath)];
124
114
 
125
- const htmlScriptsHashes = [createAssetHash(htmlScripts$1.loadingScreen), createAssetHash("window.app = ".concat(sanitizeAppEnvironment(applicationConfig.env), ";")), createAssetHash(htmlScripts$1.publicPath)]; // // List hashes for injected inline styles.
115
+ // // List hashes for injected inline styles.
126
116
  // // https://developer.mozilla.org/en-US/docs/Web/HTTP/Headers/Content-Security-Policy/style-src
127
117
  // const htmlStylesHashes = [createAssetHash(htmlStyles.loadingScreen)];
128
118
 
@@ -130,20 +120,24 @@ const processHeaders = applicationConfig => {
130
120
  * Content Security Policy (CSP)
131
121
  * https://developer.mozilla.org/en-US/docs/Web/HTTP/Headers/Content-Security-Policy
132
122
  */
133
-
134
123
  const cspDirectives = _Object$assign__default["default"]({
135
124
  'default-src': "'none'",
136
- 'script-src': _concatInstanceProperty__default["default"](_context6 = ["'self'"]).call(_context6, isMcDevEnv ? // Allow webpack to load source maps on runtime when errors occur
125
+ 'script-src': _concatInstanceProperty__default["default"](_context6 = ["'self'"]).call(_context6, isMcDevEnv ?
126
+ // Allow webpack to load source maps on runtime when errors occur
137
127
  // using script tags
138
128
  ['localhost:*', "'unsafe-inline'"] : _mapInstanceProperty__default["default"](htmlScriptsHashes).call(htmlScriptsHashes, assetHash => "'".concat(assetHash, "'"))),
139
- 'connect-src': _concatInstanceProperty__default["default"](_context7 = ["'self'", 'app.launchdarkly.com', 'clientstream.launchdarkly.com', 'events.launchdarkly.com', 'app.getsentry.com', // Match all attempts to load from any subdomain of `sentry.io`
129
+ 'connect-src': _concatInstanceProperty__default["default"](_context7 = ["'self'", 'app.launchdarkly.com', 'clientstream.launchdarkly.com', 'events.launchdarkly.com', 'app.getsentry.com',
130
+ // Match all attempts to load from any subdomain of `sentry.io`
140
131
  '*.sentry.io']).call(_context7, isMcDevEnv ? ['ws:', 'localhost:8080', 'webpack-internal:'] : []),
141
132
  'img-src': ['*', 'data:'],
142
- 'style-src': _concatInstanceProperty__default["default"](_context8 = ["'self'", 'fonts.googleapis.com', 'data:']).call(_context8, // TODO: investigate what needs to be done to avoid unsafe-inline styles
133
+ 'style-src': _concatInstanceProperty__default["default"](_context8 = ["'self'", 'fonts.googleapis.com', 'data:']).call(_context8,
134
+ // TODO: investigate what needs to be done to avoid unsafe-inline styles
143
135
  // https://github.com/commercetools/merchant-center-frontend/pull/5223#discussion_r210367636
144
- ["'unsafe-inline'"] // TODO: enable this once we can avoid unsafe-inline
136
+ ["'unsafe-inline'"]
137
+ // TODO: enable this once we can avoid unsafe-inline
145
138
  // htmlStylesHashes.map(assetHash => `'${assetHash}'`)
146
139
  ),
140
+
147
141
  'font-src': ["'self'", 'fonts.gstatic.com', 'data:']
148
142
  }, isMcDevEnv ? {
149
143
  // NOTE: use this instead of `upgrade-insecure-requests` for local
@@ -154,12 +148,13 @@ const processHeaders = applicationConfig => {
154
148
  // NOTE: prefer this over `block-all-mixed-content`.
155
149
  // https://youtu.be/j-0Bj40juMI?t=11m47s
156
150
  'upgrade-insecure-requests': ''
157
- } // NOTE: we might want to define further policies in the future, for example
151
+ }
152
+ // NOTE: we might want to define further policies in the future, for example
158
153
  // - `require-sri-for style script` (at the moment not possible because
159
154
  // Intercom scripts are apparently not meant for this)
160
- ); // Recursively merge the directives
161
-
155
+ );
162
156
 
157
+ // Recursively merge the directives
163
158
  const mergedCsp = mergeCspDirectives(cspDirectives, (_applicationConfig$he = (_applicationConfig$he2 = applicationConfig.headers) === null || _applicationConfig$he2 === void 0 ? void 0 : _applicationConfig$he2.csp) !== null && _applicationConfig$he !== void 0 ? _applicationConfig$he : {});
164
159
  return _objectSpread(_objectSpread(_objectSpread({}, constants.HTTP_SECURITY_HEADERS), {}, {
165
160
  // The `Content-Security-Policy` header is always generated
@@ -177,16 +172,12 @@ const htmlScripts = {
177
172
  "loadingScreen": "window.onAppLoaded=function(){var e=document.querySelector(\"#app-loader\");e&&e.parentNode.removeChild(e)},setTimeout(function(){var e=document.querySelector(\".loading-screen\");e&&e.classList.remove(\"loading-screen--hidden\")},250),setTimeout(function(){var e=document.querySelector(\".long-loading-notice\");e&&e.classList.remove(\"long-loading-notice--hidden\")},2e3);",
178
173
  "publicPath": "window.__dynamicImportHandler__=function(n){return window.app.cdnUrl.replace(/\\/$/,\"\")+\"/\"+n.replace(/^(\\.\\/)?/,\"\")},window.__dynamicImportPreload__=function(n){return n.map(n=>window.app.cdnUrl.replace(/\\/$/,\"\")+\"/\"+n)};"
179
174
  }; // https://babeljs.io/blog/2017/09/11/zero-config-with-babel-macros
180
-
181
175
  const htmlStyles = {
182
176
  "loadingScreen": ".loading-screen{display:flex;flex-direction:column;align-items:center;justify-content:center;height:100vh;width:100vw}.loading-screen--hidden{display:none}.loading-screen>*+*{margin:24px 0 0}.loading-spinner{width:32px;height:32px}.long-loading-notice{color:#999;font-family:'Open Sans',sans-serif;font-size:12px}.long-loading-notice--hidden{visibility:hidden}.loading-spinner-circle{fill:#213c45;opacity:.2}@keyframes loading-spinner-animation{0%{transform:rotate(0)}100%{transform:rotate(360deg)}}.loading-spinner-pointer{transform-origin:20px 20px 0;animation:loading-spinner-animation .5s infinite linear}"
183
177
  };
184
-
185
178
  const trimTrailingSlash = value => value.replace(/\/$/, '');
186
-
187
179
  const replaceHtmlPlaceholders = (indexHtmlContent, options) => {
188
180
  var _options$headers$Cont, _options$headers;
189
-
190
181
  return indexHtmlContent.replace(new RegExp('__CSP__', 'g'), (_options$headers$Cont = (_options$headers = options.headers) === null || _options$headers === void 0 ? void 0 : _options$headers['Content-Security-Policy']) !== null && _options$headers$Cont !== void 0 ? _options$headers$Cont : '').replace(new RegExp('__CDN_URL__', 'g'), options.env.cdnUrl ? // Ensure there is a trailing slash
191
182
  "".concat(trimTrailingSlash(options.env.cdnUrl), "/") : '').replace(new RegExp('__MC_API_URL__', 'g'), trimTrailingSlash(options.env.mcApiUrl)).replace(new RegExp('__APPLICATION_ENVIRONMENT__', 'g'), sanitizeAppEnvironment(options.env)).replace(new RegExp('__LOADING_SCREEN_JS__', 'g'), "<script>".concat(htmlScripts.loadingScreen, "</script>")).replace(new RegExp('__LOADING_SCREEN_CSS__', 'g'), "<style>".concat(htmlStyles.loadingScreen, "</style>"));
192
183
  };
@@ -23,7 +23,7 @@ var _Object$defineProperty = require('@babel/runtime-corejs3/core-js-stable/obje
23
23
  var constants = require('@commercetools-frontend/constants');
24
24
  var crypto = require('crypto');
25
25
  var serialize = require('serialize-javascript');
26
- var generateTemplate = require('./generate-template-22322523.cjs.prod.js');
26
+ var generateTemplate = require('./generate-template-44ae1d39.cjs.prod.js');
27
27
 
28
28
  function _interopDefault (e) { return e && e.__esModule ? e : { 'default': e }; }
29
29
 
@@ -47,6 +47,7 @@ var serialize__default = /*#__PURE__*/_interopDefault(serialize);
47
47
 
48
48
  function createAssetHash(content) {
49
49
  const sha256Hash = crypto__default["default"].createHash('sha256').update(content).digest('base64');
50
+
50
51
  /**
51
52
  * NOTE:
52
53
  * We prefix the hash function type as the browser
@@ -54,7 +55,6 @@ function createAssetHash(content) {
54
55
  * CSP headers sent.
55
56
  * For more information head to: developer.mozilla.org/en-US/docs/Web/HTTP/Headers/Content-Security-Policy/script-src#Sources
56
57
  */
57
-
58
58
  return "sha256-".concat(sha256Hash);
59
59
  }
60
60
 
@@ -63,66 +63,56 @@ const sanitizeAppEnvironment = env => serialize__default["default"](env, {
63
63
  });
64
64
 
65
65
  function ownKeys(object, enumerableOnly) { var keys = _Object$keys__default["default"](object); if (_Object$getOwnPropertySymbols__default["default"]) { var symbols = _Object$getOwnPropertySymbols__default["default"](object); enumerableOnly && (symbols = _filterInstanceProperty__default["default"](symbols).call(symbols, function (sym) { return _Object$getOwnPropertyDescriptor__default["default"](object, sym).enumerable; })), keys.push.apply(keys, symbols); } return keys; }
66
-
67
66
  function _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var _context9, _context10; var source = null != arguments[i] ? arguments[i] : {}; i % 2 ? _forEachInstanceProperty__default["default"](_context9 = ownKeys(Object(source), !0)).call(_context9, function (key) { _defineProperty(target, key, source[key]); }) : _Object$getOwnPropertyDescriptors__default["default"] ? _Object$defineProperties__default["default"](target, _Object$getOwnPropertyDescriptors__default["default"](source)) : _forEachInstanceProperty__default["default"](_context10 = ownKeys(Object(source))).call(_context10, function (key) { _Object$defineProperty__default["default"](target, key, _Object$getOwnPropertyDescriptor__default["default"](source, key)); }); } return target; }
68
67
  const htmlScripts$1 = {
69
68
  "loadingScreen": "window.onAppLoaded=function(){var e=document.querySelector(\"#app-loader\");e&&e.parentNode.removeChild(e)},setTimeout(function(){var e=document.querySelector(\".loading-screen\");e&&e.classList.remove(\"loading-screen--hidden\")},250),setTimeout(function(){var e=document.querySelector(\".long-loading-notice\");e&&e.classList.remove(\"long-loading-notice--hidden\")},2e3);",
70
69
  "publicPath": "window.__dynamicImportHandler__=function(n){return window.app.cdnUrl.replace(/\\/$/,\"\")+\"/\"+n.replace(/^(\\.\\/)?/,\"\")},window.__dynamicImportPreload__=function(n){return n.map(n=>window.app.cdnUrl.replace(/\\/$/,\"\")+\"/\"+n)};"
71
70
  };
71
+ // https://babeljs.io/blog/2017/09/11/zero-config-with-babel-macros
72
72
 
73
73
  const toArray = value => _Array$isArray__default["default"](value) ? value : [value];
74
-
75
74
  const mergeCspDirectives = function () {
76
75
  for (var _len = arguments.length, directives = new Array(_len), _key = 0; _key < _len; _key++) {
77
76
  directives[_key] = arguments[_key];
78
77
  }
79
-
80
78
  return _reduceInstanceProperty__default["default"](directives).call(directives, (mergedCsp, csp) => {
81
79
  var _context;
82
-
83
80
  return _Object$assign__default["default"](mergedCsp, _reduceInstanceProperty__default["default"](_context = _Object$keys__default["default"](csp)).call(_context, (acc, directiveKey) => _Object$assign__default["default"](acc, {
84
81
  [directiveKey]: [...toArray(mergedCsp[directiveKey] ? mergedCsp[directiveKey] : []), ...toArray(csp[directiveKey])]
85
82
  }), {}));
86
83
  }, {});
87
84
  };
88
-
89
85
  const toHeaderString = function () {
90
86
  var _context2;
91
-
92
87
  let directives = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};
93
88
  return _mapInstanceProperty__default["default"](_context2 = _Object$entries__default["default"](directives)).call(_context2, _ref => {
94
89
  var _context3;
95
-
96
90
  let _ref2 = _slicedToArray(_ref, 2),
97
- directive = _ref2[0],
98
- value = _ref2[1];
99
-
91
+ directive = _ref2[0],
92
+ value = _ref2[1];
100
93
  return _concatInstanceProperty__default["default"](_context3 = "".concat(directive, " ")).call(_context3, _Array$isArray__default["default"](value) ? value.join(' ') : value);
101
94
  }).join('; ');
102
95
  };
103
-
104
96
  const toStructuredHeaderString = function () {
105
97
  var _context4;
106
-
107
98
  let directives = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};
108
99
  return _mapInstanceProperty__default["default"](_context4 = _Object$entries__default["default"](directives)).call(_context4, _ref3 => {
109
100
  var _context5;
110
-
111
101
  let _ref4 = _slicedToArray(_ref3, 2),
112
- directive = _ref4[0],
113
- value = _ref4[1];
114
-
102
+ directive = _ref4[0],
103
+ value = _ref4[1];
115
104
  return _concatInstanceProperty__default["default"](_context5 = "".concat(directive, "=")).call(_context5, _Array$isArray__default["default"](value) ? value.join(' ') : value);
116
105
  }).join(', ');
117
106
  };
118
-
119
107
  const processHeaders = applicationConfig => {
120
108
  var _context6, _context7, _context8, _applicationConfig$he, _applicationConfig$he2, _applicationConfig$he3, _applicationConfig$he4;
109
+ const isMcDevEnv = applicationConfig.env.env === 'development';
121
110
 
122
- const isMcDevEnv = applicationConfig.env.env === 'development'; // List hashes for injected inline scripts.
111
+ // List hashes for injected inline scripts.
123
112
  // https://developer.mozilla.org/en-US/docs/Web/HTTP/Headers/Content-Security-Policy/script-src
113
+ const htmlScriptsHashes = [createAssetHash(htmlScripts$1.loadingScreen), createAssetHash("window.app = ".concat(sanitizeAppEnvironment(applicationConfig.env), ";")), createAssetHash(htmlScripts$1.publicPath)];
124
114
 
125
- const htmlScriptsHashes = [createAssetHash(htmlScripts$1.loadingScreen), createAssetHash("window.app = ".concat(sanitizeAppEnvironment(applicationConfig.env), ";")), createAssetHash(htmlScripts$1.publicPath)]; // // List hashes for injected inline styles.
115
+ // // List hashes for injected inline styles.
126
116
  // // https://developer.mozilla.org/en-US/docs/Web/HTTP/Headers/Content-Security-Policy/style-src
127
117
  // const htmlStylesHashes = [createAssetHash(htmlStyles.loadingScreen)];
128
118
 
@@ -130,20 +120,24 @@ const processHeaders = applicationConfig => {
130
120
  * Content Security Policy (CSP)
131
121
  * https://developer.mozilla.org/en-US/docs/Web/HTTP/Headers/Content-Security-Policy
132
122
  */
133
-
134
123
  const cspDirectives = _Object$assign__default["default"]({
135
124
  'default-src': "'none'",
136
- 'script-src': _concatInstanceProperty__default["default"](_context6 = ["'self'"]).call(_context6, isMcDevEnv ? // Allow webpack to load source maps on runtime when errors occur
125
+ 'script-src': _concatInstanceProperty__default["default"](_context6 = ["'self'"]).call(_context6, isMcDevEnv ?
126
+ // Allow webpack to load source maps on runtime when errors occur
137
127
  // using script tags
138
128
  ['localhost:*', "'unsafe-inline'"] : _mapInstanceProperty__default["default"](htmlScriptsHashes).call(htmlScriptsHashes, assetHash => "'".concat(assetHash, "'"))),
139
- 'connect-src': _concatInstanceProperty__default["default"](_context7 = ["'self'", 'app.launchdarkly.com', 'clientstream.launchdarkly.com', 'events.launchdarkly.com', 'app.getsentry.com', // Match all attempts to load from any subdomain of `sentry.io`
129
+ 'connect-src': _concatInstanceProperty__default["default"](_context7 = ["'self'", 'app.launchdarkly.com', 'clientstream.launchdarkly.com', 'events.launchdarkly.com', 'app.getsentry.com',
130
+ // Match all attempts to load from any subdomain of `sentry.io`
140
131
  '*.sentry.io']).call(_context7, isMcDevEnv ? ['ws:', 'localhost:8080', 'webpack-internal:'] : []),
141
132
  'img-src': ['*', 'data:'],
142
- 'style-src': _concatInstanceProperty__default["default"](_context8 = ["'self'", 'fonts.googleapis.com', 'data:']).call(_context8, // TODO: investigate what needs to be done to avoid unsafe-inline styles
133
+ 'style-src': _concatInstanceProperty__default["default"](_context8 = ["'self'", 'fonts.googleapis.com', 'data:']).call(_context8,
134
+ // TODO: investigate what needs to be done to avoid unsafe-inline styles
143
135
  // https://github.com/commercetools/merchant-center-frontend/pull/5223#discussion_r210367636
144
- ["'unsafe-inline'"] // TODO: enable this once we can avoid unsafe-inline
136
+ ["'unsafe-inline'"]
137
+ // TODO: enable this once we can avoid unsafe-inline
145
138
  // htmlStylesHashes.map(assetHash => `'${assetHash}'`)
146
139
  ),
140
+
147
141
  'font-src': ["'self'", 'fonts.gstatic.com', 'data:']
148
142
  }, isMcDevEnv ? {
149
143
  // NOTE: use this instead of `upgrade-insecure-requests` for local
@@ -154,12 +148,13 @@ const processHeaders = applicationConfig => {
154
148
  // NOTE: prefer this over `block-all-mixed-content`.
155
149
  // https://youtu.be/j-0Bj40juMI?t=11m47s
156
150
  'upgrade-insecure-requests': ''
157
- } // NOTE: we might want to define further policies in the future, for example
151
+ }
152
+ // NOTE: we might want to define further policies in the future, for example
158
153
  // - `require-sri-for style script` (at the moment not possible because
159
154
  // Intercom scripts are apparently not meant for this)
160
- ); // Recursively merge the directives
161
-
155
+ );
162
156
 
157
+ // Recursively merge the directives
163
158
  const mergedCsp = mergeCspDirectives(cspDirectives, (_applicationConfig$he = (_applicationConfig$he2 = applicationConfig.headers) === null || _applicationConfig$he2 === void 0 ? void 0 : _applicationConfig$he2.csp) !== null && _applicationConfig$he !== void 0 ? _applicationConfig$he : {});
164
159
  return _objectSpread(_objectSpread(_objectSpread({}, constants.HTTP_SECURITY_HEADERS), {}, {
165
160
  // The `Content-Security-Policy` header is always generated
@@ -177,16 +172,12 @@ const htmlScripts = {
177
172
  "loadingScreen": "window.onAppLoaded=function(){var e=document.querySelector(\"#app-loader\");e&&e.parentNode.removeChild(e)},setTimeout(function(){var e=document.querySelector(\".loading-screen\");e&&e.classList.remove(\"loading-screen--hidden\")},250),setTimeout(function(){var e=document.querySelector(\".long-loading-notice\");e&&e.classList.remove(\"long-loading-notice--hidden\")},2e3);",
178
173
  "publicPath": "window.__dynamicImportHandler__=function(n){return window.app.cdnUrl.replace(/\\/$/,\"\")+\"/\"+n.replace(/^(\\.\\/)?/,\"\")},window.__dynamicImportPreload__=function(n){return n.map(n=>window.app.cdnUrl.replace(/\\/$/,\"\")+\"/\"+n)};"
179
174
  }; // https://babeljs.io/blog/2017/09/11/zero-config-with-babel-macros
180
-
181
175
  const htmlStyles = {
182
176
  "loadingScreen": ".loading-screen{display:flex;flex-direction:column;align-items:center;justify-content:center;height:100vh;width:100vw}.loading-screen--hidden{display:none}.loading-screen>*+*{margin:24px 0 0}.loading-spinner{width:32px;height:32px}.long-loading-notice{color:#999;font-family:'Open Sans',sans-serif;font-size:12px}.long-loading-notice--hidden{visibility:hidden}.loading-spinner-circle{fill:#213c45;opacity:.2}@keyframes loading-spinner-animation{0%{transform:rotate(0)}100%{transform:rotate(360deg)}}.loading-spinner-pointer{transform-origin:20px 20px 0;animation:loading-spinner-animation .5s infinite linear}"
183
177
  };
184
-
185
178
  const trimTrailingSlash = value => value.replace(/\/$/, '');
186
-
187
179
  const replaceHtmlPlaceholders = (indexHtmlContent, options) => {
188
180
  var _options$headers$Cont, _options$headers;
189
-
190
181
  return indexHtmlContent.replace(new RegExp('__CSP__', 'g'), (_options$headers$Cont = (_options$headers = options.headers) === null || _options$headers === void 0 ? void 0 : _options$headers['Content-Security-Policy']) !== null && _options$headers$Cont !== void 0 ? _options$headers$Cont : '').replace(new RegExp('__CDN_URL__', 'g'), options.env.cdnUrl ? // Ensure there is a trailing slash
191
182
  "".concat(trimTrailingSlash(options.env.cdnUrl), "/") : '').replace(new RegExp('__MC_API_URL__', 'g'), trimTrailingSlash(options.env.mcApiUrl)).replace(new RegExp('__APPLICATION_ENVIRONMENT__', 'g'), sanitizeAppEnvironment(options.env)).replace(new RegExp('__LOADING_SCREEN_JS__', 'g'), "<script>".concat(htmlScripts.loadingScreen, "</script>")).replace(new RegExp('__LOADING_SCREEN_CSS__', 'g'), "<style>".concat(htmlStyles.loadingScreen, "</style>"));
192
183
  };
@@ -19,10 +19,11 @@ import _Object$defineProperty from '@babel/runtime-corejs3/core-js-stable/object
19
19
  import { HTTP_SECURITY_HEADERS } from '@commercetools-frontend/constants';
20
20
  import crypto from 'crypto';
21
21
  import serialize from 'serialize-javascript';
22
- export { g as generateTemplate } from './generate-template-92ffe4b4.esm.js';
22
+ export { g as generateTemplate } from './generate-template-bd0af6d9.esm.js';
23
23
 
24
24
  function createAssetHash(content) {
25
25
  const sha256Hash = crypto.createHash('sha256').update(content).digest('base64');
26
+
26
27
  /**
27
28
  * NOTE:
28
29
  * We prefix the hash function type as the browser
@@ -30,7 +31,6 @@ function createAssetHash(content) {
30
31
  * CSP headers sent.
31
32
  * For more information head to: developer.mozilla.org/en-US/docs/Web/HTTP/Headers/Content-Security-Policy/script-src#Sources
32
33
  */
33
-
34
34
  return "sha256-".concat(sha256Hash);
35
35
  }
36
36
 
@@ -39,66 +39,56 @@ const sanitizeAppEnvironment = env => serialize(env, {
39
39
  });
40
40
 
41
41
  function ownKeys(object, enumerableOnly) { var keys = _Object$keys(object); if (_Object$getOwnPropertySymbols) { var symbols = _Object$getOwnPropertySymbols(object); enumerableOnly && (symbols = _filterInstanceProperty(symbols).call(symbols, function (sym) { return _Object$getOwnPropertyDescriptor(object, sym).enumerable; })), keys.push.apply(keys, symbols); } return keys; }
42
-
43
42
  function _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var _context9, _context10; var source = null != arguments[i] ? arguments[i] : {}; i % 2 ? _forEachInstanceProperty(_context9 = ownKeys(Object(source), !0)).call(_context9, function (key) { _defineProperty(target, key, source[key]); }) : _Object$getOwnPropertyDescriptors ? _Object$defineProperties(target, _Object$getOwnPropertyDescriptors(source)) : _forEachInstanceProperty(_context10 = ownKeys(Object(source))).call(_context10, function (key) { _Object$defineProperty(target, key, _Object$getOwnPropertyDescriptor(source, key)); }); } return target; }
44
43
  const htmlScripts$1 = {
45
44
  "loadingScreen": "window.onAppLoaded=function(){var e=document.querySelector(\"#app-loader\");e&&e.parentNode.removeChild(e)},setTimeout(function(){var e=document.querySelector(\".loading-screen\");e&&e.classList.remove(\"loading-screen--hidden\")},250),setTimeout(function(){var e=document.querySelector(\".long-loading-notice\");e&&e.classList.remove(\"long-loading-notice--hidden\")},2e3);",
46
45
  "publicPath": "window.__dynamicImportHandler__=function(n){return window.app.cdnUrl.replace(/\\/$/,\"\")+\"/\"+n.replace(/^(\\.\\/)?/,\"\")},window.__dynamicImportPreload__=function(n){return n.map(n=>window.app.cdnUrl.replace(/\\/$/,\"\")+\"/\"+n)};"
47
46
  };
47
+ // https://babeljs.io/blog/2017/09/11/zero-config-with-babel-macros
48
48
 
49
49
  const toArray = value => _Array$isArray(value) ? value : [value];
50
-
51
50
  const mergeCspDirectives = function () {
52
51
  for (var _len = arguments.length, directives = new Array(_len), _key = 0; _key < _len; _key++) {
53
52
  directives[_key] = arguments[_key];
54
53
  }
55
-
56
54
  return _reduceInstanceProperty(directives).call(directives, (mergedCsp, csp) => {
57
55
  var _context;
58
-
59
56
  return _Object$assign(mergedCsp, _reduceInstanceProperty(_context = _Object$keys(csp)).call(_context, (acc, directiveKey) => _Object$assign(acc, {
60
57
  [directiveKey]: [...toArray(mergedCsp[directiveKey] ? mergedCsp[directiveKey] : []), ...toArray(csp[directiveKey])]
61
58
  }), {}));
62
59
  }, {});
63
60
  };
64
-
65
61
  const toHeaderString = function () {
66
62
  var _context2;
67
-
68
63
  let directives = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};
69
64
  return _mapInstanceProperty(_context2 = _Object$entries(directives)).call(_context2, _ref => {
70
65
  var _context3;
71
-
72
66
  let _ref2 = _slicedToArray(_ref, 2),
73
- directive = _ref2[0],
74
- value = _ref2[1];
75
-
67
+ directive = _ref2[0],
68
+ value = _ref2[1];
76
69
  return _concatInstanceProperty(_context3 = "".concat(directive, " ")).call(_context3, _Array$isArray(value) ? value.join(' ') : value);
77
70
  }).join('; ');
78
71
  };
79
-
80
72
  const toStructuredHeaderString = function () {
81
73
  var _context4;
82
-
83
74
  let directives = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};
84
75
  return _mapInstanceProperty(_context4 = _Object$entries(directives)).call(_context4, _ref3 => {
85
76
  var _context5;
86
-
87
77
  let _ref4 = _slicedToArray(_ref3, 2),
88
- directive = _ref4[0],
89
- value = _ref4[1];
90
-
78
+ directive = _ref4[0],
79
+ value = _ref4[1];
91
80
  return _concatInstanceProperty(_context5 = "".concat(directive, "=")).call(_context5, _Array$isArray(value) ? value.join(' ') : value);
92
81
  }).join(', ');
93
82
  };
94
-
95
83
  const processHeaders = applicationConfig => {
96
84
  var _context6, _context7, _context8, _applicationConfig$he, _applicationConfig$he2, _applicationConfig$he3, _applicationConfig$he4;
85
+ const isMcDevEnv = applicationConfig.env.env === 'development';
97
86
 
98
- const isMcDevEnv = applicationConfig.env.env === 'development'; // List hashes for injected inline scripts.
87
+ // List hashes for injected inline scripts.
99
88
  // https://developer.mozilla.org/en-US/docs/Web/HTTP/Headers/Content-Security-Policy/script-src
89
+ const htmlScriptsHashes = [createAssetHash(htmlScripts$1.loadingScreen), createAssetHash("window.app = ".concat(sanitizeAppEnvironment(applicationConfig.env), ";")), createAssetHash(htmlScripts$1.publicPath)];
100
90
 
101
- const htmlScriptsHashes = [createAssetHash(htmlScripts$1.loadingScreen), createAssetHash("window.app = ".concat(sanitizeAppEnvironment(applicationConfig.env), ";")), createAssetHash(htmlScripts$1.publicPath)]; // // List hashes for injected inline styles.
91
+ // // List hashes for injected inline styles.
102
92
  // // https://developer.mozilla.org/en-US/docs/Web/HTTP/Headers/Content-Security-Policy/style-src
103
93
  // const htmlStylesHashes = [createAssetHash(htmlStyles.loadingScreen)];
104
94
 
@@ -106,20 +96,24 @@ const processHeaders = applicationConfig => {
106
96
  * Content Security Policy (CSP)
107
97
  * https://developer.mozilla.org/en-US/docs/Web/HTTP/Headers/Content-Security-Policy
108
98
  */
109
-
110
99
  const cspDirectives = _Object$assign({
111
100
  'default-src': "'none'",
112
- 'script-src': _concatInstanceProperty(_context6 = ["'self'"]).call(_context6, isMcDevEnv ? // Allow webpack to load source maps on runtime when errors occur
101
+ 'script-src': _concatInstanceProperty(_context6 = ["'self'"]).call(_context6, isMcDevEnv ?
102
+ // Allow webpack to load source maps on runtime when errors occur
113
103
  // using script tags
114
104
  ['localhost:*', "'unsafe-inline'"] : _mapInstanceProperty(htmlScriptsHashes).call(htmlScriptsHashes, assetHash => "'".concat(assetHash, "'"))),
115
- 'connect-src': _concatInstanceProperty(_context7 = ["'self'", 'app.launchdarkly.com', 'clientstream.launchdarkly.com', 'events.launchdarkly.com', 'app.getsentry.com', // Match all attempts to load from any subdomain of `sentry.io`
105
+ 'connect-src': _concatInstanceProperty(_context7 = ["'self'", 'app.launchdarkly.com', 'clientstream.launchdarkly.com', 'events.launchdarkly.com', 'app.getsentry.com',
106
+ // Match all attempts to load from any subdomain of `sentry.io`
116
107
  '*.sentry.io']).call(_context7, isMcDevEnv ? ['ws:', 'localhost:8080', 'webpack-internal:'] : []),
117
108
  'img-src': ['*', 'data:'],
118
- 'style-src': _concatInstanceProperty(_context8 = ["'self'", 'fonts.googleapis.com', 'data:']).call(_context8, // TODO: investigate what needs to be done to avoid unsafe-inline styles
109
+ 'style-src': _concatInstanceProperty(_context8 = ["'self'", 'fonts.googleapis.com', 'data:']).call(_context8,
110
+ // TODO: investigate what needs to be done to avoid unsafe-inline styles
119
111
  // https://github.com/commercetools/merchant-center-frontend/pull/5223#discussion_r210367636
120
- ["'unsafe-inline'"] // TODO: enable this once we can avoid unsafe-inline
112
+ ["'unsafe-inline'"]
113
+ // TODO: enable this once we can avoid unsafe-inline
121
114
  // htmlStylesHashes.map(assetHash => `'${assetHash}'`)
122
115
  ),
116
+
123
117
  'font-src': ["'self'", 'fonts.gstatic.com', 'data:']
124
118
  }, isMcDevEnv ? {
125
119
  // NOTE: use this instead of `upgrade-insecure-requests` for local
@@ -130,12 +124,13 @@ const processHeaders = applicationConfig => {
130
124
  // NOTE: prefer this over `block-all-mixed-content`.
131
125
  // https://youtu.be/j-0Bj40juMI?t=11m47s
132
126
  'upgrade-insecure-requests': ''
133
- } // NOTE: we might want to define further policies in the future, for example
127
+ }
128
+ // NOTE: we might want to define further policies in the future, for example
134
129
  // - `require-sri-for style script` (at the moment not possible because
135
130
  // Intercom scripts are apparently not meant for this)
136
- ); // Recursively merge the directives
137
-
131
+ );
138
132
 
133
+ // Recursively merge the directives
139
134
  const mergedCsp = mergeCspDirectives(cspDirectives, (_applicationConfig$he = (_applicationConfig$he2 = applicationConfig.headers) === null || _applicationConfig$he2 === void 0 ? void 0 : _applicationConfig$he2.csp) !== null && _applicationConfig$he !== void 0 ? _applicationConfig$he : {});
140
135
  return _objectSpread(_objectSpread(_objectSpread({}, HTTP_SECURITY_HEADERS), {}, {
141
136
  // The `Content-Security-Policy` header is always generated
@@ -153,16 +148,12 @@ const htmlScripts = {
153
148
  "loadingScreen": "window.onAppLoaded=function(){var e=document.querySelector(\"#app-loader\");e&&e.parentNode.removeChild(e)},setTimeout(function(){var e=document.querySelector(\".loading-screen\");e&&e.classList.remove(\"loading-screen--hidden\")},250),setTimeout(function(){var e=document.querySelector(\".long-loading-notice\");e&&e.classList.remove(\"long-loading-notice--hidden\")},2e3);",
154
149
  "publicPath": "window.__dynamicImportHandler__=function(n){return window.app.cdnUrl.replace(/\\/$/,\"\")+\"/\"+n.replace(/^(\\.\\/)?/,\"\")},window.__dynamicImportPreload__=function(n){return n.map(n=>window.app.cdnUrl.replace(/\\/$/,\"\")+\"/\"+n)};"
155
150
  }; // https://babeljs.io/blog/2017/09/11/zero-config-with-babel-macros
156
-
157
151
  const htmlStyles = {
158
152
  "loadingScreen": ".loading-screen{display:flex;flex-direction:column;align-items:center;justify-content:center;height:100vh;width:100vw}.loading-screen--hidden{display:none}.loading-screen>*+*{margin:24px 0 0}.loading-spinner{width:32px;height:32px}.long-loading-notice{color:#999;font-family:'Open Sans',sans-serif;font-size:12px}.long-loading-notice--hidden{visibility:hidden}.loading-spinner-circle{fill:#213c45;opacity:.2}@keyframes loading-spinner-animation{0%{transform:rotate(0)}100%{transform:rotate(360deg)}}.loading-spinner-pointer{transform-origin:20px 20px 0;animation:loading-spinner-animation .5s infinite linear}"
159
153
  };
160
-
161
154
  const trimTrailingSlash = value => value.replace(/\/$/, '');
162
-
163
155
  const replaceHtmlPlaceholders = (indexHtmlContent, options) => {
164
156
  var _options$headers$Cont, _options$headers;
165
-
166
157
  return indexHtmlContent.replace(new RegExp('__CSP__', 'g'), (_options$headers$Cont = (_options$headers = options.headers) === null || _options$headers === void 0 ? void 0 : _options$headers['Content-Security-Policy']) !== null && _options$headers$Cont !== void 0 ? _options$headers$Cont : '').replace(new RegExp('__CDN_URL__', 'g'), options.env.cdnUrl ? // Ensure there is a trailing slash
167
158
  "".concat(trimTrailingSlash(options.env.cdnUrl), "/") : '').replace(new RegExp('__MC_API_URL__', 'g'), trimTrailingSlash(options.env.mcApiUrl)).replace(new RegExp('__APPLICATION_ENVIRONMENT__', 'g'), sanitizeAppEnvironment(options.env)).replace(new RegExp('__LOADING_SCREEN_JS__', 'g'), "<script>".concat(htmlScripts.loadingScreen, "</script>")).replace(new RegExp('__LOADING_SCREEN_CSS__', 'g'), "<style>".concat(htmlStyles.loadingScreen, "</style>"));
168
159
  };
@@ -4,12 +4,11 @@
4
4
  const htmlDocs = {
5
5
  "application": "<!DOCTYPE html>\n<html lang=\"en\">\n <head>\n <meta charset=\"utf-8\">\n <meta name=\"viewport\" content=\"width=device-width, initial-scale=1, maximum-scale=1\">\n <meta name=\"referrer\" content=\"no-referrer\">\n\n <meta http-equiv=\"Content-Security-Policy\" content=\"__CSP__\">\n\n <!-- Preconnects -->\n <link rel=\"preconnect\" href=\"__CDN_URL__\">\n <link rel=\"preconnect\" href=\"__MC_API_URL__\">\n <link rel=\"preconnect\" href=\"https://fonts.googleapis.com\">\n <link rel=\"preconnect\" href=\"https://fonts.gstatic.com\" crossorigin>\n <link rel=\"preconnect\" href=\"https://app.launchdarkly.com\">\n <link rel=\"preconnect\" href=\"https://clientstream.launchdarkly.com\">\n <link rel=\"preconnect\" href=\"https://events.launchdarkly.com\">\n\n <!-- Fav and touch icons -->\n <link rel=\"shortcut icon\" type=\"image/png\" href=\"__CDN_URL__favicon.png\">\n <!-- Standard iPhone -->\n <link rel=\"apple-touch-icon\" sizes=\"57x57\" href=\"__CDN_URL__favicon_57x57px.png\">\n <link rel=\"apple-touch-icon-precomposed\" sizes=\"57x57\" href=\"__CDN_URL__favicon_57x57px.png\">\n <!-- Standard iPad -->\n <link rel=\"apple-touch-icon\" sizes=\"72x72\" href=\"__CDN_URL__favicon_72x72px.png\">\n <link rel=\"apple-touch-icon-precomposed\" sizes=\"72x72\" href=\"__CDN_URL__favicon_72x72px.png\">\n <!-- Retina iPad -->\n <link rel=\"apple-touch-icon\" sizes=\"144x144\" href=\"__CDN_URL__favicon_144x144px.png\">\n <link rel=\"apple-touch-icon-precomposed\" sizes=\"144x144\" href=\"__CDN_URL__favicon_144x144px.png\">\n\n <!-- Fonts -->\n <link href=\"https://fonts.googleapis.com/css2?family=Inter:slnt,wght@-10,400;-10,500;0,400;0,500;0,600;0,700&family=Open+Sans:ital,wght@0,300;0,400;0,700;1,400;1,700&display=swap\" rel=\"stylesheet\">\n\n __APPLICATION_CSS_IMPORTS__\n\n <title>Merchant Center</title>\n </head>\n <body>\n <noscript>You need to enable JavaScript to run this app.</noscript>\n\n <div id=\"app-loader\">\n <!-- Loading screen styles -->\n __LOADING_SCREEN_CSS__\n\n <div class=\"loading-screen loading-screen--hidden\">\n <svg class=\"loading-spinner\" viewBox=\"0 0 40 40\">\n <path class=\"loading-spinner-circle\" d=\"M20.201,5.169c-8.254,0-14.946,6.692-14.946,14.946c0,8.255,6.692,14.946, 14.946,14.946 s14.946-6.691,14.946-14.946C35.146,11.861,28.455,5.169,20.201,5.169z M20.201,31.749c-6.425,0-11.634-5.208-11.634-11.634c0-6.425,5.209-11.634,11.634-11.634c6.425,0,11.633,5.209,11.633,11.634C31.834,26.541,26.626,31.749,20.201,31.749z\"></path>\n <path class=\"loading-spinner-pointer\" d=\"M26.013,10.047l1.654-2.866c-2.198-1.272-4.743-2.012-7.466-2.012h0v3.312h0 C22.32,8.481,24.301,9.057,26.013,10.047z\"></path>\n </svg>\n <svg width=\"200\" height=\"29\" xmlns=\"http://www.w3.org/2000/svg\">\n <g fill=\"none\" fill-rule=\"evenodd\">\n <path d=\"M38.342 20.486c1.102 0 1.738-.073 3.133-.367l.343 2.35c-1.077.293-2.276.44-3.476.44-5.358 0-6.9-3.353-6.9-7.268.049-3.818 2.35-7.048 6.876-7.048 1.2 0 2.227.147 3.475.465l-.465 2.325c-1.321-.294-2.104-.342-2.936-.342-2.839.048-4.234 2.153-4.283 4.6 0 2.422.906 4.845 4.233 4.845M49.304 20.51c2.814-.024 3.72-2.3 3.72-4.77-.024-2.253-.98-4.798-3.744-4.798-2.692.025-3.745 2.521-3.745 4.797 0 2.569 1.126 4.771 3.769 4.771zm0-11.917c4.405.025 6.363 3.304 6.363 7.146 0 3.744-1.689 7.096-6.387 7.12-4.601-.048-6.363-3.376-6.363-7.12 0-3.842 1.982-7.097 6.387-7.146zM73.896 22.615v-8.81c0-2.226-.832-2.838-2.227-2.838-.954 0-2.031.539-3.01 1.346.05.294.073.88.073 1.052v9.25h-2.74v-8.907c0-2.227-.661-2.766-2.056-2.766-.88 0-2.104.588-3.157 1.371v10.302h-2.716V8.838h2.716v1.174c.832-.66 2.154-1.419 3.597-1.443 1.91-.024 3.01.636 3.623 1.664 1.125-1.052 2.79-1.64 4.062-1.664 4.478-.074 4.55 3.523 4.55 5.04v9.006h-2.715M95.427 22.615v-8.81c0-2.226-.831-2.838-2.226-2.838-.955 0-2.032.539-3.01 1.346.049.294.073.88.073 1.052v9.25h-2.74v-8.907c0-2.227-.662-2.766-2.057-2.766-.88 0-2.104.588-3.157 1.371v10.302h-2.716V8.838h2.716v1.174c.833-.66 2.154-1.419 3.598-1.443 1.908-.024 3.01.636 3.622 1.664 1.126-1.052 2.79-1.64 4.062-1.664 4.478-.074 4.551 3.523 4.551 5.04v9.006h-2.716M103.035 14.124h6.044c-.098-2.79-1.492-3.353-2.789-3.353-2.056-.024-3.01 1.37-3.255 3.353zm7.782 5.97l.416 2.227c-1.224.416-2.912.612-4.233.612-5.433 0-6.755-3.646-6.755-7.292s1.616-7.023 6.167-7.023c2.814 0 5.163 1.737 5.188 6.166l-.025 1.444h-8.662c.049 2.692 1.493 4.331 4.209 4.331 1.076 0 2.202-.122 3.695-.465zM121.582 11.358a7.379 7.379 0 0 0-1.762-.195c-1.689-.025-2.57.808-3.206 1.468v9.984h-2.716V8.838h2.716v1.223a4.503 4.503 0 0 1 3.182-1.395 6.356 6.356 0 0 1 2.275.368l-.489 2.324M129.533 20.486c1.102 0 1.738-.073 3.132-.367l.344 2.35c-1.077.293-2.276.44-3.476.44-5.359 0-6.9-3.353-6.9-7.268.049-3.818 2.349-7.048 6.876-7.048 1.2 0 2.227.147 3.475.465l-.465 2.325c-1.322-.294-2.105-.342-2.936-.342-2.839.048-4.234 2.153-4.284 4.6 0 2.422.907 4.845 4.234 4.845M136.898 14.124h6.045c-.098-2.79-1.493-3.353-2.79-3.353-2.056-.024-3.01 1.37-3.255 3.353zm7.782 5.97l.416 2.227c-1.224.416-2.912.612-4.234.612-5.432 0-6.754-3.646-6.754-7.292s1.616-7.023 6.167-7.023c2.815 0 5.164 1.737 5.188 6.166l-.024 1.444h-8.663c.049 2.692 1.493 4.331 4.209 4.331 1.076 0 2.202-.122 3.695-.465zM154.662 11.09h-3.744v6.68c0 1.394.171 2.374 1.59 2.569.784.074 1.591 0 2.374-.098l.171 2.35c-.807.146-1.957.17-2.422.17-3.206-.121-4.405-1.761-4.405-4.33v-7.342h-1.982V9.205l1.982-.22V5.779h2.692v3.06h3.744v2.25M162.565 20.51c2.815-.024 3.72-2.3 3.72-4.77-.024-2.253-.979-4.798-3.744-4.798-2.692.025-3.745 2.521-3.745 4.797 0 2.569 1.127 4.771 3.77 4.771zm0-11.917c4.405.025 6.363 3.304 6.363 7.146 0 3.744-1.689 7.096-6.387 7.12-4.6-.048-6.363-3.376-6.363-7.12 0-3.842 1.982-7.097 6.387-7.146zM177.197 20.51c2.814-.024 3.72-2.3 3.72-4.77-.025-2.253-.98-4.798-3.744-4.798-2.692.025-3.745 2.521-3.745 4.797 0 2.569 1.126 4.771 3.769 4.771zm0-11.917c4.405.025 6.363 3.304 6.363 7.146 0 3.744-1.69 7.096-6.387 7.12-4.601-.048-6.363-3.376-6.363-7.12 0-3.842 1.982-7.097 6.387-7.146zM185.71 22.615h2.619V3.919h-2.619zM191.094 19.948c1.542.391 2.985.587 3.89.587 1.078 0 2.179-.22 2.252-1.517.074-1.37-1.346-1.787-2.96-2.472-1.836-.758-3.818-1.786-3.77-4.331.05-1.273.808-3.769 4.87-3.646 1.224.024 2.692.22 3.915.538l-.464 2.251c-1.444-.342-2.52-.49-3.573-.513-1.175 0-2.08.367-2.129 1.468-.024.93.71 1.42 2.52 2.153 1.836.759 4.43 1.738 4.308 4.625-.074 1.835-1.273 3.842-4.968 3.793-1.175-.024-3.059-.171-4.453-.66l.562-2.276\" fill=\"#27373C\"/>\n <path d=\"M.349 22.312a.601.601 0 0 0-.002 1.091l11.663 5.46c.156.074.325.112.493.113V16.787c-.173 0-.346.037-.508.112L.35 22.312\" fill=\"#E3712C\"/>\n <path d=\"M12.503 16.787v12.19c.18.003.361-.035.528-.113l11.63-5.444a.6.6 0 0 0-.002-1.09L13.011 16.9a1.2 1.2 0 0 0-.508-.113\" fill=\"#EBA13B\"/>\n <path d=\"M0 6.363a.596.596 0 0 0 .347.546l11.663 5.46a1.194 1.194 0 0 0 .93.039l.327-.152c1.203-.56.406-.187 11.394-5.33a.6.6 0 0 0-.002-1.091L13.011.405a1.205 1.205 0 0 0-1.016 0L.35 5.818A.603.603 0 0 0 0 6.363\" fill=\"#23A486\"/>\n <path d=\"M12.503 13.168v3.62c-.173 0-.346.036-.508.111L.35 22.312a.601.601 0 0 0-.348.545L0 6.77v-.407c0 .234.134.447.346.546l11.664 5.46a1.194 1.194 0 0 0 .93.039l-.02.009c-.362.167-.417.334-.417.75\" fill=\"#CCCCC7\"/>\n </g>\n </svg>\n <p class=\"long-loading-notice long-loading-notice--hidden\">Sorry, this is taking an unusually long time.</p>\n </div>\n </div>\n <div id=\"app\"></div>\n\n <!-- Loading screen handling -->\n __LOADING_SCREEN_JS__\n\n <!-- Application globals -->\n <script>window.app = __APPLICATION_ENVIRONMENT__;</script>\n\n <!-- Main application chunks -->\n __APPLICATION_SCRIPT_IMPORTS__\n </body>\n</html>\n"
6
6
  };
7
-
8
7
  function generateTemplate(_ref) {
9
8
  let _ref$cssImports = _ref.cssImports,
10
- cssImports = _ref$cssImports === void 0 ? [] : _ref$cssImports,
11
- _ref$scriptImports = _ref.scriptImports,
12
- scriptImports = _ref$scriptImports === void 0 ? [] : _ref$scriptImports;
9
+ cssImports = _ref$cssImports === void 0 ? [] : _ref$cssImports,
10
+ _ref$scriptImports = _ref.scriptImports,
11
+ scriptImports = _ref$scriptImports === void 0 ? [] : _ref$scriptImports;
13
12
  return htmlDocs.application.replace(new RegExp('__APPLICATION_CSS_IMPORTS__', 'g'), cssImports.join('\n')).replace(new RegExp('__APPLICATION_SCRIPT_IMPORTS__', 'g'), scriptImports.join('\n'));
14
13
  }
15
14
 
@@ -4,12 +4,11 @@
4
4
  const htmlDocs = {
5
5
  "application": "<!DOCTYPE html>\n<html lang=\"en\">\n <head>\n <meta charset=\"utf-8\">\n <meta name=\"viewport\" content=\"width=device-width, initial-scale=1, maximum-scale=1\">\n <meta name=\"referrer\" content=\"no-referrer\">\n\n <meta http-equiv=\"Content-Security-Policy\" content=\"__CSP__\">\n\n <!-- Preconnects -->\n <link rel=\"preconnect\" href=\"__CDN_URL__\">\n <link rel=\"preconnect\" href=\"__MC_API_URL__\">\n <link rel=\"preconnect\" href=\"https://fonts.googleapis.com\">\n <link rel=\"preconnect\" href=\"https://fonts.gstatic.com\" crossorigin>\n <link rel=\"preconnect\" href=\"https://app.launchdarkly.com\">\n <link rel=\"preconnect\" href=\"https://clientstream.launchdarkly.com\">\n <link rel=\"preconnect\" href=\"https://events.launchdarkly.com\">\n\n <!-- Fav and touch icons -->\n <link rel=\"shortcut icon\" type=\"image/png\" href=\"__CDN_URL__favicon.png\">\n <!-- Standard iPhone -->\n <link rel=\"apple-touch-icon\" sizes=\"57x57\" href=\"__CDN_URL__favicon_57x57px.png\">\n <link rel=\"apple-touch-icon-precomposed\" sizes=\"57x57\" href=\"__CDN_URL__favicon_57x57px.png\">\n <!-- Standard iPad -->\n <link rel=\"apple-touch-icon\" sizes=\"72x72\" href=\"__CDN_URL__favicon_72x72px.png\">\n <link rel=\"apple-touch-icon-precomposed\" sizes=\"72x72\" href=\"__CDN_URL__favicon_72x72px.png\">\n <!-- Retina iPad -->\n <link rel=\"apple-touch-icon\" sizes=\"144x144\" href=\"__CDN_URL__favicon_144x144px.png\">\n <link rel=\"apple-touch-icon-precomposed\" sizes=\"144x144\" href=\"__CDN_URL__favicon_144x144px.png\">\n\n <!-- Fonts -->\n <link href=\"https://fonts.googleapis.com/css2?family=Inter:slnt,wght@-10,400;-10,500;0,400;0,500;0,600;0,700&family=Open+Sans:ital,wght@0,300;0,400;0,700;1,400;1,700&display=swap\" rel=\"stylesheet\">\n\n __APPLICATION_CSS_IMPORTS__\n\n <title>Merchant Center</title>\n </head>\n <body>\n <noscript>You need to enable JavaScript to run this app.</noscript>\n\n <div id=\"app-loader\">\n <!-- Loading screen styles -->\n __LOADING_SCREEN_CSS__\n\n <div class=\"loading-screen loading-screen--hidden\">\n <svg class=\"loading-spinner\" viewBox=\"0 0 40 40\">\n <path class=\"loading-spinner-circle\" d=\"M20.201,5.169c-8.254,0-14.946,6.692-14.946,14.946c0,8.255,6.692,14.946, 14.946,14.946 s14.946-6.691,14.946-14.946C35.146,11.861,28.455,5.169,20.201,5.169z M20.201,31.749c-6.425,0-11.634-5.208-11.634-11.634c0-6.425,5.209-11.634,11.634-11.634c6.425,0,11.633,5.209,11.633,11.634C31.834,26.541,26.626,31.749,20.201,31.749z\"></path>\n <path class=\"loading-spinner-pointer\" d=\"M26.013,10.047l1.654-2.866c-2.198-1.272-4.743-2.012-7.466-2.012h0v3.312h0 C22.32,8.481,24.301,9.057,26.013,10.047z\"></path>\n </svg>\n <svg width=\"200\" height=\"29\" xmlns=\"http://www.w3.org/2000/svg\">\n <g fill=\"none\" fill-rule=\"evenodd\">\n <path d=\"M38.342 20.486c1.102 0 1.738-.073 3.133-.367l.343 2.35c-1.077.293-2.276.44-3.476.44-5.358 0-6.9-3.353-6.9-7.268.049-3.818 2.35-7.048 6.876-7.048 1.2 0 2.227.147 3.475.465l-.465 2.325c-1.321-.294-2.104-.342-2.936-.342-2.839.048-4.234 2.153-4.283 4.6 0 2.422.906 4.845 4.233 4.845M49.304 20.51c2.814-.024 3.72-2.3 3.72-4.77-.024-2.253-.98-4.798-3.744-4.798-2.692.025-3.745 2.521-3.745 4.797 0 2.569 1.126 4.771 3.769 4.771zm0-11.917c4.405.025 6.363 3.304 6.363 7.146 0 3.744-1.689 7.096-6.387 7.12-4.601-.048-6.363-3.376-6.363-7.12 0-3.842 1.982-7.097 6.387-7.146zM73.896 22.615v-8.81c0-2.226-.832-2.838-2.227-2.838-.954 0-2.031.539-3.01 1.346.05.294.073.88.073 1.052v9.25h-2.74v-8.907c0-2.227-.661-2.766-2.056-2.766-.88 0-2.104.588-3.157 1.371v10.302h-2.716V8.838h2.716v1.174c.832-.66 2.154-1.419 3.597-1.443 1.91-.024 3.01.636 3.623 1.664 1.125-1.052 2.79-1.64 4.062-1.664 4.478-.074 4.55 3.523 4.55 5.04v9.006h-2.715M95.427 22.615v-8.81c0-2.226-.831-2.838-2.226-2.838-.955 0-2.032.539-3.01 1.346.049.294.073.88.073 1.052v9.25h-2.74v-8.907c0-2.227-.662-2.766-2.057-2.766-.88 0-2.104.588-3.157 1.371v10.302h-2.716V8.838h2.716v1.174c.833-.66 2.154-1.419 3.598-1.443 1.908-.024 3.01.636 3.622 1.664 1.126-1.052 2.79-1.64 4.062-1.664 4.478-.074 4.551 3.523 4.551 5.04v9.006h-2.716M103.035 14.124h6.044c-.098-2.79-1.492-3.353-2.789-3.353-2.056-.024-3.01 1.37-3.255 3.353zm7.782 5.97l.416 2.227c-1.224.416-2.912.612-4.233.612-5.433 0-6.755-3.646-6.755-7.292s1.616-7.023 6.167-7.023c2.814 0 5.163 1.737 5.188 6.166l-.025 1.444h-8.662c.049 2.692 1.493 4.331 4.209 4.331 1.076 0 2.202-.122 3.695-.465zM121.582 11.358a7.379 7.379 0 0 0-1.762-.195c-1.689-.025-2.57.808-3.206 1.468v9.984h-2.716V8.838h2.716v1.223a4.503 4.503 0 0 1 3.182-1.395 6.356 6.356 0 0 1 2.275.368l-.489 2.324M129.533 20.486c1.102 0 1.738-.073 3.132-.367l.344 2.35c-1.077.293-2.276.44-3.476.44-5.359 0-6.9-3.353-6.9-7.268.049-3.818 2.349-7.048 6.876-7.048 1.2 0 2.227.147 3.475.465l-.465 2.325c-1.322-.294-2.105-.342-2.936-.342-2.839.048-4.234 2.153-4.284 4.6 0 2.422.907 4.845 4.234 4.845M136.898 14.124h6.045c-.098-2.79-1.493-3.353-2.79-3.353-2.056-.024-3.01 1.37-3.255 3.353zm7.782 5.97l.416 2.227c-1.224.416-2.912.612-4.234.612-5.432 0-6.754-3.646-6.754-7.292s1.616-7.023 6.167-7.023c2.815 0 5.164 1.737 5.188 6.166l-.024 1.444h-8.663c.049 2.692 1.493 4.331 4.209 4.331 1.076 0 2.202-.122 3.695-.465zM154.662 11.09h-3.744v6.68c0 1.394.171 2.374 1.59 2.569.784.074 1.591 0 2.374-.098l.171 2.35c-.807.146-1.957.17-2.422.17-3.206-.121-4.405-1.761-4.405-4.33v-7.342h-1.982V9.205l1.982-.22V5.779h2.692v3.06h3.744v2.25M162.565 20.51c2.815-.024 3.72-2.3 3.72-4.77-.024-2.253-.979-4.798-3.744-4.798-2.692.025-3.745 2.521-3.745 4.797 0 2.569 1.127 4.771 3.77 4.771zm0-11.917c4.405.025 6.363 3.304 6.363 7.146 0 3.744-1.689 7.096-6.387 7.12-4.6-.048-6.363-3.376-6.363-7.12 0-3.842 1.982-7.097 6.387-7.146zM177.197 20.51c2.814-.024 3.72-2.3 3.72-4.77-.025-2.253-.98-4.798-3.744-4.798-2.692.025-3.745 2.521-3.745 4.797 0 2.569 1.126 4.771 3.769 4.771zm0-11.917c4.405.025 6.363 3.304 6.363 7.146 0 3.744-1.69 7.096-6.387 7.12-4.601-.048-6.363-3.376-6.363-7.12 0-3.842 1.982-7.097 6.387-7.146zM185.71 22.615h2.619V3.919h-2.619zM191.094 19.948c1.542.391 2.985.587 3.89.587 1.078 0 2.179-.22 2.252-1.517.074-1.37-1.346-1.787-2.96-2.472-1.836-.758-3.818-1.786-3.77-4.331.05-1.273.808-3.769 4.87-3.646 1.224.024 2.692.22 3.915.538l-.464 2.251c-1.444-.342-2.52-.49-3.573-.513-1.175 0-2.08.367-2.129 1.468-.024.93.71 1.42 2.52 2.153 1.836.759 4.43 1.738 4.308 4.625-.074 1.835-1.273 3.842-4.968 3.793-1.175-.024-3.059-.171-4.453-.66l.562-2.276\" fill=\"#27373C\"/>\n <path d=\"M.349 22.312a.601.601 0 0 0-.002 1.091l11.663 5.46c.156.074.325.112.493.113V16.787c-.173 0-.346.037-.508.112L.35 22.312\" fill=\"#E3712C\"/>\n <path d=\"M12.503 16.787v12.19c.18.003.361-.035.528-.113l11.63-5.444a.6.6 0 0 0-.002-1.09L13.011 16.9a1.2 1.2 0 0 0-.508-.113\" fill=\"#EBA13B\"/>\n <path d=\"M0 6.363a.596.596 0 0 0 .347.546l11.663 5.46a1.194 1.194 0 0 0 .93.039l.327-.152c1.203-.56.406-.187 11.394-5.33a.6.6 0 0 0-.002-1.091L13.011.405a1.205 1.205 0 0 0-1.016 0L.35 5.818A.603.603 0 0 0 0 6.363\" fill=\"#23A486\"/>\n <path d=\"M12.503 13.168v3.62c-.173 0-.346.036-.508.111L.35 22.312a.601.601 0 0 0-.348.545L0 6.77v-.407c0 .234.134.447.346.546l11.664 5.46a1.194 1.194 0 0 0 .93.039l-.02.009c-.362.167-.417.334-.417.75\" fill=\"#CCCCC7\"/>\n </g>\n </svg>\n <p class=\"long-loading-notice long-loading-notice--hidden\">Sorry, this is taking an unusually long time.</p>\n </div>\n </div>\n <div id=\"app\"></div>\n\n <!-- Loading screen handling -->\n __LOADING_SCREEN_JS__\n\n <!-- Application globals -->\n <script>window.app = __APPLICATION_ENVIRONMENT__;</script>\n\n <!-- Main application chunks -->\n __APPLICATION_SCRIPT_IMPORTS__\n </body>\n</html>\n"
6
6
  };
7
-
8
7
  function generateTemplate(_ref) {
9
8
  let _ref$cssImports = _ref.cssImports,
10
- cssImports = _ref$cssImports === void 0 ? [] : _ref$cssImports,
11
- _ref$scriptImports = _ref.scriptImports,
12
- scriptImports = _ref$scriptImports === void 0 ? [] : _ref$scriptImports;
9
+ cssImports = _ref$cssImports === void 0 ? [] : _ref$cssImports,
10
+ _ref$scriptImports = _ref.scriptImports,
11
+ scriptImports = _ref$scriptImports === void 0 ? [] : _ref$scriptImports;
13
12
  return htmlDocs.application.replace(new RegExp('__APPLICATION_CSS_IMPORTS__', 'g'), cssImports.join('\n')).replace(new RegExp('__APPLICATION_SCRIPT_IMPORTS__', 'g'), scriptImports.join('\n'));
14
13
  }
15
14
 
@@ -2,12 +2,11 @@
2
2
  const htmlDocs = {
3
3
  "application": "<!DOCTYPE html>\n<html lang=\"en\">\n <head>\n <meta charset=\"utf-8\">\n <meta name=\"viewport\" content=\"width=device-width, initial-scale=1, maximum-scale=1\">\n <meta name=\"referrer\" content=\"no-referrer\">\n\n <meta http-equiv=\"Content-Security-Policy\" content=\"__CSP__\">\n\n <!-- Preconnects -->\n <link rel=\"preconnect\" href=\"__CDN_URL__\">\n <link rel=\"preconnect\" href=\"__MC_API_URL__\">\n <link rel=\"preconnect\" href=\"https://fonts.googleapis.com\">\n <link rel=\"preconnect\" href=\"https://fonts.gstatic.com\" crossorigin>\n <link rel=\"preconnect\" href=\"https://app.launchdarkly.com\">\n <link rel=\"preconnect\" href=\"https://clientstream.launchdarkly.com\">\n <link rel=\"preconnect\" href=\"https://events.launchdarkly.com\">\n\n <!-- Fav and touch icons -->\n <link rel=\"shortcut icon\" type=\"image/png\" href=\"__CDN_URL__favicon.png\">\n <!-- Standard iPhone -->\n <link rel=\"apple-touch-icon\" sizes=\"57x57\" href=\"__CDN_URL__favicon_57x57px.png\">\n <link rel=\"apple-touch-icon-precomposed\" sizes=\"57x57\" href=\"__CDN_URL__favicon_57x57px.png\">\n <!-- Standard iPad -->\n <link rel=\"apple-touch-icon\" sizes=\"72x72\" href=\"__CDN_URL__favicon_72x72px.png\">\n <link rel=\"apple-touch-icon-precomposed\" sizes=\"72x72\" href=\"__CDN_URL__favicon_72x72px.png\">\n <!-- Retina iPad -->\n <link rel=\"apple-touch-icon\" sizes=\"144x144\" href=\"__CDN_URL__favicon_144x144px.png\">\n <link rel=\"apple-touch-icon-precomposed\" sizes=\"144x144\" href=\"__CDN_URL__favicon_144x144px.png\">\n\n <!-- Fonts -->\n <link href=\"https://fonts.googleapis.com/css2?family=Inter:slnt,wght@-10,400;-10,500;0,400;0,500;0,600;0,700&family=Open+Sans:ital,wght@0,300;0,400;0,700;1,400;1,700&display=swap\" rel=\"stylesheet\">\n\n __APPLICATION_CSS_IMPORTS__\n\n <title>Merchant Center</title>\n </head>\n <body>\n <noscript>You need to enable JavaScript to run this app.</noscript>\n\n <div id=\"app-loader\">\n <!-- Loading screen styles -->\n __LOADING_SCREEN_CSS__\n\n <div class=\"loading-screen loading-screen--hidden\">\n <svg class=\"loading-spinner\" viewBox=\"0 0 40 40\">\n <path class=\"loading-spinner-circle\" d=\"M20.201,5.169c-8.254,0-14.946,6.692-14.946,14.946c0,8.255,6.692,14.946, 14.946,14.946 s14.946-6.691,14.946-14.946C35.146,11.861,28.455,5.169,20.201,5.169z M20.201,31.749c-6.425,0-11.634-5.208-11.634-11.634c0-6.425,5.209-11.634,11.634-11.634c6.425,0,11.633,5.209,11.633,11.634C31.834,26.541,26.626,31.749,20.201,31.749z\"></path>\n <path class=\"loading-spinner-pointer\" d=\"M26.013,10.047l1.654-2.866c-2.198-1.272-4.743-2.012-7.466-2.012h0v3.312h0 C22.32,8.481,24.301,9.057,26.013,10.047z\"></path>\n </svg>\n <svg width=\"200\" height=\"29\" xmlns=\"http://www.w3.org/2000/svg\">\n <g fill=\"none\" fill-rule=\"evenodd\">\n <path d=\"M38.342 20.486c1.102 0 1.738-.073 3.133-.367l.343 2.35c-1.077.293-2.276.44-3.476.44-5.358 0-6.9-3.353-6.9-7.268.049-3.818 2.35-7.048 6.876-7.048 1.2 0 2.227.147 3.475.465l-.465 2.325c-1.321-.294-2.104-.342-2.936-.342-2.839.048-4.234 2.153-4.283 4.6 0 2.422.906 4.845 4.233 4.845M49.304 20.51c2.814-.024 3.72-2.3 3.72-4.77-.024-2.253-.98-4.798-3.744-4.798-2.692.025-3.745 2.521-3.745 4.797 0 2.569 1.126 4.771 3.769 4.771zm0-11.917c4.405.025 6.363 3.304 6.363 7.146 0 3.744-1.689 7.096-6.387 7.12-4.601-.048-6.363-3.376-6.363-7.12 0-3.842 1.982-7.097 6.387-7.146zM73.896 22.615v-8.81c0-2.226-.832-2.838-2.227-2.838-.954 0-2.031.539-3.01 1.346.05.294.073.88.073 1.052v9.25h-2.74v-8.907c0-2.227-.661-2.766-2.056-2.766-.88 0-2.104.588-3.157 1.371v10.302h-2.716V8.838h2.716v1.174c.832-.66 2.154-1.419 3.597-1.443 1.91-.024 3.01.636 3.623 1.664 1.125-1.052 2.79-1.64 4.062-1.664 4.478-.074 4.55 3.523 4.55 5.04v9.006h-2.715M95.427 22.615v-8.81c0-2.226-.831-2.838-2.226-2.838-.955 0-2.032.539-3.01 1.346.049.294.073.88.073 1.052v9.25h-2.74v-8.907c0-2.227-.662-2.766-2.057-2.766-.88 0-2.104.588-3.157 1.371v10.302h-2.716V8.838h2.716v1.174c.833-.66 2.154-1.419 3.598-1.443 1.908-.024 3.01.636 3.622 1.664 1.126-1.052 2.79-1.64 4.062-1.664 4.478-.074 4.551 3.523 4.551 5.04v9.006h-2.716M103.035 14.124h6.044c-.098-2.79-1.492-3.353-2.789-3.353-2.056-.024-3.01 1.37-3.255 3.353zm7.782 5.97l.416 2.227c-1.224.416-2.912.612-4.233.612-5.433 0-6.755-3.646-6.755-7.292s1.616-7.023 6.167-7.023c2.814 0 5.163 1.737 5.188 6.166l-.025 1.444h-8.662c.049 2.692 1.493 4.331 4.209 4.331 1.076 0 2.202-.122 3.695-.465zM121.582 11.358a7.379 7.379 0 0 0-1.762-.195c-1.689-.025-2.57.808-3.206 1.468v9.984h-2.716V8.838h2.716v1.223a4.503 4.503 0 0 1 3.182-1.395 6.356 6.356 0 0 1 2.275.368l-.489 2.324M129.533 20.486c1.102 0 1.738-.073 3.132-.367l.344 2.35c-1.077.293-2.276.44-3.476.44-5.359 0-6.9-3.353-6.9-7.268.049-3.818 2.349-7.048 6.876-7.048 1.2 0 2.227.147 3.475.465l-.465 2.325c-1.322-.294-2.105-.342-2.936-.342-2.839.048-4.234 2.153-4.284 4.6 0 2.422.907 4.845 4.234 4.845M136.898 14.124h6.045c-.098-2.79-1.493-3.353-2.79-3.353-2.056-.024-3.01 1.37-3.255 3.353zm7.782 5.97l.416 2.227c-1.224.416-2.912.612-4.234.612-5.432 0-6.754-3.646-6.754-7.292s1.616-7.023 6.167-7.023c2.815 0 5.164 1.737 5.188 6.166l-.024 1.444h-8.663c.049 2.692 1.493 4.331 4.209 4.331 1.076 0 2.202-.122 3.695-.465zM154.662 11.09h-3.744v6.68c0 1.394.171 2.374 1.59 2.569.784.074 1.591 0 2.374-.098l.171 2.35c-.807.146-1.957.17-2.422.17-3.206-.121-4.405-1.761-4.405-4.33v-7.342h-1.982V9.205l1.982-.22V5.779h2.692v3.06h3.744v2.25M162.565 20.51c2.815-.024 3.72-2.3 3.72-4.77-.024-2.253-.979-4.798-3.744-4.798-2.692.025-3.745 2.521-3.745 4.797 0 2.569 1.127 4.771 3.77 4.771zm0-11.917c4.405.025 6.363 3.304 6.363 7.146 0 3.744-1.689 7.096-6.387 7.12-4.6-.048-6.363-3.376-6.363-7.12 0-3.842 1.982-7.097 6.387-7.146zM177.197 20.51c2.814-.024 3.72-2.3 3.72-4.77-.025-2.253-.98-4.798-3.744-4.798-2.692.025-3.745 2.521-3.745 4.797 0 2.569 1.126 4.771 3.769 4.771zm0-11.917c4.405.025 6.363 3.304 6.363 7.146 0 3.744-1.69 7.096-6.387 7.12-4.601-.048-6.363-3.376-6.363-7.12 0-3.842 1.982-7.097 6.387-7.146zM185.71 22.615h2.619V3.919h-2.619zM191.094 19.948c1.542.391 2.985.587 3.89.587 1.078 0 2.179-.22 2.252-1.517.074-1.37-1.346-1.787-2.96-2.472-1.836-.758-3.818-1.786-3.77-4.331.05-1.273.808-3.769 4.87-3.646 1.224.024 2.692.22 3.915.538l-.464 2.251c-1.444-.342-2.52-.49-3.573-.513-1.175 0-2.08.367-2.129 1.468-.024.93.71 1.42 2.52 2.153 1.836.759 4.43 1.738 4.308 4.625-.074 1.835-1.273 3.842-4.968 3.793-1.175-.024-3.059-.171-4.453-.66l.562-2.276\" fill=\"#27373C\"/>\n <path d=\"M.349 22.312a.601.601 0 0 0-.002 1.091l11.663 5.46c.156.074.325.112.493.113V16.787c-.173 0-.346.037-.508.112L.35 22.312\" fill=\"#E3712C\"/>\n <path d=\"M12.503 16.787v12.19c.18.003.361-.035.528-.113l11.63-5.444a.6.6 0 0 0-.002-1.09L13.011 16.9a1.2 1.2 0 0 0-.508-.113\" fill=\"#EBA13B\"/>\n <path d=\"M0 6.363a.596.596 0 0 0 .347.546l11.663 5.46a1.194 1.194 0 0 0 .93.039l.327-.152c1.203-.56.406-.187 11.394-5.33a.6.6 0 0 0-.002-1.091L13.011.405a1.205 1.205 0 0 0-1.016 0L.35 5.818A.603.603 0 0 0 0 6.363\" fill=\"#23A486\"/>\n <path d=\"M12.503 13.168v3.62c-.173 0-.346.036-.508.111L.35 22.312a.601.601 0 0 0-.348.545L0 6.77v-.407c0 .234.134.447.346.546l11.664 5.46a1.194 1.194 0 0 0 .93.039l-.02.009c-.362.167-.417.334-.417.75\" fill=\"#CCCCC7\"/>\n </g>\n </svg>\n <p class=\"long-loading-notice long-loading-notice--hidden\">Sorry, this is taking an unusually long time.</p>\n </div>\n </div>\n <div id=\"app\"></div>\n\n <!-- Loading screen handling -->\n __LOADING_SCREEN_JS__\n\n <!-- Application globals -->\n <script>window.app = __APPLICATION_ENVIRONMENT__;</script>\n\n <!-- Main application chunks -->\n __APPLICATION_SCRIPT_IMPORTS__\n </body>\n</html>\n"
4
4
  };
5
-
6
5
  function generateTemplate(_ref) {
7
6
  let _ref$cssImports = _ref.cssImports,
8
- cssImports = _ref$cssImports === void 0 ? [] : _ref$cssImports,
9
- _ref$scriptImports = _ref.scriptImports,
10
- scriptImports = _ref$scriptImports === void 0 ? [] : _ref$scriptImports;
7
+ cssImports = _ref$cssImports === void 0 ? [] : _ref$cssImports,
8
+ _ref$scriptImports = _ref.scriptImports,
9
+ scriptImports = _ref$scriptImports === void 0 ? [] : _ref$scriptImports;
11
10
  return htmlDocs.application.replace(new RegExp('__APPLICATION_CSS_IMPORTS__', 'g'), cssImports.join('\n')).replace(new RegExp('__APPLICATION_SCRIPT_IMPORTS__', 'g'), scriptImports.join('\n'));
12
11
  }
13
12
 
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@commercetools-frontend/mc-html-template",
3
- "version": "22.2.0",
3
+ "version": "22.3.0",
4
4
  "description": "Everything related to render the index.html for a MC application",
5
5
  "bugs": "https://github.com/commercetools/merchant-center-application-kit/issues",
6
6
  "repository": {
@@ -9,7 +9,12 @@
9
9
  "directory": "packages/mc-html-template"
10
10
  },
11
11
  "homepage": "https://docs.commercetools.com/custom-applications",
12
- "keywords": ["javascript", "frontend", "react", "toolkit"],
12
+ "keywords": [
13
+ "javascript",
14
+ "frontend",
15
+ "react",
16
+ "toolkit"
17
+ ],
13
18
  "license": "MIT",
14
19
  "publishConfig": {
15
20
  "access": "public"
@@ -17,7 +22,10 @@
17
22
  "main": "dist/commercetools-frontend-mc-html-template.cjs.js",
18
23
  "module": "dist/commercetools-frontend-mc-html-template.esm.js",
19
24
  "preconstruct": {
20
- "entrypoints": ["./index.ts", "./webpack-html-template.ts"]
25
+ "entrypoints": [
26
+ "./index.ts",
27
+ "./webpack-html-template.ts"
28
+ ]
21
29
  },
22
30
  "files": [
23
31
  "dist",
@@ -30,8 +38,8 @@
30
38
  "dependencies": {
31
39
  "@babel/runtime": "^7.20.13",
32
40
  "@babel/runtime-corejs3": "^7.20.13",
33
- "@commercetools-frontend/application-config": "22.2.0",
34
- "@commercetools-frontend/constants": "22.2.0",
41
+ "@commercetools-frontend/application-config": "22.3.0",
42
+ "@commercetools-frontend/constants": "22.3.0",
35
43
  "serialize-javascript": "6.0.1",
36
44
  "uglify-js": "3.17.4",
37
45
  "uglifycss": "0.0.29"
@@ -39,9 +47,10 @@
39
47
  "devDependencies": {
40
48
  "@tsconfig/node16": "^1.0.3",
41
49
  "@types/serialize-javascript": "^5.0.2",
42
- "html-webpack-plugin": "5.5.1"
50
+ "html-webpack-plugin": "5.5.1",
51
+ "webpack": "5.82.1"
43
52
  },
44
53
  "engines": {
45
54
  "node": "16.x || >=18.0.0"
46
55
  }
47
- }
56
+ }
@@ -6,7 +6,7 @@ var _forEachInstanceProperty = require('@babel/runtime-corejs3/core-js-stable/in
6
6
  var _indexOfInstanceProperty = require('@babel/runtime-corejs3/core-js-stable/instance/index-of');
7
7
  var _mapInstanceProperty = require('@babel/runtime-corejs3/core-js-stable/instance/map');
8
8
  var _concatInstanceProperty = require('@babel/runtime-corejs3/core-js-stable/instance/concat');
9
- var generateTemplate = require('../../dist/generate-template-6b67f23b.cjs.dev.js');
9
+ var generateTemplate = require('../../dist/generate-template-357c85bd.cjs.dev.js');
10
10
 
11
11
  function _interopDefault (e) { return e && e.__esModule ? e : { 'default': e }; }
12
12
 
@@ -17,10 +17,8 @@ var _concatInstanceProperty__default = /*#__PURE__*/_interopDefault(_concatInsta
17
17
 
18
18
  function webpackHtmlTemplate(templateParams) {
19
19
  var _context, _context2, _context3;
20
-
21
20
  const cssVendorChunks = [];
22
21
  const cssAppChunks = [];
23
-
24
22
  _forEachInstanceProperty__default["default"](_context = templateParams.htmlWebpackPlugin.files.css).call(_context, file => {
25
23
  if (_indexOfInstanceProperty__default["default"](file).call(file, 'vendor') === -1) {
26
24
  cssAppChunks.push(file);
@@ -28,17 +26,13 @@ function webpackHtmlTemplate(templateParams) {
28
26
  cssVendorChunks.push(file);
29
27
  }
30
28
  });
31
-
32
29
  const cssChunks = _mapInstanceProperty__default["default"](_context2 = _concatInstanceProperty__default["default"](cssVendorChunks).call(cssVendorChunks, cssAppChunks)).call(_context2, fileName => fileName.replace(/^\//, ''));
33
-
34
- const scriptChunks = _mapInstanceProperty__default["default"](_context3 = templateParams.htmlWebpackPlugin.files.js).call(_context3, fileName => // Trim leading slash, the CDN_URL will ensure to have a trailing slash
30
+ const scriptChunks = _mapInstanceProperty__default["default"](_context3 = templateParams.htmlWebpackPlugin.files.js).call(_context3, fileName =>
31
+ // Trim leading slash, the CDN_URL will ensure to have a trailing slash
35
32
  // (see `replaceHtmlPlaceholders`)
36
33
  fileName.replace(/^\//, ''));
37
-
38
34
  const cssImports = _mapInstanceProperty__default["default"](cssChunks).call(cssChunks, chunkPath => "<link href=\"__CDN_URL__".concat(chunkPath, "\" rel='stylesheet' type='text/css'>"));
39
-
40
35
  const scriptImports = _mapInstanceProperty__default["default"](scriptChunks).call(scriptChunks, chunkPath => "<script src=\"__CDN_URL__".concat(chunkPath, "\"></script>"));
41
-
42
36
  return generateTemplate.generateTemplate({
43
37
  cssImports,
44
38
  scriptImports
@@ -6,7 +6,7 @@ var _forEachInstanceProperty = require('@babel/runtime-corejs3/core-js-stable/in
6
6
  var _indexOfInstanceProperty = require('@babel/runtime-corejs3/core-js-stable/instance/index-of');
7
7
  var _mapInstanceProperty = require('@babel/runtime-corejs3/core-js-stable/instance/map');
8
8
  var _concatInstanceProperty = require('@babel/runtime-corejs3/core-js-stable/instance/concat');
9
- var generateTemplate = require('../../dist/generate-template-22322523.cjs.prod.js');
9
+ var generateTemplate = require('../../dist/generate-template-44ae1d39.cjs.prod.js');
10
10
 
11
11
  function _interopDefault (e) { return e && e.__esModule ? e : { 'default': e }; }
12
12
 
@@ -17,10 +17,8 @@ var _concatInstanceProperty__default = /*#__PURE__*/_interopDefault(_concatInsta
17
17
 
18
18
  function webpackHtmlTemplate(templateParams) {
19
19
  var _context, _context2, _context3;
20
-
21
20
  const cssVendorChunks = [];
22
21
  const cssAppChunks = [];
23
-
24
22
  _forEachInstanceProperty__default["default"](_context = templateParams.htmlWebpackPlugin.files.css).call(_context, file => {
25
23
  if (_indexOfInstanceProperty__default["default"](file).call(file, 'vendor') === -1) {
26
24
  cssAppChunks.push(file);
@@ -28,17 +26,13 @@ function webpackHtmlTemplate(templateParams) {
28
26
  cssVendorChunks.push(file);
29
27
  }
30
28
  });
31
-
32
29
  const cssChunks = _mapInstanceProperty__default["default"](_context2 = _concatInstanceProperty__default["default"](cssVendorChunks).call(cssVendorChunks, cssAppChunks)).call(_context2, fileName => fileName.replace(/^\//, ''));
33
-
34
- const scriptChunks = _mapInstanceProperty__default["default"](_context3 = templateParams.htmlWebpackPlugin.files.js).call(_context3, fileName => // Trim leading slash, the CDN_URL will ensure to have a trailing slash
30
+ const scriptChunks = _mapInstanceProperty__default["default"](_context3 = templateParams.htmlWebpackPlugin.files.js).call(_context3, fileName =>
31
+ // Trim leading slash, the CDN_URL will ensure to have a trailing slash
35
32
  // (see `replaceHtmlPlaceholders`)
36
33
  fileName.replace(/^\//, ''));
37
-
38
34
  const cssImports = _mapInstanceProperty__default["default"](cssChunks).call(cssChunks, chunkPath => "<link href=\"__CDN_URL__".concat(chunkPath, "\" rel='stylesheet' type='text/css'>"));
39
-
40
35
  const scriptImports = _mapInstanceProperty__default["default"](scriptChunks).call(scriptChunks, chunkPath => "<script src=\"__CDN_URL__".concat(chunkPath, "\"></script>"));
41
-
42
36
  return generateTemplate.generateTemplate({
43
37
  cssImports,
44
38
  scriptImports
@@ -2,14 +2,12 @@ import _forEachInstanceProperty from '@babel/runtime-corejs3/core-js-stable/inst
2
2
  import _indexOfInstanceProperty from '@babel/runtime-corejs3/core-js-stable/instance/index-of';
3
3
  import _mapInstanceProperty from '@babel/runtime-corejs3/core-js-stable/instance/map';
4
4
  import _concatInstanceProperty from '@babel/runtime-corejs3/core-js-stable/instance/concat';
5
- import { g as generateTemplate } from '../../dist/generate-template-92ffe4b4.esm.js';
5
+ import { g as generateTemplate } from '../../dist/generate-template-bd0af6d9.esm.js';
6
6
 
7
7
  function webpackHtmlTemplate(templateParams) {
8
8
  var _context, _context2, _context3;
9
-
10
9
  const cssVendorChunks = [];
11
10
  const cssAppChunks = [];
12
-
13
11
  _forEachInstanceProperty(_context = templateParams.htmlWebpackPlugin.files.css).call(_context, file => {
14
12
  if (_indexOfInstanceProperty(file).call(file, 'vendor') === -1) {
15
13
  cssAppChunks.push(file);
@@ -17,17 +15,13 @@ function webpackHtmlTemplate(templateParams) {
17
15
  cssVendorChunks.push(file);
18
16
  }
19
17
  });
20
-
21
18
  const cssChunks = _mapInstanceProperty(_context2 = _concatInstanceProperty(cssVendorChunks).call(cssVendorChunks, cssAppChunks)).call(_context2, fileName => fileName.replace(/^\//, ''));
22
-
23
- const scriptChunks = _mapInstanceProperty(_context3 = templateParams.htmlWebpackPlugin.files.js).call(_context3, fileName => // Trim leading slash, the CDN_URL will ensure to have a trailing slash
19
+ const scriptChunks = _mapInstanceProperty(_context3 = templateParams.htmlWebpackPlugin.files.js).call(_context3, fileName =>
20
+ // Trim leading slash, the CDN_URL will ensure to have a trailing slash
24
21
  // (see `replaceHtmlPlaceholders`)
25
22
  fileName.replace(/^\//, ''));
26
-
27
23
  const cssImports = _mapInstanceProperty(cssChunks).call(cssChunks, chunkPath => "<link href=\"__CDN_URL__".concat(chunkPath, "\" rel='stylesheet' type='text/css'>"));
28
-
29
24
  const scriptImports = _mapInstanceProperty(scriptChunks).call(scriptChunks, chunkPath => "<script src=\"__CDN_URL__".concat(chunkPath, "\"></script>"));
30
-
31
25
  return generateTemplate({
32
26
  cssImports,
33
27
  scriptImports