@newlogic-digital/core 0.9.14 → 1.0.0-beta.3

Sign up to get free protection for your applications and to get access to all the features.
Files changed (36) hide show
  1. package/README.md +15 -45
  2. package/index.js +262 -43
  3. package/package.json +13 -57
  4. package/LICENSE +0 -674
  5. package/modules/Core.js +0 -626
  6. package/modules/Emails.js +0 -110
  7. package/modules/Icons.js +0 -140
  8. package/modules/Scripts.js +0 -321
  9. package/modules/Serve.js +0 -124
  10. package/modules/Styles.js +0 -298
  11. package/modules/Templates.js +0 -477
  12. package/modules/Utils.js +0 -299
  13. package/modules/Watch.js +0 -75
  14. package/modules/tailwind/index.cjs +0 -84
  15. package/modules/tailwind/index.js +0 -75
  16. package/packages/gulp-clean-css/LICENSE +0 -20
  17. package/packages/gulp-clean-css/README.md +0 -79
  18. package/packages/gulp-clean-css/index.js +0 -66
  19. package/packages/gulp-clean-css/package.json +0 -68
  20. package/packages/gulp-twig2html/CHANGELOG.md +0 -77
  21. package/packages/gulp-twig2html/LICENSE +0 -22
  22. package/packages/gulp-twig2html/README.md +0 -112
  23. package/packages/gulp-twig2html/index.js +0 -30
  24. package/packages/gulp-twig2html/package.json +0 -47
  25. package/packages/postcss-inset/CHANGELOG.md +0 -5
  26. package/packages/postcss-inset/LICENSE.md +0 -106
  27. package/packages/postcss-inset/README.md +0 -121
  28. package/packages/postcss-inset/index.cjs.js +0 -49
  29. package/packages/postcss-inset/index.es.mjs +0 -47
  30. package/packages/postcss-inset/index.js +0 -47
  31. package/packages/postcss-inset/package.json +0 -58
  32. package/packages/twig-renderer/CHANGELOG.md +0 -66
  33. package/packages/twig-renderer/LICENSE +0 -22
  34. package/packages/twig-renderer/README.md +0 -93
  35. package/packages/twig-renderer/package.json +0 -49
  36. package/packages/twig-renderer/twig-renderer.js +0 -90
