mirror of
https://github.com/tsl0922/ttyd.git
synced 2025-12-24 20:54:21 +01:00
* 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>
69 lines
1.8 KiB
JavaScript
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/'));
|
|
})
|
|
);
|