@commercetools-frontend/mc-html-template 21.23.9 → 21.24.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 +62 -95
- package/dist/commercetools-frontend-mc-html-template.cjs.prod.js +62 -95
- package/dist/commercetools-frontend-mc-html-template.esm.js +61 -93
- package/dist/{generate-template-a47e70b1.cjs.prod.js → generate-template-11aec1ac.cjs.prod.js} +2 -2
- package/dist/{generate-template-3cbf5e40.esm.js → generate-template-3fe062f9.esm.js} +2 -2
- package/dist/{generate-template-ffe36451.cjs.dev.js → generate-template-f3bd2e44.cjs.dev.js} +2 -2
- package/package.json +3 -3
- package/webpack-html-template/dist/commercetools-frontend-mc-html-template-webpack-html-template.cjs.dev.js +12 -21
- package/webpack-html-template/dist/commercetools-frontend-mc-html-template-webpack-html-template.cjs.prod.js +12 -21
- package/webpack-html-template/dist/commercetools-frontend-mc-html-template-webpack-html-template.esm.js +12 -21
|
@@ -2,20 +2,17 @@
|
|
|
2
2
|
|
|
3
3
|
Object.defineProperty(exports, '__esModule', { value: true });
|
|
4
4
|
|
|
5
|
-
var _asyncToGenerator = require('@babel/runtime-corejs3/helpers/asyncToGenerator');
|
|
6
|
-
var _regeneratorRuntime = require('@babel/runtime-corejs3/regenerator');
|
|
7
5
|
var fs = require('fs');
|
|
8
6
|
var applicationConfig = require('@commercetools-frontend/application-config');
|
|
9
|
-
var _slicedToArray = require('@babel/runtime-corejs3/helpers/slicedToArray');
|
|
10
7
|
var _defineProperty = require('@babel/runtime-corejs3/helpers/defineProperty');
|
|
11
|
-
var
|
|
8
|
+
var _slicedToArray = require('@babel/runtime-corejs3/helpers/slicedToArray');
|
|
12
9
|
var _Array$isArray = require('@babel/runtime-corejs3/core-js-stable/array/is-array');
|
|
13
10
|
var _reduceInstanceProperty = require('@babel/runtime-corejs3/core-js-stable/instance/reduce');
|
|
14
11
|
var _Object$assign = require('@babel/runtime-corejs3/core-js-stable/object/assign');
|
|
15
12
|
var _Object$keys = require('@babel/runtime-corejs3/core-js-stable/object/keys');
|
|
16
|
-
var _concatInstanceProperty = require('@babel/runtime-corejs3/core-js-stable/instance/concat');
|
|
17
13
|
var _mapInstanceProperty = require('@babel/runtime-corejs3/core-js-stable/instance/map');
|
|
18
14
|
var _Object$entries = require('@babel/runtime-corejs3/core-js-stable/object/entries');
|
|
15
|
+
var _concatInstanceProperty = require('@babel/runtime-corejs3/core-js-stable/instance/concat');
|
|
19
16
|
var _Object$getOwnPropertySymbols = require('@babel/runtime-corejs3/core-js-stable/object/get-own-property-symbols');
|
|
20
17
|
var _filterInstanceProperty = require('@babel/runtime-corejs3/core-js-stable/instance/filter');
|
|
21
18
|
var _Object$getOwnPropertyDescriptor = require('@babel/runtime-corejs3/core-js-stable/object/get-own-property-descriptor');
|
|
@@ -26,19 +23,18 @@ var _Object$defineProperty = require('@babel/runtime-corejs3/core-js-stable/obje
|
|
|
26
23
|
var constants = require('@commercetools-frontend/constants');
|
|
27
24
|
var crypto = require('crypto');
|
|
28
25
|
var serialize = require('serialize-javascript');
|
|
29
|
-
var generateTemplate = require('./generate-template-
|
|
26
|
+
var generateTemplate = require('./generate-template-f3bd2e44.cjs.dev.js');
|
|
30
27
|
|
|
31
28
|
function _interopDefault (e) { return e && e.__esModule ? e : { 'default': e }; }
|
|
32
29
|
|
|
33
|
-
var _regeneratorRuntime__default = /*#__PURE__*/_interopDefault(_regeneratorRuntime);
|
|
34
30
|
var fs__default = /*#__PURE__*/_interopDefault(fs);
|
|
35
31
|
var _Array$isArray__default = /*#__PURE__*/_interopDefault(_Array$isArray);
|
|
36
32
|
var _reduceInstanceProperty__default = /*#__PURE__*/_interopDefault(_reduceInstanceProperty);
|
|
37
33
|
var _Object$assign__default = /*#__PURE__*/_interopDefault(_Object$assign);
|
|
38
34
|
var _Object$keys__default = /*#__PURE__*/_interopDefault(_Object$keys);
|
|
39
|
-
var _concatInstanceProperty__default = /*#__PURE__*/_interopDefault(_concatInstanceProperty);
|
|
40
35
|
var _mapInstanceProperty__default = /*#__PURE__*/_interopDefault(_mapInstanceProperty);
|
|
41
36
|
var _Object$entries__default = /*#__PURE__*/_interopDefault(_Object$entries);
|
|
37
|
+
var _concatInstanceProperty__default = /*#__PURE__*/_interopDefault(_concatInstanceProperty);
|
|
42
38
|
var _Object$getOwnPropertySymbols__default = /*#__PURE__*/_interopDefault(_Object$getOwnPropertySymbols);
|
|
43
39
|
var _filterInstanceProperty__default = /*#__PURE__*/_interopDefault(_filterInstanceProperty);
|
|
44
40
|
var _Object$getOwnPropertyDescriptor__default = /*#__PURE__*/_interopDefault(_Object$getOwnPropertyDescriptor);
|
|
@@ -50,7 +46,7 @@ var crypto__default = /*#__PURE__*/_interopDefault(crypto);
|
|
|
50
46
|
var serialize__default = /*#__PURE__*/_interopDefault(serialize);
|
|
51
47
|
|
|
52
48
|
function createAssetHash(content) {
|
|
53
|
-
|
|
49
|
+
const sha256Hash = crypto__default["default"].createHash('sha256').update(content).digest('base64');
|
|
54
50
|
/**
|
|
55
51
|
* NOTE:
|
|
56
52
|
* We prefix the hash function type as the browser
|
|
@@ -62,79 +58,72 @@ function createAssetHash(content) {
|
|
|
62
58
|
return "sha256-".concat(sha256Hash);
|
|
63
59
|
}
|
|
64
60
|
|
|
65
|
-
|
|
66
|
-
|
|
67
|
-
|
|
68
|
-
});
|
|
69
|
-
};
|
|
61
|
+
const sanitizeAppEnvironment = env => serialize__default["default"](env, {
|
|
62
|
+
isJSON: true
|
|
63
|
+
});
|
|
70
64
|
|
|
71
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; }
|
|
72
66
|
|
|
73
|
-
function _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var
|
|
74
|
-
|
|
75
|
-
var htmlScripts$1 = {
|
|
67
|
+
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
|
+
const htmlScripts$1 = {
|
|
76
69
|
"dataLayer": "window.dataLayer=[{\"gtm.start\":(new Date).getTime(),event:\"gtm.js\"}];",
|
|
77
70
|
"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);",
|
|
78
71
|
"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)};"
|
|
79
72
|
};
|
|
80
73
|
|
|
81
|
-
|
|
82
|
-
return _Array$isArray__default["default"](value) ? value : [value];
|
|
83
|
-
};
|
|
74
|
+
const toArray = value => _Array$isArray__default["default"](value) ? value : [value];
|
|
84
75
|
|
|
85
|
-
|
|
76
|
+
const mergeCspDirectives = function () {
|
|
86
77
|
for (var _len = arguments.length, directives = new Array(_len), _key = 0; _key < _len; _key++) {
|
|
87
78
|
directives[_key] = arguments[_key];
|
|
88
79
|
}
|
|
89
80
|
|
|
90
|
-
return _reduceInstanceProperty__default["default"](directives).call(directives,
|
|
81
|
+
return _reduceInstanceProperty__default["default"](directives).call(directives, (mergedCsp, csp) => {
|
|
91
82
|
var _context;
|
|
92
83
|
|
|
93
|
-
return _Object$assign__default["default"](mergedCsp, _reduceInstanceProperty__default["default"](_context = _Object$keys__default["default"](csp)).call(_context,
|
|
94
|
-
|
|
95
|
-
|
|
96
|
-
return _Object$assign__default["default"](acc, _defineProperty({}, directiveKey, _concatInstanceProperty__default["default"](_context2 = []).call(_context2, _toConsumableArray(toArray(mergedCsp[directiveKey] ? mergedCsp[directiveKey] : [])), _toConsumableArray(toArray(csp[directiveKey])))));
|
|
97
|
-
}, {}));
|
|
84
|
+
return _Object$assign__default["default"](mergedCsp, _reduceInstanceProperty__default["default"](_context = _Object$keys__default["default"](csp)).call(_context, (acc, directiveKey) => _Object$assign__default["default"](acc, {
|
|
85
|
+
[directiveKey]: [...toArray(mergedCsp[directiveKey] ? mergedCsp[directiveKey] : []), ...toArray(csp[directiveKey])]
|
|
86
|
+
}), {}));
|
|
98
87
|
}, {});
|
|
99
88
|
};
|
|
100
89
|
|
|
101
|
-
|
|
102
|
-
var
|
|
90
|
+
const toHeaderString = function () {
|
|
91
|
+
var _context2;
|
|
103
92
|
|
|
104
|
-
|
|
105
|
-
return _mapInstanceProperty__default["default"](
|
|
106
|
-
var
|
|
93
|
+
let directives = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};
|
|
94
|
+
return _mapInstanceProperty__default["default"](_context2 = _Object$entries__default["default"](directives)).call(_context2, _ref => {
|
|
95
|
+
var _context3;
|
|
107
96
|
|
|
108
|
-
|
|
97
|
+
let _ref2 = _slicedToArray(_ref, 2),
|
|
109
98
|
directive = _ref2[0],
|
|
110
99
|
value = _ref2[1];
|
|
111
100
|
|
|
112
|
-
return _concatInstanceProperty__default["default"](
|
|
101
|
+
return _concatInstanceProperty__default["default"](_context3 = "".concat(directive, " ")).call(_context3, _Array$isArray__default["default"](value) ? value.join(' ') : value);
|
|
113
102
|
}).join('; ');
|
|
114
103
|
};
|
|
115
104
|
|
|
116
|
-
|
|
117
|
-
var
|
|
105
|
+
const toStructuredHeaderString = function () {
|
|
106
|
+
var _context4;
|
|
118
107
|
|
|
119
|
-
|
|
120
|
-
return _mapInstanceProperty__default["default"](
|
|
121
|
-
var
|
|
108
|
+
let directives = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};
|
|
109
|
+
return _mapInstanceProperty__default["default"](_context4 = _Object$entries__default["default"](directives)).call(_context4, _ref3 => {
|
|
110
|
+
var _context5;
|
|
122
111
|
|
|
123
|
-
|
|
112
|
+
let _ref4 = _slicedToArray(_ref3, 2),
|
|
124
113
|
directive = _ref4[0],
|
|
125
114
|
value = _ref4[1];
|
|
126
115
|
|
|
127
|
-
return _concatInstanceProperty__default["default"](
|
|
116
|
+
return _concatInstanceProperty__default["default"](_context5 = "".concat(directive, "=")).call(_context5, _Array$isArray__default["default"](value) ? value.join(' ') : value);
|
|
128
117
|
}).join(', ');
|
|
129
118
|
};
|
|
130
119
|
|
|
131
|
-
|
|
132
|
-
var _context7, _context8,
|
|
120
|
+
const processHeaders = applicationConfig => {
|
|
121
|
+
var _context6, _context7, _context8, _applicationConfig$he, _applicationConfig$he2, _applicationConfig$he3, _applicationConfig$he4;
|
|
133
122
|
|
|
134
|
-
|
|
123
|
+
const isMcDevEnv = applicationConfig.env.env === 'development'; // List hashes for injected inline scripts.
|
|
135
124
|
// https://developer.mozilla.org/en-US/docs/Web/HTTP/Headers/Content-Security-Policy/script-src
|
|
136
125
|
|
|
137
|
-
|
|
126
|
+
const htmlScriptsHashes = [createAssetHash(htmlScripts$1.loadingScreen), createAssetHash("window.app = ".concat(sanitizeAppEnvironment(applicationConfig.env), ";")), createAssetHash(htmlScripts$1.publicPath), createAssetHash(htmlScripts$1.dataLayer)]; // // List hashes for injected inline styles.
|
|
138
127
|
// // https://developer.mozilla.org/en-US/docs/Web/HTTP/Headers/Content-Security-Policy/style-src
|
|
139
128
|
// const htmlStylesHashes = [createAssetHash(htmlStyles.loadingScreen)];
|
|
140
129
|
|
|
@@ -143,17 +132,15 @@ var processHeaders = function processHeaders(applicationConfig) {
|
|
|
143
132
|
* https://developer.mozilla.org/en-US/docs/Web/HTTP/Headers/Content-Security-Policy
|
|
144
133
|
*/
|
|
145
134
|
|
|
146
|
-
|
|
135
|
+
const cspDirectives = _Object$assign__default["default"]({
|
|
147
136
|
'default-src': "'none'",
|
|
148
|
-
'script-src': _concatInstanceProperty__default["default"](
|
|
137
|
+
'script-src': _concatInstanceProperty__default["default"](_context6 = ["'self'", 'www.googletagmanager.com/gtm.js', 'www.google-analytics.com/analytics.js']).call(_context6, isMcDevEnv ? // Allow webpack to load source maps on runtime when errors occur
|
|
149
138
|
// using script tags
|
|
150
|
-
['localhost:*', "'unsafe-inline'"] : _mapInstanceProperty__default["default"](htmlScriptsHashes).call(htmlScriptsHashes,
|
|
151
|
-
|
|
152
|
-
|
|
153
|
-
'connect-src': _concatInstanceProperty__default["default"](_context8 = ["'self'", 'app.launchdarkly.com', 'clientstream.launchdarkly.com', 'events.launchdarkly.com', 'app.getsentry.com', // Match all attempts to load from any subdomain of `sentry.io`
|
|
154
|
-
'*.sentry.io', 'www.google-analytics.com']).call(_context8, isMcDevEnv ? ['ws:', 'localhost:8080', 'webpack-internal:'] : []),
|
|
139
|
+
['localhost:*', "'unsafe-inline'"] : _mapInstanceProperty__default["default"](htmlScriptsHashes).call(htmlScriptsHashes, assetHash => "'".concat(assetHash, "'"))),
|
|
140
|
+
'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`
|
|
141
|
+
'*.sentry.io', 'www.google-analytics.com']).call(_context7, isMcDevEnv ? ['ws:', 'localhost:8080', 'webpack-internal:'] : []),
|
|
155
142
|
'img-src': ['*', 'data:'],
|
|
156
|
-
'style-src': _concatInstanceProperty__default["default"](
|
|
143
|
+
'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
|
|
157
144
|
// https://github.com/commercetools/merchant-center-frontend/pull/5223#discussion_r210367636
|
|
158
145
|
["'unsafe-inline'"] // TODO: enable this once we can avoid unsafe-inline
|
|
159
146
|
// htmlStylesHashes.map(assetHash => `'${assetHash}'`)
|
|
@@ -174,77 +161,57 @@ var processHeaders = function processHeaders(applicationConfig) {
|
|
|
174
161
|
); // Recursively merge the directives
|
|
175
162
|
|
|
176
163
|
|
|
177
|
-
|
|
164
|
+
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 : {});
|
|
178
165
|
return _objectSpread(_objectSpread(_objectSpread({}, constants.HTTP_SECURITY_HEADERS), {}, {
|
|
179
166
|
// The `Content-Security-Policy` header is always generated
|
|
180
167
|
// based on the Custom Application config.
|
|
181
168
|
'Content-Security-Policy': toHeaderString(mergedCsp)
|
|
182
169
|
}, ((_applicationConfig$he3 = applicationConfig.headers) === null || _applicationConfig$he3 === void 0 ? void 0 : _applicationConfig$he3.strictTransportSecurity) && {
|
|
183
|
-
'Strict-Transport-Security':
|
|
170
|
+
'Strict-Transport-Security': [constants.HTTP_SECURITY_HEADERS['Strict-Transport-Security'], ...applicationConfig.headers.strictTransportSecurity].join('; ')
|
|
184
171
|
}), ((_applicationConfig$he4 = applicationConfig.headers) === null || _applicationConfig$he4 === void 0 ? void 0 : _applicationConfig$he4.permissionsPolicies) && {
|
|
185
172
|
'Permissions-Policy': toStructuredHeaderString(applicationConfig.headers.permissionsPolicies)
|
|
186
173
|
});
|
|
187
174
|
};
|
|
188
175
|
|
|
189
|
-
|
|
176
|
+
// https://babeljs.io/blog/2017/09/11/zero-config-with-babel-macros
|
|
177
|
+
const htmlScripts = {
|
|
190
178
|
"dataLayer": "window.dataLayer=[{\"gtm.start\":(new Date).getTime(),event:\"gtm.js\"}];",
|
|
191
179
|
"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);",
|
|
192
180
|
"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)};"
|
|
193
181
|
}; // https://babeljs.io/blog/2017/09/11/zero-config-with-babel-macros
|
|
194
182
|
|
|
195
|
-
|
|
183
|
+
const htmlStyles = {
|
|
196
184
|
"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}"
|
|
197
185
|
};
|
|
198
186
|
|
|
199
|
-
|
|
200
|
-
return value.replace(/\/$/, '');
|
|
201
|
-
};
|
|
187
|
+
const trimTrailingSlash = value => value.replace(/\/$/, '');
|
|
202
188
|
|
|
203
|
-
|
|
189
|
+
const getGtmTrackingScript = gtmId => {
|
|
204
190
|
if (!gtmId) return '';
|
|
205
|
-
|
|
191
|
+
const url = "https://www.googletagmanager.com/gtm.js?id=".concat(gtmId);
|
|
206
192
|
return "<script async fetchpriority=\"low\" type=\"text/javascript\" src=\"".concat(url, "\" referrerpolicy=\"no-referrer\"></script>");
|
|
207
193
|
};
|
|
208
194
|
|
|
209
|
-
|
|
195
|
+
const replaceHtmlPlaceholders = (indexHtmlContent, options) => {
|
|
210
196
|
var _options$headers$Cont, _options$headers;
|
|
211
197
|
|
|
212
198
|
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
|
|
213
199
|
"".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('__GTM_SCRIPT__', 'g'), getGtmTrackingScript(options.env.trackingGtm)).replace(new RegExp('__DATALAYER_JS__', 'g'), "<script>".concat(htmlScripts.dataLayer, "</script>")).replace(new RegExp('__LOADING_SCREEN_JS__', 'g'), "<script>".concat(htmlScripts.loadingScreen, "</script>")).replace(new RegExp('__LOADING_SCREEN_CSS__', 'g'), "<style>".concat(htmlStyles.loadingScreen, "</style>"));
|
|
214
200
|
};
|
|
215
201
|
|
|
216
|
-
function compileHtml(
|
|
217
|
-
|
|
218
|
-
|
|
219
|
-
|
|
220
|
-
|
|
221
|
-
|
|
222
|
-
|
|
223
|
-
|
|
224
|
-
|
|
225
|
-
|
|
226
|
-
|
|
227
|
-
|
|
228
|
-
|
|
229
|
-
indexHtmlTemplateContent = fs__default["default"].readFileSync(indexHtmlTemplatePath, 'utf8');
|
|
230
|
-
indexHtmlContent = replaceHtmlPlaceholders(indexHtmlTemplateContent, {
|
|
231
|
-
env: applicationConfig$1.env,
|
|
232
|
-
headers: compiledHeaders
|
|
233
|
-
});
|
|
234
|
-
return _context.abrupt("return", {
|
|
235
|
-
env: applicationConfig$1.env,
|
|
236
|
-
headers: compiledHeaders,
|
|
237
|
-
indexHtmlContent: indexHtmlContent
|
|
238
|
-
});
|
|
239
|
-
|
|
240
|
-
case 5:
|
|
241
|
-
case "end":
|
|
242
|
-
return _context.stop();
|
|
243
|
-
}
|
|
244
|
-
}
|
|
245
|
-
}, _callee);
|
|
246
|
-
}));
|
|
247
|
-
return _compileHtml.apply(this, arguments);
|
|
202
|
+
async function compileHtml(indexHtmlTemplatePath) {
|
|
203
|
+
const applicationConfig$1 = applicationConfig.processConfig();
|
|
204
|
+
const compiledHeaders = processHeaders(applicationConfig$1);
|
|
205
|
+
const indexHtmlTemplateContent = fs__default["default"].readFileSync(indexHtmlTemplatePath, 'utf8');
|
|
206
|
+
const indexHtmlContent = replaceHtmlPlaceholders(indexHtmlTemplateContent, {
|
|
207
|
+
env: applicationConfig$1.env,
|
|
208
|
+
headers: compiledHeaders
|
|
209
|
+
});
|
|
210
|
+
return {
|
|
211
|
+
env: applicationConfig$1.env,
|
|
212
|
+
headers: compiledHeaders,
|
|
213
|
+
indexHtmlContent
|
|
214
|
+
};
|
|
248
215
|
}
|
|
249
216
|
|
|
250
217
|
exports.generateTemplate = generateTemplate.generateTemplate;
|
|
@@ -2,20 +2,17 @@
|
|
|
2
2
|
|
|
3
3
|
Object.defineProperty(exports, '__esModule', { value: true });
|
|
4
4
|
|
|
5
|
-
var _asyncToGenerator = require('@babel/runtime-corejs3/helpers/asyncToGenerator');
|
|
6
|
-
var _regeneratorRuntime = require('@babel/runtime-corejs3/regenerator');
|
|
7
5
|
var fs = require('fs');
|
|
8
6
|
var applicationConfig = require('@commercetools-frontend/application-config');
|
|
9
|
-
var _slicedToArray = require('@babel/runtime-corejs3/helpers/slicedToArray');
|
|
10
7
|
var _defineProperty = require('@babel/runtime-corejs3/helpers/defineProperty');
|
|
11
|
-
var
|
|
8
|
+
var _slicedToArray = require('@babel/runtime-corejs3/helpers/slicedToArray');
|
|
12
9
|
var _Array$isArray = require('@babel/runtime-corejs3/core-js-stable/array/is-array');
|
|
13
10
|
var _reduceInstanceProperty = require('@babel/runtime-corejs3/core-js-stable/instance/reduce');
|
|
14
11
|
var _Object$assign = require('@babel/runtime-corejs3/core-js-stable/object/assign');
|
|
15
12
|
var _Object$keys = require('@babel/runtime-corejs3/core-js-stable/object/keys');
|
|
16
|
-
var _concatInstanceProperty = require('@babel/runtime-corejs3/core-js-stable/instance/concat');
|
|
17
13
|
var _mapInstanceProperty = require('@babel/runtime-corejs3/core-js-stable/instance/map');
|
|
18
14
|
var _Object$entries = require('@babel/runtime-corejs3/core-js-stable/object/entries');
|
|
15
|
+
var _concatInstanceProperty = require('@babel/runtime-corejs3/core-js-stable/instance/concat');
|
|
19
16
|
var _Object$getOwnPropertySymbols = require('@babel/runtime-corejs3/core-js-stable/object/get-own-property-symbols');
|
|
20
17
|
var _filterInstanceProperty = require('@babel/runtime-corejs3/core-js-stable/instance/filter');
|
|
21
18
|
var _Object$getOwnPropertyDescriptor = require('@babel/runtime-corejs3/core-js-stable/object/get-own-property-descriptor');
|
|
@@ -26,19 +23,18 @@ var _Object$defineProperty = require('@babel/runtime-corejs3/core-js-stable/obje
|
|
|
26
23
|
var constants = require('@commercetools-frontend/constants');
|
|
27
24
|
var crypto = require('crypto');
|
|
28
25
|
var serialize = require('serialize-javascript');
|
|
29
|
-
var generateTemplate = require('./generate-template-
|
|
26
|
+
var generateTemplate = require('./generate-template-11aec1ac.cjs.prod.js');
|
|
30
27
|
|
|
31
28
|
function _interopDefault (e) { return e && e.__esModule ? e : { 'default': e }; }
|
|
32
29
|
|
|
33
|
-
var _regeneratorRuntime__default = /*#__PURE__*/_interopDefault(_regeneratorRuntime);
|
|
34
30
|
var fs__default = /*#__PURE__*/_interopDefault(fs);
|
|
35
31
|
var _Array$isArray__default = /*#__PURE__*/_interopDefault(_Array$isArray);
|
|
36
32
|
var _reduceInstanceProperty__default = /*#__PURE__*/_interopDefault(_reduceInstanceProperty);
|
|
37
33
|
var _Object$assign__default = /*#__PURE__*/_interopDefault(_Object$assign);
|
|
38
34
|
var _Object$keys__default = /*#__PURE__*/_interopDefault(_Object$keys);
|
|
39
|
-
var _concatInstanceProperty__default = /*#__PURE__*/_interopDefault(_concatInstanceProperty);
|
|
40
35
|
var _mapInstanceProperty__default = /*#__PURE__*/_interopDefault(_mapInstanceProperty);
|
|
41
36
|
var _Object$entries__default = /*#__PURE__*/_interopDefault(_Object$entries);
|
|
37
|
+
var _concatInstanceProperty__default = /*#__PURE__*/_interopDefault(_concatInstanceProperty);
|
|
42
38
|
var _Object$getOwnPropertySymbols__default = /*#__PURE__*/_interopDefault(_Object$getOwnPropertySymbols);
|
|
43
39
|
var _filterInstanceProperty__default = /*#__PURE__*/_interopDefault(_filterInstanceProperty);
|
|
44
40
|
var _Object$getOwnPropertyDescriptor__default = /*#__PURE__*/_interopDefault(_Object$getOwnPropertyDescriptor);
|
|
@@ -50,7 +46,7 @@ var crypto__default = /*#__PURE__*/_interopDefault(crypto);
|
|
|
50
46
|
var serialize__default = /*#__PURE__*/_interopDefault(serialize);
|
|
51
47
|
|
|
52
48
|
function createAssetHash(content) {
|
|
53
|
-
|
|
49
|
+
const sha256Hash = crypto__default["default"].createHash('sha256').update(content).digest('base64');
|
|
54
50
|
/**
|
|
55
51
|
* NOTE:
|
|
56
52
|
* We prefix the hash function type as the browser
|
|
@@ -62,79 +58,72 @@ function createAssetHash(content) {
|
|
|
62
58
|
return "sha256-".concat(sha256Hash);
|
|
63
59
|
}
|
|
64
60
|
|
|
65
|
-
|
|
66
|
-
|
|
67
|
-
|
|
68
|
-
});
|
|
69
|
-
};
|
|
61
|
+
const sanitizeAppEnvironment = env => serialize__default["default"](env, {
|
|
62
|
+
isJSON: true
|
|
63
|
+
});
|
|
70
64
|
|
|
71
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; }
|
|
72
66
|
|
|
73
|
-
function _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var
|
|
74
|
-
|
|
75
|
-
var htmlScripts$1 = {
|
|
67
|
+
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
|
+
const htmlScripts$1 = {
|
|
76
69
|
"dataLayer": "window.dataLayer=[{\"gtm.start\":(new Date).getTime(),event:\"gtm.js\"}];",
|
|
77
70
|
"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);",
|
|
78
71
|
"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)};"
|
|
79
72
|
};
|
|
80
73
|
|
|
81
|
-
|
|
82
|
-
return _Array$isArray__default["default"](value) ? value : [value];
|
|
83
|
-
};
|
|
74
|
+
const toArray = value => _Array$isArray__default["default"](value) ? value : [value];
|
|
84
75
|
|
|
85
|
-
|
|
76
|
+
const mergeCspDirectives = function () {
|
|
86
77
|
for (var _len = arguments.length, directives = new Array(_len), _key = 0; _key < _len; _key++) {
|
|
87
78
|
directives[_key] = arguments[_key];
|
|
88
79
|
}
|
|
89
80
|
|
|
90
|
-
return _reduceInstanceProperty__default["default"](directives).call(directives,
|
|
81
|
+
return _reduceInstanceProperty__default["default"](directives).call(directives, (mergedCsp, csp) => {
|
|
91
82
|
var _context;
|
|
92
83
|
|
|
93
|
-
return _Object$assign__default["default"](mergedCsp, _reduceInstanceProperty__default["default"](_context = _Object$keys__default["default"](csp)).call(_context,
|
|
94
|
-
|
|
95
|
-
|
|
96
|
-
return _Object$assign__default["default"](acc, _defineProperty({}, directiveKey, _concatInstanceProperty__default["default"](_context2 = []).call(_context2, _toConsumableArray(toArray(mergedCsp[directiveKey] ? mergedCsp[directiveKey] : [])), _toConsumableArray(toArray(csp[directiveKey])))));
|
|
97
|
-
}, {}));
|
|
84
|
+
return _Object$assign__default["default"](mergedCsp, _reduceInstanceProperty__default["default"](_context = _Object$keys__default["default"](csp)).call(_context, (acc, directiveKey) => _Object$assign__default["default"](acc, {
|
|
85
|
+
[directiveKey]: [...toArray(mergedCsp[directiveKey] ? mergedCsp[directiveKey] : []), ...toArray(csp[directiveKey])]
|
|
86
|
+
}), {}));
|
|
98
87
|
}, {});
|
|
99
88
|
};
|
|
100
89
|
|
|
101
|
-
|
|
102
|
-
var
|
|
90
|
+
const toHeaderString = function () {
|
|
91
|
+
var _context2;
|
|
103
92
|
|
|
104
|
-
|
|
105
|
-
return _mapInstanceProperty__default["default"](
|
|
106
|
-
var
|
|
93
|
+
let directives = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};
|
|
94
|
+
return _mapInstanceProperty__default["default"](_context2 = _Object$entries__default["default"](directives)).call(_context2, _ref => {
|
|
95
|
+
var _context3;
|
|
107
96
|
|
|
108
|
-
|
|
97
|
+
let _ref2 = _slicedToArray(_ref, 2),
|
|
109
98
|
directive = _ref2[0],
|
|
110
99
|
value = _ref2[1];
|
|
111
100
|
|
|
112
|
-
return _concatInstanceProperty__default["default"](
|
|
101
|
+
return _concatInstanceProperty__default["default"](_context3 = "".concat(directive, " ")).call(_context3, _Array$isArray__default["default"](value) ? value.join(' ') : value);
|
|
113
102
|
}).join('; ');
|
|
114
103
|
};
|
|
115
104
|
|
|
116
|
-
|
|
117
|
-
var
|
|
105
|
+
const toStructuredHeaderString = function () {
|
|
106
|
+
var _context4;
|
|
118
107
|
|
|
119
|
-
|
|
120
|
-
return _mapInstanceProperty__default["default"](
|
|
121
|
-
var
|
|
108
|
+
let directives = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};
|
|
109
|
+
return _mapInstanceProperty__default["default"](_context4 = _Object$entries__default["default"](directives)).call(_context4, _ref3 => {
|
|
110
|
+
var _context5;
|
|
122
111
|
|
|
123
|
-
|
|
112
|
+
let _ref4 = _slicedToArray(_ref3, 2),
|
|
124
113
|
directive = _ref4[0],
|
|
125
114
|
value = _ref4[1];
|
|
126
115
|
|
|
127
|
-
return _concatInstanceProperty__default["default"](
|
|
116
|
+
return _concatInstanceProperty__default["default"](_context5 = "".concat(directive, "=")).call(_context5, _Array$isArray__default["default"](value) ? value.join(' ') : value);
|
|
128
117
|
}).join(', ');
|
|
129
118
|
};
|
|
130
119
|
|
|
131
|
-
|
|
132
|
-
var _context7, _context8,
|
|
120
|
+
const processHeaders = applicationConfig => {
|
|
121
|
+
var _context6, _context7, _context8, _applicationConfig$he, _applicationConfig$he2, _applicationConfig$he3, _applicationConfig$he4;
|
|
133
122
|
|
|
134
|
-
|
|
123
|
+
const isMcDevEnv = applicationConfig.env.env === 'development'; // List hashes for injected inline scripts.
|
|
135
124
|
// https://developer.mozilla.org/en-US/docs/Web/HTTP/Headers/Content-Security-Policy/script-src
|
|
136
125
|
|
|
137
|
-
|
|
126
|
+
const htmlScriptsHashes = [createAssetHash(htmlScripts$1.loadingScreen), createAssetHash("window.app = ".concat(sanitizeAppEnvironment(applicationConfig.env), ";")), createAssetHash(htmlScripts$1.publicPath), createAssetHash(htmlScripts$1.dataLayer)]; // // List hashes for injected inline styles.
|
|
138
127
|
// // https://developer.mozilla.org/en-US/docs/Web/HTTP/Headers/Content-Security-Policy/style-src
|
|
139
128
|
// const htmlStylesHashes = [createAssetHash(htmlStyles.loadingScreen)];
|
|
140
129
|
|
|
@@ -143,17 +132,15 @@ var processHeaders = function processHeaders(applicationConfig) {
|
|
|
143
132
|
* https://developer.mozilla.org/en-US/docs/Web/HTTP/Headers/Content-Security-Policy
|
|
144
133
|
*/
|
|
145
134
|
|
|
146
|
-
|
|
135
|
+
const cspDirectives = _Object$assign__default["default"]({
|
|
147
136
|
'default-src': "'none'",
|
|
148
|
-
'script-src': _concatInstanceProperty__default["default"](
|
|
137
|
+
'script-src': _concatInstanceProperty__default["default"](_context6 = ["'self'", 'www.googletagmanager.com/gtm.js', 'www.google-analytics.com/analytics.js']).call(_context6, isMcDevEnv ? // Allow webpack to load source maps on runtime when errors occur
|
|
149
138
|
// using script tags
|
|
150
|
-
['localhost:*', "'unsafe-inline'"] : _mapInstanceProperty__default["default"](htmlScriptsHashes).call(htmlScriptsHashes,
|
|
151
|
-
|
|
152
|
-
|
|
153
|
-
'connect-src': _concatInstanceProperty__default["default"](_context8 = ["'self'", 'app.launchdarkly.com', 'clientstream.launchdarkly.com', 'events.launchdarkly.com', 'app.getsentry.com', // Match all attempts to load from any subdomain of `sentry.io`
|
|
154
|
-
'*.sentry.io', 'www.google-analytics.com']).call(_context8, isMcDevEnv ? ['ws:', 'localhost:8080', 'webpack-internal:'] : []),
|
|
139
|
+
['localhost:*', "'unsafe-inline'"] : _mapInstanceProperty__default["default"](htmlScriptsHashes).call(htmlScriptsHashes, assetHash => "'".concat(assetHash, "'"))),
|
|
140
|
+
'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`
|
|
141
|
+
'*.sentry.io', 'www.google-analytics.com']).call(_context7, isMcDevEnv ? ['ws:', 'localhost:8080', 'webpack-internal:'] : []),
|
|
155
142
|
'img-src': ['*', 'data:'],
|
|
156
|
-
'style-src': _concatInstanceProperty__default["default"](
|
|
143
|
+
'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
|
|
157
144
|
// https://github.com/commercetools/merchant-center-frontend/pull/5223#discussion_r210367636
|
|
158
145
|
["'unsafe-inline'"] // TODO: enable this once we can avoid unsafe-inline
|
|
159
146
|
// htmlStylesHashes.map(assetHash => `'${assetHash}'`)
|
|
@@ -174,77 +161,57 @@ var processHeaders = function processHeaders(applicationConfig) {
|
|
|
174
161
|
); // Recursively merge the directives
|
|
175
162
|
|
|
176
163
|
|
|
177
|
-
|
|
164
|
+
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 : {});
|
|
178
165
|
return _objectSpread(_objectSpread(_objectSpread({}, constants.HTTP_SECURITY_HEADERS), {}, {
|
|
179
166
|
// The `Content-Security-Policy` header is always generated
|
|
180
167
|
// based on the Custom Application config.
|
|
181
168
|
'Content-Security-Policy': toHeaderString(mergedCsp)
|
|
182
169
|
}, ((_applicationConfig$he3 = applicationConfig.headers) === null || _applicationConfig$he3 === void 0 ? void 0 : _applicationConfig$he3.strictTransportSecurity) && {
|
|
183
|
-
'Strict-Transport-Security':
|
|
170
|
+
'Strict-Transport-Security': [constants.HTTP_SECURITY_HEADERS['Strict-Transport-Security'], ...applicationConfig.headers.strictTransportSecurity].join('; ')
|
|
184
171
|
}), ((_applicationConfig$he4 = applicationConfig.headers) === null || _applicationConfig$he4 === void 0 ? void 0 : _applicationConfig$he4.permissionsPolicies) && {
|
|
185
172
|
'Permissions-Policy': toStructuredHeaderString(applicationConfig.headers.permissionsPolicies)
|
|
186
173
|
});
|
|
187
174
|
};
|
|
188
175
|
|
|
189
|
-
|
|
176
|
+
// https://babeljs.io/blog/2017/09/11/zero-config-with-babel-macros
|
|
177
|
+
const htmlScripts = {
|
|
190
178
|
"dataLayer": "window.dataLayer=[{\"gtm.start\":(new Date).getTime(),event:\"gtm.js\"}];",
|
|
191
179
|
"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);",
|
|
192
180
|
"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)};"
|
|
193
181
|
}; // https://babeljs.io/blog/2017/09/11/zero-config-with-babel-macros
|
|
194
182
|
|
|
195
|
-
|
|
183
|
+
const htmlStyles = {
|
|
196
184
|
"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}"
|
|
197
185
|
};
|
|
198
186
|
|
|
199
|
-
|
|
200
|
-
return value.replace(/\/$/, '');
|
|
201
|
-
};
|
|
187
|
+
const trimTrailingSlash = value => value.replace(/\/$/, '');
|
|
202
188
|
|
|
203
|
-
|
|
189
|
+
const getGtmTrackingScript = gtmId => {
|
|
204
190
|
if (!gtmId) return '';
|
|
205
|
-
|
|
191
|
+
const url = "https://www.googletagmanager.com/gtm.js?id=".concat(gtmId);
|
|
206
192
|
return "<script async fetchpriority=\"low\" type=\"text/javascript\" src=\"".concat(url, "\" referrerpolicy=\"no-referrer\"></script>");
|
|
207
193
|
};
|
|
208
194
|
|
|
209
|
-
|
|
195
|
+
const replaceHtmlPlaceholders = (indexHtmlContent, options) => {
|
|
210
196
|
var _options$headers$Cont, _options$headers;
|
|
211
197
|
|
|
212
198
|
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
|
|
213
199
|
"".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('__GTM_SCRIPT__', 'g'), getGtmTrackingScript(options.env.trackingGtm)).replace(new RegExp('__DATALAYER_JS__', 'g'), "<script>".concat(htmlScripts.dataLayer, "</script>")).replace(new RegExp('__LOADING_SCREEN_JS__', 'g'), "<script>".concat(htmlScripts.loadingScreen, "</script>")).replace(new RegExp('__LOADING_SCREEN_CSS__', 'g'), "<style>".concat(htmlStyles.loadingScreen, "</style>"));
|
|
214
200
|
};
|
|
215
201
|
|
|
216
|
-
function compileHtml(
|
|
217
|
-
|
|
218
|
-
|
|
219
|
-
|
|
220
|
-
|
|
221
|
-
|
|
222
|
-
|
|
223
|
-
|
|
224
|
-
|
|
225
|
-
|
|
226
|
-
|
|
227
|
-
|
|
228
|
-
|
|
229
|
-
indexHtmlTemplateContent = fs__default["default"].readFileSync(indexHtmlTemplatePath, 'utf8');
|
|
230
|
-
indexHtmlContent = replaceHtmlPlaceholders(indexHtmlTemplateContent, {
|
|
231
|
-
env: applicationConfig$1.env,
|
|
232
|
-
headers: compiledHeaders
|
|
233
|
-
});
|
|
234
|
-
return _context.abrupt("return", {
|
|
235
|
-
env: applicationConfig$1.env,
|
|
236
|
-
headers: compiledHeaders,
|
|
237
|
-
indexHtmlContent: indexHtmlContent
|
|
238
|
-
});
|
|
239
|
-
|
|
240
|
-
case 5:
|
|
241
|
-
case "end":
|
|
242
|
-
return _context.stop();
|
|
243
|
-
}
|
|
244
|
-
}
|
|
245
|
-
}, _callee);
|
|
246
|
-
}));
|
|
247
|
-
return _compileHtml.apply(this, arguments);
|
|
202
|
+
async function compileHtml(indexHtmlTemplatePath) {
|
|
203
|
+
const applicationConfig$1 = applicationConfig.processConfig();
|
|
204
|
+
const compiledHeaders = processHeaders(applicationConfig$1);
|
|
205
|
+
const indexHtmlTemplateContent = fs__default["default"].readFileSync(indexHtmlTemplatePath, 'utf8');
|
|
206
|
+
const indexHtmlContent = replaceHtmlPlaceholders(indexHtmlTemplateContent, {
|
|
207
|
+
env: applicationConfig$1.env,
|
|
208
|
+
headers: compiledHeaders
|
|
209
|
+
});
|
|
210
|
+
return {
|
|
211
|
+
env: applicationConfig$1.env,
|
|
212
|
+
headers: compiledHeaders,
|
|
213
|
+
indexHtmlContent
|
|
214
|
+
};
|
|
248
215
|
}
|
|
249
216
|
|
|
250
217
|
exports.generateTemplate = generateTemplate.generateTemplate;
|
|
@@ -1,17 +1,14 @@
|
|
|
1
|
-
import _asyncToGenerator from '@babel/runtime-corejs3/helpers/esm/asyncToGenerator';
|
|
2
|
-
import _regeneratorRuntime from '@babel/runtime-corejs3/regenerator';
|
|
3
1
|
import fs from 'fs';
|
|
4
2
|
import { processConfig } from '@commercetools-frontend/application-config';
|
|
5
|
-
import _slicedToArray from '@babel/runtime-corejs3/helpers/esm/slicedToArray';
|
|
6
3
|
import _defineProperty from '@babel/runtime-corejs3/helpers/esm/defineProperty';
|
|
7
|
-
import
|
|
4
|
+
import _slicedToArray from '@babel/runtime-corejs3/helpers/esm/slicedToArray';
|
|
8
5
|
import _Array$isArray from '@babel/runtime-corejs3/core-js-stable/array/is-array';
|
|
9
6
|
import _reduceInstanceProperty from '@babel/runtime-corejs3/core-js-stable/instance/reduce';
|
|
10
7
|
import _Object$assign from '@babel/runtime-corejs3/core-js-stable/object/assign';
|
|
11
8
|
import _Object$keys from '@babel/runtime-corejs3/core-js-stable/object/keys';
|
|
12
|
-
import _concatInstanceProperty from '@babel/runtime-corejs3/core-js-stable/instance/concat';
|
|
13
9
|
import _mapInstanceProperty from '@babel/runtime-corejs3/core-js-stable/instance/map';
|
|
14
10
|
import _Object$entries from '@babel/runtime-corejs3/core-js-stable/object/entries';
|
|
11
|
+
import _concatInstanceProperty from '@babel/runtime-corejs3/core-js-stable/instance/concat';
|
|
15
12
|
import _Object$getOwnPropertySymbols from '@babel/runtime-corejs3/core-js-stable/object/get-own-property-symbols';
|
|
16
13
|
import _filterInstanceProperty from '@babel/runtime-corejs3/core-js-stable/instance/filter';
|
|
17
14
|
import _Object$getOwnPropertyDescriptor from '@babel/runtime-corejs3/core-js-stable/object/get-own-property-descriptor';
|
|
@@ -22,10 +19,10 @@ import _Object$defineProperty from '@babel/runtime-corejs3/core-js-stable/object
|
|
|
22
19
|
import { HTTP_SECURITY_HEADERS } from '@commercetools-frontend/constants';
|
|
23
20
|
import crypto from 'crypto';
|
|
24
21
|
import serialize from 'serialize-javascript';
|
|
25
|
-
export { g as generateTemplate } from './generate-template-
|
|
22
|
+
export { g as generateTemplate } from './generate-template-3fe062f9.esm.js';
|
|
26
23
|
|
|
27
24
|
function createAssetHash(content) {
|
|
28
|
-
|
|
25
|
+
const sha256Hash = crypto.createHash('sha256').update(content).digest('base64');
|
|
29
26
|
/**
|
|
30
27
|
* NOTE:
|
|
31
28
|
* We prefix the hash function type as the browser
|
|
@@ -37,79 +34,72 @@ function createAssetHash(content) {
|
|
|
37
34
|
return "sha256-".concat(sha256Hash);
|
|
38
35
|
}
|
|
39
36
|
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
});
|
|
44
|
-
};
|
|
37
|
+
const sanitizeAppEnvironment = env => serialize(env, {
|
|
38
|
+
isJSON: true
|
|
39
|
+
});
|
|
45
40
|
|
|
46
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; }
|
|
47
42
|
|
|
48
|
-
function _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var
|
|
49
|
-
|
|
50
|
-
var htmlScripts$1 = {
|
|
43
|
+
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
|
+
const htmlScripts$1 = {
|
|
51
45
|
"dataLayer": "window.dataLayer=[{\"gtm.start\":(new Date).getTime(),event:\"gtm.js\"}];",
|
|
52
46
|
"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);",
|
|
53
47
|
"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)};"
|
|
54
48
|
};
|
|
55
49
|
|
|
56
|
-
|
|
57
|
-
return _Array$isArray(value) ? value : [value];
|
|
58
|
-
};
|
|
50
|
+
const toArray = value => _Array$isArray(value) ? value : [value];
|
|
59
51
|
|
|
60
|
-
|
|
52
|
+
const mergeCspDirectives = function () {
|
|
61
53
|
for (var _len = arguments.length, directives = new Array(_len), _key = 0; _key < _len; _key++) {
|
|
62
54
|
directives[_key] = arguments[_key];
|
|
63
55
|
}
|
|
64
56
|
|
|
65
|
-
return _reduceInstanceProperty(directives).call(directives,
|
|
57
|
+
return _reduceInstanceProperty(directives).call(directives, (mergedCsp, csp) => {
|
|
66
58
|
var _context;
|
|
67
59
|
|
|
68
|
-
return _Object$assign(mergedCsp, _reduceInstanceProperty(_context = _Object$keys(csp)).call(_context,
|
|
69
|
-
|
|
70
|
-
|
|
71
|
-
return _Object$assign(acc, _defineProperty({}, directiveKey, _concatInstanceProperty(_context2 = []).call(_context2, _toConsumableArray(toArray(mergedCsp[directiveKey] ? mergedCsp[directiveKey] : [])), _toConsumableArray(toArray(csp[directiveKey])))));
|
|
72
|
-
}, {}));
|
|
60
|
+
return _Object$assign(mergedCsp, _reduceInstanceProperty(_context = _Object$keys(csp)).call(_context, (acc, directiveKey) => _Object$assign(acc, {
|
|
61
|
+
[directiveKey]: [...toArray(mergedCsp[directiveKey] ? mergedCsp[directiveKey] : []), ...toArray(csp[directiveKey])]
|
|
62
|
+
}), {}));
|
|
73
63
|
}, {});
|
|
74
64
|
};
|
|
75
65
|
|
|
76
|
-
|
|
77
|
-
var
|
|
66
|
+
const toHeaderString = function () {
|
|
67
|
+
var _context2;
|
|
78
68
|
|
|
79
|
-
|
|
80
|
-
return _mapInstanceProperty(
|
|
81
|
-
var
|
|
69
|
+
let directives = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};
|
|
70
|
+
return _mapInstanceProperty(_context2 = _Object$entries(directives)).call(_context2, _ref => {
|
|
71
|
+
var _context3;
|
|
82
72
|
|
|
83
|
-
|
|
73
|
+
let _ref2 = _slicedToArray(_ref, 2),
|
|
84
74
|
directive = _ref2[0],
|
|
85
75
|
value = _ref2[1];
|
|
86
76
|
|
|
87
|
-
return _concatInstanceProperty(
|
|
77
|
+
return _concatInstanceProperty(_context3 = "".concat(directive, " ")).call(_context3, _Array$isArray(value) ? value.join(' ') : value);
|
|
88
78
|
}).join('; ');
|
|
89
79
|
};
|
|
90
80
|
|
|
91
|
-
|
|
92
|
-
var
|
|
81
|
+
const toStructuredHeaderString = function () {
|
|
82
|
+
var _context4;
|
|
93
83
|
|
|
94
|
-
|
|
95
|
-
return _mapInstanceProperty(
|
|
96
|
-
var
|
|
84
|
+
let directives = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};
|
|
85
|
+
return _mapInstanceProperty(_context4 = _Object$entries(directives)).call(_context4, _ref3 => {
|
|
86
|
+
var _context5;
|
|
97
87
|
|
|
98
|
-
|
|
88
|
+
let _ref4 = _slicedToArray(_ref3, 2),
|
|
99
89
|
directive = _ref4[0],
|
|
100
90
|
value = _ref4[1];
|
|
101
91
|
|
|
102
|
-
return _concatInstanceProperty(
|
|
92
|
+
return _concatInstanceProperty(_context5 = "".concat(directive, "=")).call(_context5, _Array$isArray(value) ? value.join(' ') : value);
|
|
103
93
|
}).join(', ');
|
|
104
94
|
};
|
|
105
95
|
|
|
106
|
-
|
|
107
|
-
var _context7, _context8,
|
|
96
|
+
const processHeaders = applicationConfig => {
|
|
97
|
+
var _context6, _context7, _context8, _applicationConfig$he, _applicationConfig$he2, _applicationConfig$he3, _applicationConfig$he4;
|
|
108
98
|
|
|
109
|
-
|
|
99
|
+
const isMcDevEnv = applicationConfig.env.env === 'development'; // List hashes for injected inline scripts.
|
|
110
100
|
// https://developer.mozilla.org/en-US/docs/Web/HTTP/Headers/Content-Security-Policy/script-src
|
|
111
101
|
|
|
112
|
-
|
|
102
|
+
const htmlScriptsHashes = [createAssetHash(htmlScripts$1.loadingScreen), createAssetHash("window.app = ".concat(sanitizeAppEnvironment(applicationConfig.env), ";")), createAssetHash(htmlScripts$1.publicPath), createAssetHash(htmlScripts$1.dataLayer)]; // // List hashes for injected inline styles.
|
|
113
103
|
// // https://developer.mozilla.org/en-US/docs/Web/HTTP/Headers/Content-Security-Policy/style-src
|
|
114
104
|
// const htmlStylesHashes = [createAssetHash(htmlStyles.loadingScreen)];
|
|
115
105
|
|
|
@@ -118,17 +108,15 @@ var processHeaders = function processHeaders(applicationConfig) {
|
|
|
118
108
|
* https://developer.mozilla.org/en-US/docs/Web/HTTP/Headers/Content-Security-Policy
|
|
119
109
|
*/
|
|
120
110
|
|
|
121
|
-
|
|
111
|
+
const cspDirectives = _Object$assign({
|
|
122
112
|
'default-src': "'none'",
|
|
123
|
-
'script-src': _concatInstanceProperty(
|
|
113
|
+
'script-src': _concatInstanceProperty(_context6 = ["'self'", 'www.googletagmanager.com/gtm.js', 'www.google-analytics.com/analytics.js']).call(_context6, isMcDevEnv ? // Allow webpack to load source maps on runtime when errors occur
|
|
124
114
|
// using script tags
|
|
125
|
-
['localhost:*', "'unsafe-inline'"] : _mapInstanceProperty(htmlScriptsHashes).call(htmlScriptsHashes,
|
|
126
|
-
|
|
127
|
-
|
|
128
|
-
'connect-src': _concatInstanceProperty(_context8 = ["'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
|
-
'*.sentry.io', 'www.google-analytics.com']).call(_context8, isMcDevEnv ? ['ws:', 'localhost:8080', 'webpack-internal:'] : []),
|
|
115
|
+
['localhost:*', "'unsafe-inline'"] : _mapInstanceProperty(htmlScriptsHashes).call(htmlScriptsHashes, assetHash => "'".concat(assetHash, "'"))),
|
|
116
|
+
'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`
|
|
117
|
+
'*.sentry.io', 'www.google-analytics.com']).call(_context7, isMcDevEnv ? ['ws:', 'localhost:8080', 'webpack-internal:'] : []),
|
|
130
118
|
'img-src': ['*', 'data:'],
|
|
131
|
-
'style-src': _concatInstanceProperty(
|
|
119
|
+
'style-src': _concatInstanceProperty(_context8 = ["'self'", 'fonts.googleapis.com', 'data:']).call(_context8, // TODO: investigate what needs to be done to avoid unsafe-inline styles
|
|
132
120
|
// https://github.com/commercetools/merchant-center-frontend/pull/5223#discussion_r210367636
|
|
133
121
|
["'unsafe-inline'"] // TODO: enable this once we can avoid unsafe-inline
|
|
134
122
|
// htmlStylesHashes.map(assetHash => `'${assetHash}'`)
|
|
@@ -149,77 +137,57 @@ var processHeaders = function processHeaders(applicationConfig) {
|
|
|
149
137
|
); // Recursively merge the directives
|
|
150
138
|
|
|
151
139
|
|
|
152
|
-
|
|
140
|
+
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 : {});
|
|
153
141
|
return _objectSpread(_objectSpread(_objectSpread({}, HTTP_SECURITY_HEADERS), {}, {
|
|
154
142
|
// The `Content-Security-Policy` header is always generated
|
|
155
143
|
// based on the Custom Application config.
|
|
156
144
|
'Content-Security-Policy': toHeaderString(mergedCsp)
|
|
157
145
|
}, ((_applicationConfig$he3 = applicationConfig.headers) === null || _applicationConfig$he3 === void 0 ? void 0 : _applicationConfig$he3.strictTransportSecurity) && {
|
|
158
|
-
'Strict-Transport-Security':
|
|
146
|
+
'Strict-Transport-Security': [HTTP_SECURITY_HEADERS['Strict-Transport-Security'], ...applicationConfig.headers.strictTransportSecurity].join('; ')
|
|
159
147
|
}), ((_applicationConfig$he4 = applicationConfig.headers) === null || _applicationConfig$he4 === void 0 ? void 0 : _applicationConfig$he4.permissionsPolicies) && {
|
|
160
148
|
'Permissions-Policy': toStructuredHeaderString(applicationConfig.headers.permissionsPolicies)
|
|
161
149
|
});
|
|
162
150
|
};
|
|
163
151
|
|
|
164
|
-
|
|
152
|
+
// https://babeljs.io/blog/2017/09/11/zero-config-with-babel-macros
|
|
153
|
+
const htmlScripts = {
|
|
165
154
|
"dataLayer": "window.dataLayer=[{\"gtm.start\":(new Date).getTime(),event:\"gtm.js\"}];",
|
|
166
155
|
"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);",
|
|
167
156
|
"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)};"
|
|
168
157
|
}; // https://babeljs.io/blog/2017/09/11/zero-config-with-babel-macros
|
|
169
158
|
|
|
170
|
-
|
|
159
|
+
const htmlStyles = {
|
|
171
160
|
"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}"
|
|
172
161
|
};
|
|
173
162
|
|
|
174
|
-
|
|
175
|
-
return value.replace(/\/$/, '');
|
|
176
|
-
};
|
|
163
|
+
const trimTrailingSlash = value => value.replace(/\/$/, '');
|
|
177
164
|
|
|
178
|
-
|
|
165
|
+
const getGtmTrackingScript = gtmId => {
|
|
179
166
|
if (!gtmId) return '';
|
|
180
|
-
|
|
167
|
+
const url = "https://www.googletagmanager.com/gtm.js?id=".concat(gtmId);
|
|
181
168
|
return "<script async fetchpriority=\"low\" type=\"text/javascript\" src=\"".concat(url, "\" referrerpolicy=\"no-referrer\"></script>");
|
|
182
169
|
};
|
|
183
170
|
|
|
184
|
-
|
|
171
|
+
const replaceHtmlPlaceholders = (indexHtmlContent, options) => {
|
|
185
172
|
var _options$headers$Cont, _options$headers;
|
|
186
173
|
|
|
187
174
|
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
|
|
188
175
|
"".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('__GTM_SCRIPT__', 'g'), getGtmTrackingScript(options.env.trackingGtm)).replace(new RegExp('__DATALAYER_JS__', 'g'), "<script>".concat(htmlScripts.dataLayer, "</script>")).replace(new RegExp('__LOADING_SCREEN_JS__', 'g'), "<script>".concat(htmlScripts.loadingScreen, "</script>")).replace(new RegExp('__LOADING_SCREEN_CSS__', 'g'), "<style>".concat(htmlStyles.loadingScreen, "</style>"));
|
|
189
176
|
};
|
|
190
177
|
|
|
191
|
-
function compileHtml(
|
|
192
|
-
|
|
193
|
-
|
|
194
|
-
|
|
195
|
-
|
|
196
|
-
|
|
197
|
-
|
|
198
|
-
|
|
199
|
-
|
|
200
|
-
|
|
201
|
-
|
|
202
|
-
|
|
203
|
-
|
|
204
|
-
indexHtmlTemplateContent = fs.readFileSync(indexHtmlTemplatePath, 'utf8');
|
|
205
|
-
indexHtmlContent = replaceHtmlPlaceholders(indexHtmlTemplateContent, {
|
|
206
|
-
env: applicationConfig.env,
|
|
207
|
-
headers: compiledHeaders
|
|
208
|
-
});
|
|
209
|
-
return _context.abrupt("return", {
|
|
210
|
-
env: applicationConfig.env,
|
|
211
|
-
headers: compiledHeaders,
|
|
212
|
-
indexHtmlContent: indexHtmlContent
|
|
213
|
-
});
|
|
214
|
-
|
|
215
|
-
case 5:
|
|
216
|
-
case "end":
|
|
217
|
-
return _context.stop();
|
|
218
|
-
}
|
|
219
|
-
}
|
|
220
|
-
}, _callee);
|
|
221
|
-
}));
|
|
222
|
-
return _compileHtml.apply(this, arguments);
|
|
178
|
+
async function compileHtml(indexHtmlTemplatePath) {
|
|
179
|
+
const applicationConfig = processConfig();
|
|
180
|
+
const compiledHeaders = processHeaders(applicationConfig);
|
|
181
|
+
const indexHtmlTemplateContent = fs.readFileSync(indexHtmlTemplatePath, 'utf8');
|
|
182
|
+
const indexHtmlContent = replaceHtmlPlaceholders(indexHtmlTemplateContent, {
|
|
183
|
+
env: applicationConfig.env,
|
|
184
|
+
headers: compiledHeaders
|
|
185
|
+
});
|
|
186
|
+
return {
|
|
187
|
+
env: applicationConfig.env,
|
|
188
|
+
headers: compiledHeaders,
|
|
189
|
+
indexHtmlContent
|
|
190
|
+
};
|
|
223
191
|
}
|
|
224
192
|
|
|
225
193
|
export { compileHtml, processHeaders, replaceHtmlPlaceholders };
|
package/dist/{generate-template-a47e70b1.cjs.prod.js → generate-template-11aec1ac.cjs.prod.js}
RENAMED
|
@@ -1,12 +1,12 @@
|
|
|
1
1
|
'use strict';
|
|
2
2
|
|
|
3
3
|
// https://babeljs.io/blog/2017/09/11/zero-config-with-babel-macros
|
|
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 <!-- Tracking scripts (load before application bundles) -->\n __DATALAYER_JS__\n __GTM_SCRIPT__\n\n <!-- Main application chunks -->\n __APPLICATION_SCRIPT_IMPORTS__\n </body>\n</html>\n"
|
|
6
6
|
};
|
|
7
7
|
|
|
8
8
|
function generateTemplate(_ref) {
|
|
9
|
-
|
|
9
|
+
let _ref$cssImports = _ref.cssImports,
|
|
10
10
|
cssImports = _ref$cssImports === void 0 ? [] : _ref$cssImports,
|
|
11
11
|
_ref$scriptImports = _ref.scriptImports,
|
|
12
12
|
scriptImports = _ref$scriptImports === void 0 ? [] : _ref$scriptImports;
|
|
@@ -1,10 +1,10 @@
|
|
|
1
1
|
// https://babeljs.io/blog/2017/09/11/zero-config-with-babel-macros
|
|
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 <!-- Tracking scripts (load before application bundles) -->\n __DATALAYER_JS__\n __GTM_SCRIPT__\n\n <!-- Main application chunks -->\n __APPLICATION_SCRIPT_IMPORTS__\n </body>\n</html>\n"
|
|
4
4
|
};
|
|
5
5
|
|
|
6
6
|
function generateTemplate(_ref) {
|
|
7
|
-
|
|
7
|
+
let _ref$cssImports = _ref.cssImports,
|
|
8
8
|
cssImports = _ref$cssImports === void 0 ? [] : _ref$cssImports,
|
|
9
9
|
_ref$scriptImports = _ref.scriptImports,
|
|
10
10
|
scriptImports = _ref$scriptImports === void 0 ? [] : _ref$scriptImports;
|
package/dist/{generate-template-ffe36451.cjs.dev.js → generate-template-f3bd2e44.cjs.dev.js}
RENAMED
|
@@ -1,12 +1,12 @@
|
|
|
1
1
|
'use strict';
|
|
2
2
|
|
|
3
3
|
// https://babeljs.io/blog/2017/09/11/zero-config-with-babel-macros
|
|
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 <!-- Tracking scripts (load before application bundles) -->\n __DATALAYER_JS__\n __GTM_SCRIPT__\n\n <!-- Main application chunks -->\n __APPLICATION_SCRIPT_IMPORTS__\n </body>\n</html>\n"
|
|
6
6
|
};
|
|
7
7
|
|
|
8
8
|
function generateTemplate(_ref) {
|
|
9
|
-
|
|
9
|
+
let _ref$cssImports = _ref.cssImports,
|
|
10
10
|
cssImports = _ref$cssImports === void 0 ? [] : _ref$cssImports,
|
|
11
11
|
_ref$scriptImports = _ref.scriptImports,
|
|
12
12
|
scriptImports = _ref$scriptImports === void 0 ? [] : _ref$scriptImports;
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@commercetools-frontend/mc-html-template",
|
|
3
|
-
"version": "21.
|
|
3
|
+
"version": "21.24.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": {
|
|
@@ -30,8 +30,8 @@
|
|
|
30
30
|
"dependencies": {
|
|
31
31
|
"@babel/runtime": "^7.20.13",
|
|
32
32
|
"@babel/runtime-corejs3": "^7.20.13",
|
|
33
|
-
"@commercetools-frontend/application-config": "21.
|
|
34
|
-
"@commercetools-frontend/constants": "21.
|
|
33
|
+
"@commercetools-frontend/application-config": "21.24.0",
|
|
34
|
+
"@commercetools-frontend/constants": "21.24.0",
|
|
35
35
|
"serialize-javascript": "6.0.1",
|
|
36
36
|
"uglify-js": "3.17.4",
|
|
37
37
|
"uglifycss": "0.0.29"
|
|
@@ -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-f3bd2e44.cjs.dev.js');
|
|
10
10
|
|
|
11
11
|
function _interopDefault (e) { return e && e.__esModule ? e : { 'default': e }; }
|
|
12
12
|
|
|
@@ -18,10 +18,10 @@ var _concatInstanceProperty__default = /*#__PURE__*/_interopDefault(_concatInsta
|
|
|
18
18
|
function webpackHtmlTemplate(templateParams) {
|
|
19
19
|
var _context, _context2, _context3;
|
|
20
20
|
|
|
21
|
-
|
|
22
|
-
|
|
21
|
+
const cssVendorChunks = [];
|
|
22
|
+
const cssAppChunks = [];
|
|
23
23
|
|
|
24
|
-
_forEachInstanceProperty__default["default"](_context = templateParams.htmlWebpackPlugin.files.css).call(_context,
|
|
24
|
+
_forEachInstanceProperty__default["default"](_context = templateParams.htmlWebpackPlugin.files.css).call(_context, file => {
|
|
25
25
|
if (_indexOfInstanceProperty__default["default"](file).call(file, 'vendor') === -1) {
|
|
26
26
|
cssAppChunks.push(file);
|
|
27
27
|
} else {
|
|
@@ -29,28 +29,19 @@ function webpackHtmlTemplate(templateParams) {
|
|
|
29
29
|
}
|
|
30
30
|
});
|
|
31
31
|
|
|
32
|
-
|
|
33
|
-
return fileName.replace(/^\//, '');
|
|
34
|
-
});
|
|
32
|
+
const cssChunks = _mapInstanceProperty__default["default"](_context2 = _concatInstanceProperty__default["default"](cssVendorChunks).call(cssVendorChunks, cssAppChunks)).call(_context2, fileName => fileName.replace(/^\//, ''));
|
|
35
33
|
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
fileName.replace(/^\//, '')
|
|
40
|
-
);
|
|
41
|
-
});
|
|
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
|
|
35
|
+
// (see `replaceHtmlPlaceholders`)
|
|
36
|
+
fileName.replace(/^\//, ''));
|
|
42
37
|
|
|
43
|
-
|
|
44
|
-
return "<link href=\"__CDN_URL__".concat(chunkPath, "\" rel='stylesheet' type='text/css'>");
|
|
45
|
-
});
|
|
38
|
+
const cssImports = _mapInstanceProperty__default["default"](cssChunks).call(cssChunks, chunkPath => "<link href=\"__CDN_URL__".concat(chunkPath, "\" rel='stylesheet' type='text/css'>"));
|
|
46
39
|
|
|
47
|
-
|
|
48
|
-
return "<script src=\"__CDN_URL__".concat(chunkPath, "\"></script>");
|
|
49
|
-
});
|
|
40
|
+
const scriptImports = _mapInstanceProperty__default["default"](scriptChunks).call(scriptChunks, chunkPath => "<script src=\"__CDN_URL__".concat(chunkPath, "\"></script>"));
|
|
50
41
|
|
|
51
42
|
return generateTemplate.generateTemplate({
|
|
52
|
-
cssImports
|
|
53
|
-
scriptImports
|
|
43
|
+
cssImports,
|
|
44
|
+
scriptImports
|
|
54
45
|
});
|
|
55
46
|
}
|
|
56
47
|
|
|
@@ -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-11aec1ac.cjs.prod.js');
|
|
10
10
|
|
|
11
11
|
function _interopDefault (e) { return e && e.__esModule ? e : { 'default': e }; }
|
|
12
12
|
|
|
@@ -18,10 +18,10 @@ var _concatInstanceProperty__default = /*#__PURE__*/_interopDefault(_concatInsta
|
|
|
18
18
|
function webpackHtmlTemplate(templateParams) {
|
|
19
19
|
var _context, _context2, _context3;
|
|
20
20
|
|
|
21
|
-
|
|
22
|
-
|
|
21
|
+
const cssVendorChunks = [];
|
|
22
|
+
const cssAppChunks = [];
|
|
23
23
|
|
|
24
|
-
_forEachInstanceProperty__default["default"](_context = templateParams.htmlWebpackPlugin.files.css).call(_context,
|
|
24
|
+
_forEachInstanceProperty__default["default"](_context = templateParams.htmlWebpackPlugin.files.css).call(_context, file => {
|
|
25
25
|
if (_indexOfInstanceProperty__default["default"](file).call(file, 'vendor') === -1) {
|
|
26
26
|
cssAppChunks.push(file);
|
|
27
27
|
} else {
|
|
@@ -29,28 +29,19 @@ function webpackHtmlTemplate(templateParams) {
|
|
|
29
29
|
}
|
|
30
30
|
});
|
|
31
31
|
|
|
32
|
-
|
|
33
|
-
return fileName.replace(/^\//, '');
|
|
34
|
-
});
|
|
32
|
+
const cssChunks = _mapInstanceProperty__default["default"](_context2 = _concatInstanceProperty__default["default"](cssVendorChunks).call(cssVendorChunks, cssAppChunks)).call(_context2, fileName => fileName.replace(/^\//, ''));
|
|
35
33
|
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
fileName.replace(/^\//, '')
|
|
40
|
-
);
|
|
41
|
-
});
|
|
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
|
|
35
|
+
// (see `replaceHtmlPlaceholders`)
|
|
36
|
+
fileName.replace(/^\//, ''));
|
|
42
37
|
|
|
43
|
-
|
|
44
|
-
return "<link href=\"__CDN_URL__".concat(chunkPath, "\" rel='stylesheet' type='text/css'>");
|
|
45
|
-
});
|
|
38
|
+
const cssImports = _mapInstanceProperty__default["default"](cssChunks).call(cssChunks, chunkPath => "<link href=\"__CDN_URL__".concat(chunkPath, "\" rel='stylesheet' type='text/css'>"));
|
|
46
39
|
|
|
47
|
-
|
|
48
|
-
return "<script src=\"__CDN_URL__".concat(chunkPath, "\"></script>");
|
|
49
|
-
});
|
|
40
|
+
const scriptImports = _mapInstanceProperty__default["default"](scriptChunks).call(scriptChunks, chunkPath => "<script src=\"__CDN_URL__".concat(chunkPath, "\"></script>"));
|
|
50
41
|
|
|
51
42
|
return generateTemplate.generateTemplate({
|
|
52
|
-
cssImports
|
|
53
|
-
scriptImports
|
|
43
|
+
cssImports,
|
|
44
|
+
scriptImports
|
|
54
45
|
});
|
|
55
46
|
}
|
|
56
47
|
|
|
@@ -2,15 +2,15 @@ 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-3fe062f9.esm.js';
|
|
6
6
|
|
|
7
7
|
function webpackHtmlTemplate(templateParams) {
|
|
8
8
|
var _context, _context2, _context3;
|
|
9
9
|
|
|
10
|
-
|
|
11
|
-
|
|
10
|
+
const cssVendorChunks = [];
|
|
11
|
+
const cssAppChunks = [];
|
|
12
12
|
|
|
13
|
-
_forEachInstanceProperty(_context = templateParams.htmlWebpackPlugin.files.css).call(_context,
|
|
13
|
+
_forEachInstanceProperty(_context = templateParams.htmlWebpackPlugin.files.css).call(_context, file => {
|
|
14
14
|
if (_indexOfInstanceProperty(file).call(file, 'vendor') === -1) {
|
|
15
15
|
cssAppChunks.push(file);
|
|
16
16
|
} else {
|
|
@@ -18,28 +18,19 @@ function webpackHtmlTemplate(templateParams) {
|
|
|
18
18
|
}
|
|
19
19
|
});
|
|
20
20
|
|
|
21
|
-
|
|
22
|
-
return fileName.replace(/^\//, '');
|
|
23
|
-
});
|
|
21
|
+
const cssChunks = _mapInstanceProperty(_context2 = _concatInstanceProperty(cssVendorChunks).call(cssVendorChunks, cssAppChunks)).call(_context2, fileName => fileName.replace(/^\//, ''));
|
|
24
22
|
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
fileName.replace(/^\//, '')
|
|
29
|
-
);
|
|
30
|
-
});
|
|
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
|
|
24
|
+
// (see `replaceHtmlPlaceholders`)
|
|
25
|
+
fileName.replace(/^\//, ''));
|
|
31
26
|
|
|
32
|
-
|
|
33
|
-
return "<link href=\"__CDN_URL__".concat(chunkPath, "\" rel='stylesheet' type='text/css'>");
|
|
34
|
-
});
|
|
27
|
+
const cssImports = _mapInstanceProperty(cssChunks).call(cssChunks, chunkPath => "<link href=\"__CDN_URL__".concat(chunkPath, "\" rel='stylesheet' type='text/css'>"));
|
|
35
28
|
|
|
36
|
-
|
|
37
|
-
return "<script src=\"__CDN_URL__".concat(chunkPath, "\"></script>");
|
|
38
|
-
});
|
|
29
|
+
const scriptImports = _mapInstanceProperty(scriptChunks).call(scriptChunks, chunkPath => "<script src=\"__CDN_URL__".concat(chunkPath, "\"></script>"));
|
|
39
30
|
|
|
40
31
|
return generateTemplate({
|
|
41
|
-
cssImports
|
|
42
|
-
scriptImports
|
|
32
|
+
cssImports,
|
|
33
|
+
scriptImports
|
|
43
34
|
});
|
|
44
35
|
}
|
|
45
36
|
|