package/modules/Emails.js DELETED
@@ -1,110 +0,0 @@
1
- import lazypipe from "lazypipe";
2
- import gulpif from "gulp-if";
3
- import postcss from "gulp-postcss";
4
- import autoprefixer from "autoprefixer";
5
- import twig from "../packages/gulp-twig2html/index.js";
6
- import gulp from "gulp";
7
- import fs from "fs";
8
- import {Config, Modules, Templates, Utils, root} from "./Core.js";
9
-
10
- export class Emails {
11
- async build() {
12
- const inlineCss = (await import('gulp-inline-css')).default;
13
- const replace = (await import('gulp-replace')).default;
14
- const rename = (await import('gulp-rename')).default;
15
- const postcssCustomProperties = (await import('postcss-custom-properties')).default;
16
-
17
- const inlineCssOpt = {
18
- applyStyleTags: true,
19
- applyLinkTags: true,
20
- removeStyleTags: Config.emails.inlineOnly
21
- }
22
-
23
- const buildCss = lazypipe().pipe(() => gulpif("*.css", postcss(new Utils().postcssPluginsEmails(Config.emails.postcss, [postcssCustomProperties({
24
- preserve: false
25
- }), autoprefixer])))
26
- ).pipe(() => gulpif("*.less", Modules.less.module()))
27
-
28
- return new Promise(resolve => {
29
- let twigFiles = "*.twig";
30
- let hbsFiles = "*.hbs";
31
-
32
- if (Config.emails.format === "twig") {
33
- twigFiles = twigFiles.replace("twig", "{twig,latte,tpl}")
34
- } else if (Config.emails.format === "hbs") {
35
- hbsFiles = hbsFiles.replace("hbs", "{hbs,latte,tpl}")
36
- }
37
-
38
- const build = lazypipe().pipe(() => gulpif(twigFiles, twig({
39
- functions: new Templates().functions,
40
- filters: new Templates().filters,
41
- extensions: new Templates().tags
42
- })))
43
- .pipe(() => gulpif(hbsFiles, Modules.hbs.module(`${root + Config.paths.input.emails}/**/*.hbs`, Modules.hbs.helpers(Object.assign(new Templates().filters, new Templates().functions)))))
44
- .pipe(() => gulpif("*.{hbs,twig}", rename({ extname: ".html" })))
45
-
46
- gulp.series(
47
- function styles() {
48
- return gulp.src(root + Config.paths.input.emails + '/*.{css,less}')
49
- .pipe(buildCss())
50
- .pipe(gulp.dest(root + Config.paths.temp + "/emails"));
51
- },
52
- function templates() {
53
- return gulp.src(root + Config.paths.input.emails + '/*.{hbs,twig,tpl,latte}')
54
- .pipe(build())
55
- .pipe(replace('<table', '<table border="0" cellpadding="0" cellspacing="0"'))
56
- .pipe(inlineCss(inlineCssOpt))
57
- .pipe(gulpif(Config.emails.removeClasses,replace(/class="([A-Za-z0-9 _]*)"/g, '')))
58
- .pipe(gulpif(("*.html"), gulp.dest(root + Config.paths.output.emails)))
59
- .pipe(gulpif("*.{latte,tpl}", gulp.dest(root + Config.paths.output.emailsWww)))
60
- }
61
- )(resolve)
62
- })
63
- }
64
- zip() {
65
- return new Promise(async (resolve) => {
66
- const AdmZip = (await import('adm-zip')).default;
67
-
68
- let files = fs.readdirSync(root + Config.paths.output.emails);
69
- let prefixes = Config.emails.zipPrefix;
70
-
71
- function zipFile(file, imageSubfolder) {
72
- let zip = new AdmZip();
73
-
74
- if (typeof imageSubfolder !== "undefined" && fs.existsSync(`${root + Config.paths.output.emailsImg}/${imageSubfolder}`)) {
75
- if (imageSubfolder.endsWith("-")) {
76
- imageSubfolder.slice(0, imageSubfolder.length - 1)
77
- }
78
- imageSubfolder = "/" + imageSubfolder
79
- } else {
80
- imageSubfolder = ""
81
- }
82
-
83
- zip.addFile("index.html", fs.readFileSync(`${root + Config.paths.output.emails}/${file}`));
84
- zip.toBuffer();
85
-
86
- if (fs.existsSync(`${root + Config.paths.output.emailsImg}${imageSubfolder}`)) {
87
- zip.addLocalFolder(`${root + Config.paths.output.emailsImg}${imageSubfolder}`, `images${imageSubfolder}`);
88
- }
89
-
90
- zip.writeZip(`${root + Config.paths.output.emails}/${file.replace(".html", ".zip")}`);
91
- }
92
-
93
- files.forEach((file) => {
94
- if (file.endsWith(".html")) {
95
- if (Config.emails.zipPrefix) {
96
- prefixes.filter((prefix) => {
97
- if (file.startsWith(prefix)) {
98
- zipFile(file, prefix);
99
- }
100
- });
101
- } else {
102
- zipFile(file);
103
- }
104
- }
105
- });
106
-
107
- resolve();
108
- })
109
- }
110
- }
package/modules/Icons.js DELETED
@@ -1,140 +0,0 @@
1
- import path from "path";
2
- import fs from "fs";
3
- import lazypipe from "lazypipe";
4
- import gulpif from "gulp-if";
5
- import postcss from "gulp-postcss";
6
- import autoprefixer from "autoprefixer";
7
- import gulp from "gulp";
8
- import plumber from "gulp-plumber";
9
- import {Config, Functions, Modules, Utils, root} from "./Core.js";
10
-
11
- export class Icons {
12
- async fetch() {
13
- const http = (await import("https")).default;
14
-
15
- return new Promise((resolve, reject) => {
16
- if (Config.icons.local === true || Config.local === true) {
17
- resolve();
18
- }
19
-
20
- if (typeof Config.icons.name === "undefined" || Config.icons.name === "") {
21
- Config.icons.name = path.basename(path.resolve(root));
22
- }
23
-
24
- let files = [
25
- `https://i.icomoon.io/public/${Config.icons.id}/${Config.icons.name}/variables.less`,
26
- `https://i.icomoon.io/public/${Config.icons.id}/${Config.icons.name}/style.less`,
27
- `https://i.icomoon.io/public/${Config.icons.id}/${Config.icons.name}/selection.json`
28
- ]
29
-
30
- if (!fs.existsSync(root + Config.paths.input.icons)) {
31
- fs.mkdirSync(root + Config.paths.input.icons);
32
- }
33
-
34
- let variables = {};
35
-
36
- Promise.allSettled(files.map(async (url) => {
37
- let name = url.substring(url.indexOf(Config.icons.name) + Config.icons.name.length, url.length).replace("/","");
38
-
39
- return new Promise((resolveFile, rejectFile) => {
40
- http.get(url, response => {
41
- if (response.statusCode === 200) {
42
- if ((name === "variables.less" || name === "style.less") && Config.icons.format !== "less") {
43
- response.setEncoding('utf8');
44
- let body = "";
45
- response.on('data', chunk => body += chunk);
46
- response.on('end', () => {
47
-
48
- if (name === "variables.less") {
49
- body.match(/@(.+);/gm).filter(variable => {
50
- let match = variable.match(/@(.+): "(.+)";/);
51
-
52
- variables[match[1]] = match[2]
53
- })
54
-
55
- body = `:root {${Object.keys(variables).map(variable => `--${variable}: "${variables[variable]}";\n`).join("")}}`;
56
-
57
- fs.writeFile(`${root + Config.paths.input.icons}/variables.css`, body, resolveFile);
58
- }
59
-
60
- if (name === "style.less") {
61
- body = body.replace(`@import "variables";`, `@import "variables.css";`)
62
-
63
- fs.writeFile(`${root + Config.paths.input.icons}/iconfont.css`, body, resolveFile)
64
- }
65
- });
66
-
67
- } else if (name === "style.less" && Config.icons.format === "less") {
68
- response.pipe(fs.createWriteStream(`${root + Config.paths.input.icons}/iconfont.less`)).on("close", resolveFile);
69
- } else {
70
- response.pipe(fs.createWriteStream(`${root + Config.paths.input.icons}/${name}`)).on("close", resolveFile);
71
- }
72
- } else {
73
- console.error("\x1b[31m", `Error: ${url} returns ${response.statusCode}`, "\x1b[0m");
74
- rejectFile()
75
- }
76
- });
77
- })
78
- })).then(result => {
79
- if (result[0].status !== "rejected") {
80
- if (fs.existsSync(`${root + Config.paths.input.icons}/iconfont.css`)) {
81
- let file = fs.readFileSync(`${root + Config.paths.input.icons}/iconfont.css`).toString();
82
-
83
- Object.keys(variables).map(variable => {
84
- file = file.replace(new RegExp(`@{${variable}}`, 'g'), `${variables[variable]}`)
85
- file = file.replace(`@${variable}`, `var(--${variable})`)
86
- })
87
-
88
- file = file.replace(new RegExp('-"]', 'g'), '-"]:before')
89
- file = file.replace('!important;', ';')
90
-
91
- fs.writeFileSync(`${root + Config.paths.input.icons}/iconfont.css`, file);
92
- }
93
-
94
- if (fs.existsSync(`${root + Config.paths.input.icons}/iconfont.less`)) {
95
- let file = fs.readFileSync(`${root + Config.paths.input.icons}/iconfont.less`).toString();
96
-
97
- file = file.replace(new RegExp('-"]', 'g'), '-"]:before')
98
- file = file.replace('!important;', ';')
99
-
100
- fs.writeFileSync(`${root + Config.paths.input.icons}/iconfont.less`, file);
101
- }
102
-
103
- console.log("\x1b[34m", `Icomoon demo - https://i.icomoon.io/public/reference.html#/${Config.icons.id}/${Config.icons.name}/`, "\x1b[0m");
104
- resolve();
105
- } else {
106
- console.error("\x1b[31m", `Is project added in icomoon.app, has the correct name or is quick usage enabled?`, "\x1b[0m");
107
- reject();
108
- }
109
- })
110
- })
111
- }
112
- async build() {
113
- const replace = (await import('gulp-replace')).default;
114
- const cleanCSS = (await import("../packages/gulp-clean-css/index.js")).default;
115
- const rename = (await import('gulp-rename')).default;
116
- const revision = (await import("gulp-rev")).default;
117
-
118
- const rev = lazypipe().pipe(revision).pipe(Functions.revUpdate, true, "icons");
119
-
120
- const clean = lazypipe().pipe(cleanCSS);
121
-
122
- const build = lazypipe().pipe(() => gulpif("*.css", postcss(new Utils().postcssPlugins(Config.icons.postcss, [autoprefixer])))
123
- ).pipe(() => gulpif("*.less", Modules.less.module()))
124
-
125
- return gulp.src(`${root + Config.paths.input.icons}/iconfont.{css,less}`)
126
- .pipe(plumber(Functions.plumber))
127
- .pipe(rename(function(path){
128
- path.basename = Config.icons.filename;
129
- }))
130
- .pipe(build())
131
- .pipe(gulpif(Config.icons.revision, rev()))
132
- .pipe(gulpif(Config.icons.optimizations, clean()))
133
- .pipe(gulp.dest(root + Config.paths.output.icons))
134
- .pipe(revision.manifest(root + Config.paths.output.icons + "/rev-manifest.json",{
135
- merge: true,
136
- base: root + Config.paths.output.icons
137
- }))
138
- .pipe(gulp.dest(root + Config.paths.output.icons));
139
- }
140
- }
@@ -1,321 +0,0 @@
1
- import fs from "fs";
2
- import fse from "fs-extra";
3
- import lodash from "lodash";
4
- import {Config, Functions, root} from "./Core.js";
5
-
6
- export class Scripts {
7
- importResolution() {
8
- return new Promise(resolve => {
9
- Config.scripts.importResolution.directories.map(directory => {
10
- if (!fs.existsSync(`${root + Config.paths.input.scripts}/${directory}`)) {
11
- console.log("\x1b[31m", `importResolution - ${Config.paths.input.scripts}/${directory} doesn't exists`, "\x1b[0m");
12
- return false;
13
- }
14
-
15
- let items = fs.readdirSync(`${root + Config.paths.input.scripts}/${directory}`);
16
-
17
- function findPaths(items, directory) {
18
- let imports = "";
19
-
20
- items.map(item => {
21
- let path = `${directory}/${item}`;
22
-
23
- if (fs.statSync(path).isFile()) {
24
- if (path.includes(".js") && !path.includes(Config.scripts.importResolution.filename)) {
25
- if (fs.readFileSync(path).toString().includes("export default")) {
26
- imports = imports + `export { default as ${item.replace(".js","")} } from './${item}'\r\n`
27
- } else {
28
- imports = imports + `import './${item}'\r\n`
29
- }
30
- }
31
- } else {
32
- if (Config.scripts.importResolution.subDir) {
33
- imports = imports + `import '${item}/${Config.scripts.importResolution.filename}'\r\n`
34
- }
35
- findPaths(fs.readdirSync(path), path);
36
- }
37
- });
38
-
39
- let path = `${directory}/${Config.scripts.importResolution.filename}`;
40
-
41
- if (fs.existsSync(path) && fs.readFileSync(path).toString() !== imports || !fs.existsSync(path)) {
42
- fs.writeFileSync(path, imports);
43
- }
44
- }
45
-
46
- findPaths(items, `${root + Config.paths.input.scripts}/${directory}`);
47
- });
48
-
49
- resolve();
50
- });
51
- }
52
- async concat() {
53
- const gulp = (await import("gulp")).default;
54
- const plumber = (await import("gulp-plumber")).default;
55
- const lazypipe = (await import("lazypipe")).default;
56
- const gulpif = (await import("gulp-if")).default;
57
- const through = (await import("through2")).default;
58
- const revision = (await import("gulp-rev")).default;
59
- const revRewrite = (await import("gulp-rev-rewrite")).default;
60
- const terser = (await import("terser"));
61
-
62
- function minify() {
63
- return through.obj((file, enc, cb) => {
64
- if (file.isNull()) {
65
- cb(null, file);
66
- }
67
- if (file.isBuffer()) {
68
- terser.minify(file.contents.toString()).then(function (result) {
69
- file.contents = Buffer.from(result.code);
70
- cb(null, file);
71
- });
72
- }
73
- });
74
- }
75
-
76
- const rev = lazypipe().pipe(revision).pipe(Functions.revUpdate, true, "scripts")
77
- .pipe(revRewrite, {manifest: fs.existsSync(`${root + Config.paths.output.assets}/rev-manifest.json`) ? fs.readFileSync(`${root + Config.paths.output.assets}/rev-manifest.json`) : ""});
78
-
79
- return new Promise(resolve => {
80
- gulp.src(Config.scripts.concat)
81
- .pipe(plumber(Functions.plumber))
82
- .pipe(Functions.module("gulp-js-import-file", {
83
- hideConsole: true,
84
- importStack: false,
85
- es6import: true
86
- }))
87
- .pipe(Functions.revRewriteOutput())
88
- .pipe(gulpif(Config.scripts.legacy, Functions.module("gulp-babel")))
89
- .pipe(gulpif(Config.scripts.optimizations, minify()))
90
- .pipe(gulpif(Config.scripts.revision, rev()))
91
- .pipe(gulp.dest(root + Config.paths.output.scripts))
92
- .pipe(revision.manifest(root + Config.paths.output.scripts + "/rev-manifest.json",{
93
- merge: true,
94
- base: root + Config.paths.output.scripts
95
- }))
96
- .pipe(gulp.dest(root + Config.paths.output.scripts))
97
- .on('error', Functions.plumber.errorHandler)
98
- .on('end', resolve);
99
- })
100
- }
101
- async build() {
102
- const {rollup} = await import('rollup');
103
- const {nodeResolve} = await import('@rollup/plugin-node-resolve');
104
- const commonjs = (await import('@rollup/plugin-commonjs')).default;
105
- const {terser} = await import('rollup-plugin-terser');
106
- const {rollupImportMapPlugin} = (await import('rollup-plugin-import-map'));
107
- const replace = (await import('@rollup/plugin-replace')).default;
108
-
109
- return new Promise(resolve => {
110
- fse.removeSync(root + Config.paths.output.scripts);
111
-
112
- const hashManifest = function(opts = {}) {
113
- const defaults = {
114
- path: root + Config.paths.output.scripts
115
- };
116
-
117
- opts = Object.assign({}, defaults, opts);
118
- let inputs;
119
-
120
- return {
121
- options({ input }) {
122
- inputs = input;
123
- if (typeof inputs === "string") {
124
- inputs = [inputs];
125
- }
126
- if (typeof inputs === "object") {
127
- inputs = Object.values(inputs);
128
- }
129
- },
130
- generateBundle(_outputOptions, bundle) {
131
- let map = {};
132
- return Promise.all(inputs.map(id => this.resolve(id))).then(
133
- resolvedInputs => {
134
- for (const key of Object.keys(bundle)) {
135
- const idx = resolvedInputs.findIndex(
136
- input => input.id in (bundle[key].modules || {})
137
- );
138
- if (idx !== -1) {
139
- const name = inputs[idx].split("/")[inputs[idx].split("/").length - 1];
140
- map[name] = bundle[key].fileName;
141
- }
142
- }
143
-
144
- if (fs.existsSync(opts.path + "/rev-manifest.json")) {
145
- map = Object.assign(JSON.parse(fs.readFileSync(opts.path + "/rev-manifest.json").toString()), map);
146
- }
147
-
148
- fs.writeFileSync(opts.path + "/rev-manifest.json", JSON.stringify(map, null, " "));
149
- }
150
- );
151
- }
152
- };
153
- }
154
-
155
- let assetsManifest = fs.existsSync(`${root + Config.paths.output.assets}/rev-manifest.json`) ? JSON.parse(fs.readFileSync(`${root + Config.paths.output.assets}/rev-manifest.json`).toString()) : {};
156
- let importMapFile = fs.existsSync(`${root + Config.paths.output.root}/importmap.json`) ? JSON.parse(fs.readFileSync(`${root + Config.paths.output.root}/importmap.json`).toString()) : {};
157
- let files = fs.readdirSync(root + Config.paths.input.scripts);
158
-
159
- if (!fs.existsSync(root + Config.paths.output.scripts)){
160
- fs.mkdirSync(root + Config.paths.output.scripts);
161
- }
162
-
163
- Config.scripts.concat.map(file => lodash.pull(files, file.substr(file.lastIndexOf("/") + 1, file.length)))
164
-
165
- Promise.all(files.map(async file => {
166
- if (!fs.statSync(`${root + Config.paths.input.scripts}/${file}`).isDirectory()) {
167
- await (async() => {
168
-
169
- const inputOptions = {
170
- context: 'window',
171
- preserveEntrySignatures: true,
172
- plugins: [
173
- (Config.serve.mode === "" || Config.paths.output.rewrite) && replace({
174
- preventAssignment: true,
175
- values: {
176
- '/* @vite-ignore */': ''
177
- },
178
- delimiters: ['', '']
179
- }),
180
- (Config.scripts.importMap.build && typeof importMapFile["imports"] !== "undefined") && rollupImportMapPlugin(importMapFile),
181
- !Config.scripts.importMap.build && nodeResolve({
182
- browser: true
183
- }),
184
- !Config.scripts.importMap.build && commonjs(),
185
- replace({
186
- preventAssignment: true,
187
- values: Object.assign({
188
- 'process.env.NODE_ENV': JSON.stringify('production'),
189
- [Config.paths.input.assets]: `${Config.paths.output.assets.replace(Config.paths.output.root + "/", Config.paths.base.length > 0 ? Config.paths.base + "/" : "")}`
190
- }, assetsManifest)
191
- }),
192
- Config.scripts.optimizations && terser(),
193
- Config.scripts.revision && hashManifest()
194
- ]
195
- };
196
-
197
- const outputOptions = {
198
- dir: root + Config.paths.output.scripts,
199
- format: 'es',
200
- sourcemap: false,
201
- compact: true,
202
- entryFileNames: `[name]${Config.scripts.revision ? ".[hash]" : ""}.js`,
203
- chunkFileNames: '[name].[hash].js'
204
- };
205
-
206
- const bundle = await rollup(Object.assign({input: root + Config.paths.input.scripts + '/' + file}, inputOptions));
207
-
208
- await bundle.write(outputOptions);
209
-
210
- await bundle.close();
211
- })();
212
-
213
- Config.scripts.legacy && await (async() => {
214
-
215
- const {getBabelOutputPlugin} = await import('@rollup/plugin-babel');
216
-
217
- const inputOptions = {
218
- context: 'window',
219
- preserveEntrySignatures: false,
220
- plugins: [
221
- (Config.serve.mode === "" || Config.paths.output.rewrite) && replace({
222
- preventAssignment: true,
223
- values: {
224
- '/* @vite-ignore */': ''
225
- },
226
- delimiters: ['', '']
227
- }),
228
- nodeResolve({
229
- browser: true
230
- }),
231
- commonjs(),
232
- replace({
233
- preventAssignment: true,
234
- values: Object.assign({
235
- 'process.env.NODE_ENV': JSON.stringify('production')
236
- }, assetsManifest)
237
- }),
238
- Config.scripts.revision && hashManifest({path: root + Config.paths.output.scripts + "/es5/"})
239
- ]
240
- };
241
-
242
- const outputOptions = {
243
- dir: root + Config.paths.output.scripts + "/es5/",
244
- format: 'es',
245
- sourcemap: false,
246
- compact: true,
247
- entryFileNames: `[name]${Config.scripts.revision ? ".[hash]" : ""}.js`,
248
- chunkFileNames: '[name].[hash].js',
249
- plugins: [
250
- getBabelOutputPlugin({
251
- presets: [['@babel/env', { modules: 'amd',
252
- targets: {
253
- "ie": "11"
254
- },
255
- useBuiltIns: 'entry',
256
- corejs: "3.8"
257
- }]]
258
- }),
259
- ]
260
- };
261
-
262
- if (!fs.existsSync(root + Config.paths.output.scripts + "/es5")){
263
- fs.mkdirSync(root + Config.paths.output.scripts + "/es5");
264
- }
265
-
266
- const bundle = await rollup(Object.assign({input: root + Config.paths.input.scripts + `/${file}`}, inputOptions));
267
-
268
- await bundle.write(outputOptions);
269
-
270
- await bundle.close();
271
- })();
272
- }
273
- })).then(async () => {
274
- Config.scripts.legacy && await (async() => {
275
- let polyfills = "";
276
-
277
- if (typeof Config.scripts.polyfillUrls !== "undefined") {
278
- Config.scripts.polyfillUrls.map((script) => {
279
- polyfills = polyfills.concat(`document.write('<script src="${script}"><\\/script>');`)
280
- });
281
- }
282
-
283
- fs.writeFileSync(root + Config.paths.temp + `/polyfills.js`, Functions.stripIndent(`
284
- document.write('<script src="https://polyfill.io/v3/polyfill.min.js?features=${Config.scripts.polyfillFeatures}"><\\/script>');
285
- document.write('<script src="https://cdn.jsdelivr.net/npm/whatwg-fetch@3.5.0/dist/fetch.umd.min.js"><\\/script>');
286
- document.write('<script src="https://cdn.jsdelivr.net/npm/regenerator-runtime@0.13.7/runtime.min.js"><\\/script>');
287
- document.write('<script src="https://cdn.jsdelivr.net/npm/requirejs@2.3.6/require.min.js"><\\/script>');
288
- ${polyfills}
289
- `).replace(/^\s*\n/g, ""));
290
-
291
- const inputOptions = {
292
- context: 'window',
293
- preserveEntrySignatures: false,
294
- plugins: [
295
- Config.scripts.revision && hashManifest({path: root + Config.paths.output.scripts + "/es5/"})
296
- ]
297
- };
298
-
299
- const outputOptions = {
300
- dir: root + Config.paths.output.scripts + "/es5/",
301
- format: 'es',
302
- sourcemap: false,
303
- compact: true,
304
- entryFileNames: `[name]${Config.scripts.revision ? ".[hash]" : ""}.js`
305
- };
306
- const bundle = await rollup(Object.assign({input: root + Config.paths.temp + `/polyfills.js`}, inputOptions));
307
-
308
- await bundle.write(outputOptions);
309
-
310
- await bundle.close();
311
- })();
312
-
313
- if (Config.scripts.concat.length > 0) {
314
- await new Scripts().concat();
315
- }
316
-
317
- resolve();
318
- });
319
- });
320
- }
321
- }