Files
ttyd/html/gulpfile.js
Michael Lorant 09e7fd8148 html: upgrade to xterm 5.4.0 (#1303)
* html: Upgrade xterm.js

Upgrade xterm.js to the latest stable release.

As part of this upgrade, the xterm packages have been scoped as the
unscoped packages were not updated.

The addons have also been upgraded to match the compatible versions.

As part of this upgrade, a compatibility issue was identified with the
Gulp task to inline source. By disabling compression, this allowed the
task to complete successfully. The size of the source file `html.h` did
not change significantly which indicates compression was not being
applied previously.

Signed-off-by: Michael Lorant <michael.lorant@nine.com.au>

* html: rebuild header file

---------

Signed-off-by: Michael Lorant <michael.lorant@nine.com.au>
Co-authored-by: Shuanglei Tao <tsl0922@gmail.com>
2024-03-05 10:35:02 +08:00

69 lines
1.8 KiB
JavaScript

const { src, dest, task, series } = require('gulp');
const clean = require('gulp-clean');
const gzip = require('gulp-gzip');
const inlineSource = require('gulp-inline-source');
const rename = require('gulp-rename');
const through2 = require('through2');
const genHeader = (size, buf, len) => {
let idx = 0;
let data = 'unsigned char index_html[] = {\n ';
for (const value of buf) {
idx++;
const current = value < 0 ? value + 256 : value;
data += '0x';
data += (current >>> 4).toString(16);
data += (current & 0xf).toString(16);
if (idx === len) {
data += '\n';
} else {
data += idx % 12 === 0 ? ',\n ' : ', ';
}
}
data += '};\n';
data += `unsigned int index_html_len = ${len};\n`;
data += `unsigned int index_html_size = ${size};\n`;
return data;
};
let fileSize = 0;
task('clean', () => {
return src('dist', { read: false, allowEmpty: true }).pipe(clean());
});
task('inline', () => {
const options = {
compress: false,
};
return src('dist/index.html').pipe(inlineSource(options)).pipe(rename('inline.html')).pipe(dest('dist/'));
});
task(
'default',
series('inline', () => {
return src('dist/inline.html')
.pipe(
through2.obj((file, enc, cb) => {
fileSize = file.contents.length;
return cb(null, file);
})
)
.pipe(gzip())
.pipe(
through2.obj((file, enc, cb) => {
const buf = file.contents;
file.contents = Buffer.from(genHeader(fileSize, buf, buf.length));
return cb(null, file);
})
)
.pipe(rename('html.h'))
.pipe(dest('../src/'));
})
);