@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.
- package/dist/commercetools-frontend-mc-html-template.cjs.dev.js +24 -33
- package/dist/commercetools-frontend-mc-html-template.cjs.prod.js +24 -33
- package/dist/commercetools-frontend-mc-html-template.esm.js +24 -33
- package/dist/{generate-template-22322523.cjs.prod.js → generate-template-357c85bd.cjs.dev.js} +3 -4
- package/dist/{generate-template-6b67f23b.cjs.dev.js → generate-template-44ae1d39.cjs.prod.js} +3 -4
- package/dist/{generate-template-92ffe4b4.esm.js → generate-template-bd0af6d9.esm.js} +3 -4
- package/package.json +16 -7
- package/webpack-html-template/dist/commercetools-frontend-mc-html-template-webpack-html-template.cjs.dev.js +3 -9
- package/webpack-html-template/dist/commercetools-frontend-mc-html-template-webpack-html-template.cjs.prod.js +3 -9
- package/webpack-html-template/dist/commercetools-frontend-mc-html-template-webpack-html-template.esm.js +3 -9
|
@@ -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-
|
|
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
|
-
|
|
98
|
-
|
|
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
|
-
|
|
113
|
-
|
|
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
|
-
|
|
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
|
-
|
|
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 ?
|
|
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',
|
|
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,
|
|
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'"]
|
|
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
|
-
}
|
|
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
|
-
);
|
|
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-
|
|
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
|
-
|
|
98
|
-
|
|
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
|
-
|
|
113
|
-
|
|
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
|
-
|
|
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
|
-
|
|
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 ?
|
|
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',
|
|
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,
|
|
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'"]
|
|
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
|
-
}
|
|
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
|
-
);
|
|
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-
|
|
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
|
-
|
|
74
|
-
|
|
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
|
-
|
|
89
|
-
|
|
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
|
-
|
|
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
|
-
|
|
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 ?
|
|
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',
|
|
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,
|
|
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'"]
|
|
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
|
-
}
|
|
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
|
-
);
|
|
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
|
};
|
package/dist/{generate-template-22322523.cjs.prod.js → generate-template-357c85bd.cjs.dev.js}
RENAMED
|
@@ -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
|
-
|
|
11
|
-
|
|
12
|
-
|
|
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
|
|
package/dist/{generate-template-6b67f23b.cjs.dev.js → generate-template-44ae1d39.cjs.prod.js}
RENAMED
|
@@ -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
|
-
|
|
11
|
-
|
|
12
|
-
|
|
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
|
-
|
|
9
|
-
|
|
10
|
-
|
|
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.
|
|
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": [
|
|
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": [
|
|
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.
|
|
34
|
-
"@commercetools-frontend/constants": "22.
|
|
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-
|
|
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
|
-
|
|
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-
|
|
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
|
-
|
|
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-
|
|
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
|
-
|
|
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
|