@commercetools-frontend/mc-html-template 21.3.3 → 21.5.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/README.md +51 -5
- package/dist/commercetools-frontend-mc-html-template.cjs.d.ts +1 -0
- package/dist/commercetools-frontend-mc-html-template.cjs.dev.js +255 -0
- package/dist/commercetools-frontend-mc-html-template.cjs.js +7 -0
- package/dist/commercetools-frontend-mc-html-template.cjs.prod.js +255 -0
- package/dist/commercetools-frontend-mc-html-template.esm.js +227 -0
- package/dist/declarations/src/compile-html.d.ts +8 -0
- package/dist/declarations/src/generate-template.d.ts +6 -0
- package/dist/declarations/src/index.d.ts +4 -0
- package/dist/declarations/src/load-html-docs.d.ts +3 -0
- package/dist/declarations/src/load-html-scripts.d.ts +7 -0
- package/dist/declarations/src/load-html-styles.d.ts +5 -0
- package/dist/declarations/src/process-headers.d.ts +3 -0
- package/dist/declarations/src/replace-html-placeholders.d.ts +7 -0
- package/dist/declarations/src/utils/create-asset-hash.d.ts +2 -0
- package/dist/declarations/src/utils/sanitize-app-environment.d.ts +3 -0
- package/dist/declarations/src/webpack-html-template.d.ts +3 -0
- package/dist/generate-template-211c0b41.cjs.dev.js +16 -0
- package/dist/generate-template-600664a1.cjs.prod.js +16 -0
- package/dist/generate-template-e252c441.esm.js +14 -0
- package/package.json +16 -41
- package/webpack-html-template/dist/commercetools-frontend-mc-html-template-webpack-html-template.cjs.d.ts +2 -0
- package/webpack-html-template/dist/commercetools-frontend-mc-html-template-webpack-html-template.cjs.dev.js +57 -0
- package/webpack-html-template/dist/commercetools-frontend-mc-html-template-webpack-html-template.cjs.js +7 -0
- package/webpack-html-template/dist/commercetools-frontend-mc-html-template-webpack-html-template.cjs.prod.js +57 -0
- package/webpack-html-template/dist/commercetools-frontend-mc-html-template-webpack-html-template.esm.js +46 -0
- package/webpack-html-template/package.json +4 -0
- package/webpack.js +5 -27
- package/build/compile-html.js +0 -27
- package/build/generate-template.js +0 -82
- package/build/index.js +0 -6
- package/build/load-html-scripts.js +0 -25
- package/build/load-html-styles.js +0 -21
- package/build/process-headers.js +0 -116
- package/build/process-headers.spec.js +0 -98
- package/build/utils/create-asset-hash.js +0 -16
- package/build/utils/replace-html-placeholders.js +0 -22
- package/build/utils/sanitize-app-environment.js +0 -9
- package/build/utils/substitute-env-variable-placeholders.js +0 -74
- package/build/utils/substitute-env-variable-placeholders.spec.js +0 -42
- package/html-scripts/.eslintrc.yaml +0 -2
- package/html-scripts/data-layer.js +0 -1
- package/html-scripts/loading-screen.js +0 -26
- package/html-styles/loading-screen.css +0 -50
|
@@ -0,0 +1,227 @@
|
|
|
1
|
+
import _asyncToGenerator from '@babel/runtime-corejs3/helpers/esm/asyncToGenerator';
|
|
2
|
+
import _regeneratorRuntime from '@babel/runtime-corejs3/regenerator';
|
|
3
|
+
import fs from 'fs';
|
|
4
|
+
import { processConfig } from '@commercetools-frontend/application-config';
|
|
5
|
+
import _slicedToArray from '@babel/runtime-corejs3/helpers/esm/slicedToArray';
|
|
6
|
+
import _defineProperty from '@babel/runtime-corejs3/helpers/esm/defineProperty';
|
|
7
|
+
import _toConsumableArray from '@babel/runtime-corejs3/helpers/esm/toConsumableArray';
|
|
8
|
+
import _Array$isArray from '@babel/runtime-corejs3/core-js-stable/array/is-array';
|
|
9
|
+
import _reduceInstanceProperty from '@babel/runtime-corejs3/core-js-stable/instance/reduce';
|
|
10
|
+
import _Object$assign from '@babel/runtime-corejs3/core-js-stable/object/assign';
|
|
11
|
+
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
|
+
import _mapInstanceProperty from '@babel/runtime-corejs3/core-js-stable/instance/map';
|
|
14
|
+
import _Object$entries from '@babel/runtime-corejs3/core-js-stable/object/entries';
|
|
15
|
+
import _Object$getOwnPropertySymbols from '@babel/runtime-corejs3/core-js-stable/object/get-own-property-symbols';
|
|
16
|
+
import _filterInstanceProperty from '@babel/runtime-corejs3/core-js-stable/instance/filter';
|
|
17
|
+
import _Object$getOwnPropertyDescriptor from '@babel/runtime-corejs3/core-js-stable/object/get-own-property-descriptor';
|
|
18
|
+
import _forEachInstanceProperty from '@babel/runtime-corejs3/core-js-stable/instance/for-each';
|
|
19
|
+
import _Object$getOwnPropertyDescriptors from '@babel/runtime-corejs3/core-js-stable/object/get-own-property-descriptors';
|
|
20
|
+
import _Object$defineProperties from '@babel/runtime-corejs3/core-js-stable/object/define-properties';
|
|
21
|
+
import _Object$defineProperty from '@babel/runtime-corejs3/core-js-stable/object/define-property';
|
|
22
|
+
import { HTTP_SECURITY_HEADERS } from '@commercetools-frontend/constants';
|
|
23
|
+
import crypto from 'crypto';
|
|
24
|
+
import serialize from 'serialize-javascript';
|
|
25
|
+
export { g as generateTemplate } from './generate-template-e252c441.esm.js';
|
|
26
|
+
|
|
27
|
+
function createAssetHash(content) {
|
|
28
|
+
var sha256Hash = crypto.createHash('sha256').update(content).digest('base64');
|
|
29
|
+
/**
|
|
30
|
+
* NOTE:
|
|
31
|
+
* We prefix the hash function type as the browser
|
|
32
|
+
* needs it when validating the contents of a script against
|
|
33
|
+
* CSP headers sent.
|
|
34
|
+
* For more information head to: developer.mozilla.org/en-US/docs/Web/HTTP/Headers/Content-Security-Policy/script-src#Sources
|
|
35
|
+
*/
|
|
36
|
+
|
|
37
|
+
return "sha256-".concat(sha256Hash);
|
|
38
|
+
}
|
|
39
|
+
|
|
40
|
+
var sanitizeAppEnvironment = function sanitizeAppEnvironment(env) {
|
|
41
|
+
return serialize(env, {
|
|
42
|
+
isJSON: true
|
|
43
|
+
});
|
|
44
|
+
};
|
|
45
|
+
|
|
46
|
+
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
|
+
|
|
48
|
+
function _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var _context11, _context12; var source = null != arguments[i] ? arguments[i] : {}; i % 2 ? _forEachInstanceProperty(_context11 = ownKeys(Object(source), !0)).call(_context11, function (key) { _defineProperty(target, key, source[key]); }) : _Object$getOwnPropertyDescriptors ? _Object$defineProperties(target, _Object$getOwnPropertyDescriptors(source)) : _forEachInstanceProperty(_context12 = ownKeys(Object(source))).call(_context12, function (key) { _Object$defineProperty(target, key, _Object$getOwnPropertyDescriptor(source, key)); }); } return target; }
|
|
49
|
+
|
|
50
|
+
var htmlScripts$1 = {
|
|
51
|
+
"dataLayer": "window.dataLayer=[{\"gtm.start\":(new Date).getTime(),event:\"gtm.js\"}];",
|
|
52
|
+
"loadingScreen": "window.onAppLoaded=function(){const e=document.querySelector(\"#app-loader\");e&&e.parentNode.removeChild(e)},setTimeout(function(){const e=document.querySelector(\".loading-screen\");e&&e.classList.remove(\"loading-screen--hidden\")},250),setTimeout(function(){const e=document.querySelector(\".long-loading-notice\");e&&e.classList.remove(\"long-loading-notice--hidden\")},2e3);",
|
|
53
|
+
"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
|
+
};
|
|
55
|
+
|
|
56
|
+
var toArray = function toArray(value) {
|
|
57
|
+
return _Array$isArray(value) ? value : [value];
|
|
58
|
+
};
|
|
59
|
+
|
|
60
|
+
var mergeCspDirectives = function mergeCspDirectives() {
|
|
61
|
+
for (var _len = arguments.length, directives = new Array(_len), _key = 0; _key < _len; _key++) {
|
|
62
|
+
directives[_key] = arguments[_key];
|
|
63
|
+
}
|
|
64
|
+
|
|
65
|
+
return _reduceInstanceProperty(directives).call(directives, function (mergedCsp, csp) {
|
|
66
|
+
var _context;
|
|
67
|
+
|
|
68
|
+
return _Object$assign(mergedCsp, _reduceInstanceProperty(_context = _Object$keys(csp)).call(_context, function (acc, directiveKey) {
|
|
69
|
+
var _context2;
|
|
70
|
+
|
|
71
|
+
return _Object$assign(acc, _defineProperty({}, directiveKey, _concatInstanceProperty(_context2 = []).call(_context2, _toConsumableArray(toArray(mergedCsp[directiveKey] ? mergedCsp[directiveKey] : [])), _toConsumableArray(toArray(csp[directiveKey])))));
|
|
72
|
+
}, {}));
|
|
73
|
+
}, {});
|
|
74
|
+
};
|
|
75
|
+
|
|
76
|
+
var toHeaderString = function toHeaderString() {
|
|
77
|
+
var _context3;
|
|
78
|
+
|
|
79
|
+
var directives = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};
|
|
80
|
+
return _mapInstanceProperty(_context3 = _Object$entries(directives)).call(_context3, function (_ref) {
|
|
81
|
+
var _context4;
|
|
82
|
+
|
|
83
|
+
var _ref2 = _slicedToArray(_ref, 2),
|
|
84
|
+
directive = _ref2[0],
|
|
85
|
+
value = _ref2[1];
|
|
86
|
+
|
|
87
|
+
return _concatInstanceProperty(_context4 = "".concat(directive, " ")).call(_context4, _Array$isArray(value) ? value.join(' ') : value);
|
|
88
|
+
}).join('; ');
|
|
89
|
+
};
|
|
90
|
+
|
|
91
|
+
var toStructuredHeaderString = function toStructuredHeaderString() {
|
|
92
|
+
var _context5;
|
|
93
|
+
|
|
94
|
+
var directives = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};
|
|
95
|
+
return _mapInstanceProperty(_context5 = _Object$entries(directives)).call(_context5, function (_ref3) {
|
|
96
|
+
var _context6;
|
|
97
|
+
|
|
98
|
+
var _ref4 = _slicedToArray(_ref3, 2),
|
|
99
|
+
directive = _ref4[0],
|
|
100
|
+
value = _ref4[1];
|
|
101
|
+
|
|
102
|
+
return _concatInstanceProperty(_context6 = "".concat(directive, "=")).call(_context6, _Array$isArray(value) ? value.join(' ') : value);
|
|
103
|
+
}).join(', ');
|
|
104
|
+
};
|
|
105
|
+
|
|
106
|
+
var processHeaders = function processHeaders(applicationConfig) {
|
|
107
|
+
var _context7, _context8, _context9, _applicationConfig$he, _applicationConfig$he2, _applicationConfig$he3, _context10, _applicationConfig$he4, _applicationConfig$he5;
|
|
108
|
+
|
|
109
|
+
var isMcDevEnv = applicationConfig.env.env === 'development'; // List hashes for injected inline scripts.
|
|
110
|
+
// https://developer.mozilla.org/en-US/docs/Web/HTTP/Headers/Content-Security-Policy/script-src
|
|
111
|
+
|
|
112
|
+
var 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
|
+
// // https://developer.mozilla.org/en-US/docs/Web/HTTP/Headers/Content-Security-Policy/style-src
|
|
114
|
+
// const htmlStylesHashes = [createAssetHash(htmlStyles.loadingScreen)];
|
|
115
|
+
|
|
116
|
+
/**
|
|
117
|
+
* Content Security Policy (CSP)
|
|
118
|
+
* https://developer.mozilla.org/en-US/docs/Web/HTTP/Headers/Content-Security-Policy
|
|
119
|
+
*/
|
|
120
|
+
|
|
121
|
+
var cspDirectives = _Object$assign({
|
|
122
|
+
'default-src': "'none'",
|
|
123
|
+
'script-src': _concatInstanceProperty(_context7 = ["'self'", 'www.googletagmanager.com/gtm.js', 'www.google-analytics.com/analytics.js']).call(_context7, isMcDevEnv ? // Allow webpack to load source maps on runtime when errors occur
|
|
124
|
+
// using script tags
|
|
125
|
+
['localhost:*', "'unsafe-inline'"] : _mapInstanceProperty(htmlScriptsHashes).call(htmlScriptsHashes, function (assetHash) {
|
|
126
|
+
return "'".concat(assetHash, "'");
|
|
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:'] : []),
|
|
130
|
+
'img-src': ['*', 'data:'],
|
|
131
|
+
'style-src': _concatInstanceProperty(_context9 = ["'self'", 'fonts.googleapis.com', 'data:']).call(_context9, // TODO: investigate what needs to be done to avoid unsafe-inline styles
|
|
132
|
+
// https://github.com/commercetools/merchant-center-frontend/pull/5223#discussion_r210367636
|
|
133
|
+
["'unsafe-inline'"] // TODO: enable this once we can avoid unsafe-inline
|
|
134
|
+
// htmlStylesHashes.map(assetHash => `'${assetHash}'`)
|
|
135
|
+
),
|
|
136
|
+
'font-src': ["'self'", 'fonts.gstatic.com', 'data:']
|
|
137
|
+
}, isMcDevEnv ? {
|
|
138
|
+
// NOTE: use this instead of `upgrade-insecure-requests` for local
|
|
139
|
+
// development to avoid `http://localhost` requests to be redirected
|
|
140
|
+
// to https.
|
|
141
|
+
'block-all-mixed-content': ''
|
|
142
|
+
} : {
|
|
143
|
+
// NOTE: prefer this over `block-all-mixed-content`.
|
|
144
|
+
// https://youtu.be/j-0Bj40juMI?t=11m47s
|
|
145
|
+
'upgrade-insecure-requests': ''
|
|
146
|
+
} // NOTE: we might want to define further policies in the future, for example
|
|
147
|
+
// - `require-sri-for style script` (at the moment not possible because
|
|
148
|
+
// GTM and Intercom scripts are apparently not meant for this)
|
|
149
|
+
); // Recursively merge the directives
|
|
150
|
+
|
|
151
|
+
|
|
152
|
+
var 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
|
+
return _objectSpread(_objectSpread(_objectSpread(_objectSpread({}, HTTP_SECURITY_HEADERS), {}, {
|
|
154
|
+
// The `Content-Security-Policy` header is always generated
|
|
155
|
+
// based on the Custom Application config.
|
|
156
|
+
'Content-Security-Policy': toHeaderString(mergedCsp)
|
|
157
|
+
}, ((_applicationConfig$he3 = applicationConfig.headers) === null || _applicationConfig$he3 === void 0 ? void 0 : _applicationConfig$he3.strictTransportSecurity) && {
|
|
158
|
+
'Strict-Transport-Security': _concatInstanceProperty(_context10 = [HTTP_SECURITY_HEADERS['Strict-Transport-Security']]).call(_context10, _toConsumableArray(applicationConfig.headers.strictTransportSecurity)).join('; ')
|
|
159
|
+
}), ((_applicationConfig$he4 = applicationConfig.headers) === null || _applicationConfig$he4 === void 0 ? void 0 : _applicationConfig$he4.featurePolicies) && {
|
|
160
|
+
'Feature-Policy': toHeaderString(applicationConfig.headers.featurePolicies)
|
|
161
|
+
}), ((_applicationConfig$he5 = applicationConfig.headers) === null || _applicationConfig$he5 === void 0 ? void 0 : _applicationConfig$he5.permissionsPolicies) && {
|
|
162
|
+
'Permissions-Policy': toStructuredHeaderString(applicationConfig.headers.permissionsPolicies)
|
|
163
|
+
});
|
|
164
|
+
};
|
|
165
|
+
|
|
166
|
+
var htmlScripts = {
|
|
167
|
+
"dataLayer": "window.dataLayer=[{\"gtm.start\":(new Date).getTime(),event:\"gtm.js\"}];",
|
|
168
|
+
"loadingScreen": "window.onAppLoaded=function(){const e=document.querySelector(\"#app-loader\");e&&e.parentNode.removeChild(e)},setTimeout(function(){const e=document.querySelector(\".loading-screen\");e&&e.classList.remove(\"loading-screen--hidden\")},250),setTimeout(function(){const e=document.querySelector(\".long-loading-notice\");e&&e.classList.remove(\"long-loading-notice--hidden\")},2e3);",
|
|
169
|
+
"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)};"
|
|
170
|
+
}; // https://babeljs.io/blog/2017/09/11/zero-config-with-babel-macros
|
|
171
|
+
|
|
172
|
+
var htmlStyles = {
|
|
173
|
+
"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}"
|
|
174
|
+
};
|
|
175
|
+
|
|
176
|
+
var trimTrailingSlash = function trimTrailingSlash(value) {
|
|
177
|
+
return value.replace(/\/$/, '');
|
|
178
|
+
};
|
|
179
|
+
|
|
180
|
+
var getGtmTrackingScript = function getGtmTrackingScript(gtmId) {
|
|
181
|
+
if (!gtmId) return '';
|
|
182
|
+
var url = "https://www.googletagmanager.com/gtm.js?id=".concat(gtmId);
|
|
183
|
+
return "\n<script async type=\"text/javascript\" src=\"".concat(url, "\" referrerpolicy=\"no-referrer\"></script>\n ");
|
|
184
|
+
};
|
|
185
|
+
|
|
186
|
+
var replaceHtmlPlaceholders = function replaceHtmlPlaceholders(indexHtmlContent, options) {
|
|
187
|
+
var _options$headers$Cont, _options$headers;
|
|
188
|
+
|
|
189
|
+
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
|
|
190
|
+
"".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>"));
|
|
191
|
+
};
|
|
192
|
+
|
|
193
|
+
function compileHtml(_x) {
|
|
194
|
+
return _compileHtml.apply(this, arguments);
|
|
195
|
+
}
|
|
196
|
+
|
|
197
|
+
function _compileHtml() {
|
|
198
|
+
_compileHtml = _asyncToGenerator( /*#__PURE__*/_regeneratorRuntime.mark(function _callee(indexHtmlTemplatePath) {
|
|
199
|
+
var applicationConfig, compiledHeaders, indexHtmlTemplateContent, indexHtmlContent;
|
|
200
|
+
return _regeneratorRuntime.wrap(function _callee$(_context) {
|
|
201
|
+
while (1) {
|
|
202
|
+
switch (_context.prev = _context.next) {
|
|
203
|
+
case 0:
|
|
204
|
+
applicationConfig = processConfig();
|
|
205
|
+
compiledHeaders = processHeaders(applicationConfig);
|
|
206
|
+
indexHtmlTemplateContent = fs.readFileSync(indexHtmlTemplatePath, 'utf8');
|
|
207
|
+
indexHtmlContent = replaceHtmlPlaceholders(indexHtmlTemplateContent, {
|
|
208
|
+
env: applicationConfig.env,
|
|
209
|
+
headers: compiledHeaders
|
|
210
|
+
});
|
|
211
|
+
return _context.abrupt("return", {
|
|
212
|
+
env: applicationConfig.env,
|
|
213
|
+
headers: compiledHeaders,
|
|
214
|
+
indexHtmlContent: indexHtmlContent
|
|
215
|
+
});
|
|
216
|
+
|
|
217
|
+
case 5:
|
|
218
|
+
case "end":
|
|
219
|
+
return _context.stop();
|
|
220
|
+
}
|
|
221
|
+
}
|
|
222
|
+
}, _callee);
|
|
223
|
+
}));
|
|
224
|
+
return _compileHtml.apply(this, arguments);
|
|
225
|
+
}
|
|
226
|
+
|
|
227
|
+
export { compileHtml, processHeaders, replaceHtmlPlaceholders };
|
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
import { type ApplicationRuntimeConfig } from '@commercetools-frontend/application-config';
|
|
2
|
+
declare type TCompileHtmlResult = {
|
|
3
|
+
env: ApplicationRuntimeConfig['env'];
|
|
4
|
+
headers: Record<string, string | undefined>;
|
|
5
|
+
indexHtmlContent: string;
|
|
6
|
+
};
|
|
7
|
+
declare function compileHtml(indexHtmlTemplatePath: string): Promise<TCompileHtmlResult>;
|
|
8
|
+
export default compileHtml;
|
|
@@ -0,0 +1,4 @@
|
|
|
1
|
+
export { default as compileHtml } from './compile-html';
|
|
2
|
+
export { default as generateTemplate } from './generate-template';
|
|
3
|
+
export { default as processHeaders } from './process-headers';
|
|
4
|
+
export { default as replaceHtmlPlaceholders } from './replace-html-placeholders';
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
import type { ApplicationRuntimeConfig } from '@commercetools-frontend/application-config';
|
|
2
|
+
declare type TReplaceHtmlPlaceholdersOptions = {
|
|
3
|
+
env: ApplicationRuntimeConfig['env'];
|
|
4
|
+
headers: Record<string, string | undefined>;
|
|
5
|
+
};
|
|
6
|
+
declare const replaceHtmlPlaceholders: (indexHtmlContent: string, options: TReplaceHtmlPlaceholdersOptions) => string;
|
|
7
|
+
export default replaceHtmlPlaceholders;
|
|
@@ -0,0 +1,16 @@
|
|
|
1
|
+
'use strict';
|
|
2
|
+
|
|
3
|
+
// https://babeljs.io/blog/2017/09/11/zero-config-with-babel-macros
|
|
4
|
+
var htmlDocs = {
|
|
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, user-scalable=no\">\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\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/css?family=Open+Sans:300,300i,400,400i,600,600i,700,700i' rel='stylesheet' type='text/css'>\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>"
|
|
6
|
+
};
|
|
7
|
+
|
|
8
|
+
function generateTemplate(_ref) {
|
|
9
|
+
var _ref$cssImports = _ref.cssImports,
|
|
10
|
+
cssImports = _ref$cssImports === void 0 ? [] : _ref$cssImports,
|
|
11
|
+
_ref$scriptImports = _ref.scriptImports,
|
|
12
|
+
scriptImports = _ref$scriptImports === void 0 ? [] : _ref$scriptImports;
|
|
13
|
+
return htmlDocs.application.replace(new RegExp('__APPLICATION_CSS_IMPORTS__', 'g'), cssImports.join('\n')).replace(new RegExp('__APPLICATION_SCRIPT_IMPORTS__', 'g'), scriptImports.join('\n'));
|
|
14
|
+
}
|
|
15
|
+
|
|
16
|
+
exports.generateTemplate = generateTemplate;
|
|
@@ -0,0 +1,16 @@
|
|
|
1
|
+
'use strict';
|
|
2
|
+
|
|
3
|
+
// https://babeljs.io/blog/2017/09/11/zero-config-with-babel-macros
|
|
4
|
+
var htmlDocs = {
|
|
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, user-scalable=no\">\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\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/css?family=Open+Sans:300,300i,400,400i,600,600i,700,700i' rel='stylesheet' type='text/css'>\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>"
|
|
6
|
+
};
|
|
7
|
+
|
|
8
|
+
function generateTemplate(_ref) {
|
|
9
|
+
var _ref$cssImports = _ref.cssImports,
|
|
10
|
+
cssImports = _ref$cssImports === void 0 ? [] : _ref$cssImports,
|
|
11
|
+
_ref$scriptImports = _ref.scriptImports,
|
|
12
|
+
scriptImports = _ref$scriptImports === void 0 ? [] : _ref$scriptImports;
|
|
13
|
+
return htmlDocs.application.replace(new RegExp('__APPLICATION_CSS_IMPORTS__', 'g'), cssImports.join('\n')).replace(new RegExp('__APPLICATION_SCRIPT_IMPORTS__', 'g'), scriptImports.join('\n'));
|
|
14
|
+
}
|
|
15
|
+
|
|
16
|
+
exports.generateTemplate = generateTemplate;
|
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
// https://babeljs.io/blog/2017/09/11/zero-config-with-babel-macros
|
|
2
|
+
var htmlDocs = {
|
|
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, user-scalable=no\">\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\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/css?family=Open+Sans:300,300i,400,400i,600,600i,700,700i' rel='stylesheet' type='text/css'>\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>"
|
|
4
|
+
};
|
|
5
|
+
|
|
6
|
+
function generateTemplate(_ref) {
|
|
7
|
+
var _ref$cssImports = _ref.cssImports,
|
|
8
|
+
cssImports = _ref$cssImports === void 0 ? [] : _ref$cssImports,
|
|
9
|
+
_ref$scriptImports = _ref.scriptImports,
|
|
10
|
+
scriptImports = _ref$scriptImports === void 0 ? [] : _ref$scriptImports;
|
|
11
|
+
return htmlDocs.application.replace(new RegExp('__APPLICATION_CSS_IMPORTS__', 'g'), cssImports.join('\n')).replace(new RegExp('__APPLICATION_SCRIPT_IMPORTS__', 'g'), scriptImports.join('\n'));
|
|
12
|
+
}
|
|
13
|
+
|
|
14
|
+
export { generateTemplate as g };
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@commercetools-frontend/mc-html-template",
|
|
3
|
-
"version": "21.
|
|
3
|
+
"version": "21.5.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": {
|
|
@@ -14,59 +14,34 @@
|
|
|
14
14
|
"publishConfig": {
|
|
15
15
|
"access": "public"
|
|
16
16
|
},
|
|
17
|
-
"main": "
|
|
17
|
+
"main": "dist/commercetools-frontend-mc-html-template.cjs.js",
|
|
18
|
+
"module": "dist/commercetools-frontend-mc-html-template.esm.js",
|
|
19
|
+
"preconstruct": {
|
|
20
|
+
"entrypoints": ["./index.ts", "./webpack-html-template.ts"]
|
|
21
|
+
},
|
|
18
22
|
"files": [
|
|
19
|
-
"
|
|
20
|
-
"html-
|
|
21
|
-
"html-styles",
|
|
23
|
+
"dist",
|
|
24
|
+
"webpack-html-template",
|
|
22
25
|
"webpack.js",
|
|
23
26
|
"package.json",
|
|
24
27
|
"LICENSE",
|
|
25
28
|
"README.md"
|
|
26
29
|
],
|
|
27
|
-
"scripts": {
|
|
28
|
-
"build": "rimraf build && babel src --out-dir build",
|
|
29
|
-
"build:bundles:watch": "yarn build -w"
|
|
30
|
-
},
|
|
31
30
|
"dependencies": {
|
|
32
|
-
"@babel/runtime": "^7.17.
|
|
33
|
-
"@babel/runtime-corejs3": "^7.17.
|
|
34
|
-
"@commercetools-frontend/application-config": "21.
|
|
35
|
-
"@commercetools-frontend/constants": "21.3.
|
|
36
|
-
"core-js": "^3.21.1",
|
|
31
|
+
"@babel/runtime": "^7.17.9",
|
|
32
|
+
"@babel/runtime-corejs3": "^7.17.9",
|
|
33
|
+
"@commercetools-frontend/application-config": "21.5.0",
|
|
34
|
+
"@commercetools-frontend/constants": "21.3.4",
|
|
37
35
|
"serialize-javascript": "6.0.0",
|
|
38
|
-
"uglify-js": "3.15.
|
|
36
|
+
"uglify-js": "3.15.4",
|
|
39
37
|
"uglifycss": "0.0.29"
|
|
40
38
|
},
|
|
41
39
|
"devDependencies": {
|
|
42
|
-
"@
|
|
43
|
-
"@
|
|
44
|
-
"
|
|
40
|
+
"@tsconfig/node14": "^1.0.1",
|
|
41
|
+
"@types/serialize-javascript": "^5.0.2",
|
|
42
|
+
"html-webpack-plugin": "5.5.0"
|
|
45
43
|
},
|
|
46
44
|
"engines": {
|
|
47
45
|
"node": ">=14"
|
|
48
|
-
},
|
|
49
|
-
"babel": {
|
|
50
|
-
"presets": [
|
|
51
|
-
[
|
|
52
|
-
"@babel/preset-env",
|
|
53
|
-
{
|
|
54
|
-
"targets": {
|
|
55
|
-
"node": "14"
|
|
56
|
-
},
|
|
57
|
-
"modules": "commonjs",
|
|
58
|
-
"useBuiltIns": "usage",
|
|
59
|
-
"corejs": 3
|
|
60
|
-
}
|
|
61
|
-
]
|
|
62
|
-
],
|
|
63
|
-
"plugins": [
|
|
64
|
-
[
|
|
65
|
-
"@babel/plugin-transform-runtime",
|
|
66
|
-
{
|
|
67
|
-
"corejs": 3
|
|
68
|
-
}
|
|
69
|
-
]
|
|
70
|
-
]
|
|
71
46
|
}
|
|
72
47
|
}
|
|
@@ -0,0 +1,57 @@
|
|
|
1
|
+
'use strict';
|
|
2
|
+
|
|
3
|
+
Object.defineProperty(exports, '__esModule', { value: true });
|
|
4
|
+
|
|
5
|
+
var _forEachInstanceProperty = require('@babel/runtime-corejs3/core-js-stable/instance/for-each');
|
|
6
|
+
var _indexOfInstanceProperty = require('@babel/runtime-corejs3/core-js-stable/instance/index-of');
|
|
7
|
+
var _mapInstanceProperty = require('@babel/runtime-corejs3/core-js-stable/instance/map');
|
|
8
|
+
var _concatInstanceProperty = require('@babel/runtime-corejs3/core-js-stable/instance/concat');
|
|
9
|
+
var generateTemplate = require('../../dist/generate-template-211c0b41.cjs.dev.js');
|
|
10
|
+
|
|
11
|
+
function _interopDefault (e) { return e && e.__esModule ? e : { 'default': e }; }
|
|
12
|
+
|
|
13
|
+
var _forEachInstanceProperty__default = /*#__PURE__*/_interopDefault(_forEachInstanceProperty);
|
|
14
|
+
var _indexOfInstanceProperty__default = /*#__PURE__*/_interopDefault(_indexOfInstanceProperty);
|
|
15
|
+
var _mapInstanceProperty__default = /*#__PURE__*/_interopDefault(_mapInstanceProperty);
|
|
16
|
+
var _concatInstanceProperty__default = /*#__PURE__*/_interopDefault(_concatInstanceProperty);
|
|
17
|
+
|
|
18
|
+
function webpackHtmlTemplate(templateParams) {
|
|
19
|
+
var _context, _context2, _context3;
|
|
20
|
+
|
|
21
|
+
var cssVendorChunks = [];
|
|
22
|
+
var cssAppChunks = [];
|
|
23
|
+
|
|
24
|
+
_forEachInstanceProperty__default["default"](_context = templateParams.htmlWebpackPlugin.files.css).call(_context, function (file) {
|
|
25
|
+
if (_indexOfInstanceProperty__default["default"](file).call(file, 'vendor') === -1) {
|
|
26
|
+
cssAppChunks.push(file);
|
|
27
|
+
} else {
|
|
28
|
+
cssVendorChunks.push(file);
|
|
29
|
+
}
|
|
30
|
+
});
|
|
31
|
+
|
|
32
|
+
var cssChunks = _mapInstanceProperty__default["default"](_context2 = _concatInstanceProperty__default["default"](cssVendorChunks).call(cssVendorChunks, cssAppChunks)).call(_context2, function (fileName) {
|
|
33
|
+
return fileName.replace(/^\//, '');
|
|
34
|
+
});
|
|
35
|
+
|
|
36
|
+
var scriptChunks = _mapInstanceProperty__default["default"](_context3 = templateParams.htmlWebpackPlugin.files.js).call(_context3, function (fileName) {
|
|
37
|
+
return (// Trim leading slash, the CDN_URL will ensure to have a trailing slash
|
|
38
|
+
// (see `replaceHtmlPlaceholders`)
|
|
39
|
+
fileName.replace(/^\//, '')
|
|
40
|
+
);
|
|
41
|
+
});
|
|
42
|
+
|
|
43
|
+
var cssImports = _mapInstanceProperty__default["default"](cssChunks).call(cssChunks, function (chunkPath) {
|
|
44
|
+
return "<link href=\"__CDN_URL__".concat(chunkPath, "\" rel='stylesheet' type='text/css'>");
|
|
45
|
+
});
|
|
46
|
+
|
|
47
|
+
var scriptImports = _mapInstanceProperty__default["default"](scriptChunks).call(scriptChunks, function (chunkPath) {
|
|
48
|
+
return "<script src=\"__CDN_URL__".concat(chunkPath, "\"></script>");
|
|
49
|
+
});
|
|
50
|
+
|
|
51
|
+
return generateTemplate.generateTemplate({
|
|
52
|
+
cssImports: cssImports,
|
|
53
|
+
scriptImports: scriptImports
|
|
54
|
+
});
|
|
55
|
+
}
|
|
56
|
+
|
|
57
|
+
exports["default"] = webpackHtmlTemplate;
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
'use strict';
|
|
2
|
+
|
|
3
|
+
if (process.env.NODE_ENV === "production") {
|
|
4
|
+
module.exports = require("./commercetools-frontend-mc-html-template-webpack-html-template.cjs.prod.js");
|
|
5
|
+
} else {
|
|
6
|
+
module.exports = require("./commercetools-frontend-mc-html-template-webpack-html-template.cjs.dev.js");
|
|
7
|
+
}
|
|
@@ -0,0 +1,57 @@
|
|
|
1
|
+
'use strict';
|
|
2
|
+
|
|
3
|
+
Object.defineProperty(exports, '__esModule', { value: true });
|
|
4
|
+
|
|
5
|
+
var _forEachInstanceProperty = require('@babel/runtime-corejs3/core-js-stable/instance/for-each');
|
|
6
|
+
var _indexOfInstanceProperty = require('@babel/runtime-corejs3/core-js-stable/instance/index-of');
|
|
7
|
+
var _mapInstanceProperty = require('@babel/runtime-corejs3/core-js-stable/instance/map');
|
|
8
|
+
var _concatInstanceProperty = require('@babel/runtime-corejs3/core-js-stable/instance/concat');
|
|
9
|
+
var generateTemplate = require('../../dist/generate-template-600664a1.cjs.prod.js');
|
|
10
|
+
|
|
11
|
+
function _interopDefault (e) { return e && e.__esModule ? e : { 'default': e }; }
|
|
12
|
+
|
|
13
|
+
var _forEachInstanceProperty__default = /*#__PURE__*/_interopDefault(_forEachInstanceProperty);
|
|
14
|
+
var _indexOfInstanceProperty__default = /*#__PURE__*/_interopDefault(_indexOfInstanceProperty);
|
|
15
|
+
var _mapInstanceProperty__default = /*#__PURE__*/_interopDefault(_mapInstanceProperty);
|
|
16
|
+
var _concatInstanceProperty__default = /*#__PURE__*/_interopDefault(_concatInstanceProperty);
|
|
17
|
+
|
|
18
|
+
function webpackHtmlTemplate(templateParams) {
|
|
19
|
+
var _context, _context2, _context3;
|
|
20
|
+
|
|
21
|
+
var cssVendorChunks = [];
|
|
22
|
+
var cssAppChunks = [];
|
|
23
|
+
|
|
24
|
+
_forEachInstanceProperty__default["default"](_context = templateParams.htmlWebpackPlugin.files.css).call(_context, function (file) {
|
|
25
|
+
if (_indexOfInstanceProperty__default["default"](file).call(file, 'vendor') === -1) {
|
|
26
|
+
cssAppChunks.push(file);
|
|
27
|
+
} else {
|
|
28
|
+
cssVendorChunks.push(file);
|
|
29
|
+
}
|
|
30
|
+
});
|
|
31
|
+
|
|
32
|
+
var cssChunks = _mapInstanceProperty__default["default"](_context2 = _concatInstanceProperty__default["default"](cssVendorChunks).call(cssVendorChunks, cssAppChunks)).call(_context2, function (fileName) {
|
|
33
|
+
return fileName.replace(/^\//, '');
|
|
34
|
+
});
|
|
35
|
+
|
|
36
|
+
var scriptChunks = _mapInstanceProperty__default["default"](_context3 = templateParams.htmlWebpackPlugin.files.js).call(_context3, function (fileName) {
|
|
37
|
+
return (// Trim leading slash, the CDN_URL will ensure to have a trailing slash
|
|
38
|
+
// (see `replaceHtmlPlaceholders`)
|
|
39
|
+
fileName.replace(/^\//, '')
|
|
40
|
+
);
|
|
41
|
+
});
|
|
42
|
+
|
|
43
|
+
var cssImports = _mapInstanceProperty__default["default"](cssChunks).call(cssChunks, function (chunkPath) {
|
|
44
|
+
return "<link href=\"__CDN_URL__".concat(chunkPath, "\" rel='stylesheet' type='text/css'>");
|
|
45
|
+
});
|
|
46
|
+
|
|
47
|
+
var scriptImports = _mapInstanceProperty__default["default"](scriptChunks).call(scriptChunks, function (chunkPath) {
|
|
48
|
+
return "<script src=\"__CDN_URL__".concat(chunkPath, "\"></script>");
|
|
49
|
+
});
|
|
50
|
+
|
|
51
|
+
return generateTemplate.generateTemplate({
|
|
52
|
+
cssImports: cssImports,
|
|
53
|
+
scriptImports: scriptImports
|
|
54
|
+
});
|
|
55
|
+
}
|
|
56
|
+
|
|
57
|
+
exports["default"] = webpackHtmlTemplate;
|