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

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.
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
- }