-
-
Notifications
You must be signed in to change notification settings - Fork 6
/
Copy pathgulpfile.js
90 lines (83 loc) · 2.58 KB
/
gulpfile.js
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
/*eslint-env node*/
const fs = require('fs');
const readline = require('readline');
const gulp = require('gulp');
const del = require('del');
const include = require('gulp-include');
const rename = require('gulp-rename');
const replace = require('gulp-replace');
const minify = require('gulp-minify');
// Copy files of the project
gulp.task('copy', () => {
return gulp.src('src/*').pipe(gulp.dest('dist'));
});
// Clear the dist folder
gulp.task('del', () => {
return del('dist/*');
});
gulp.task('sdk', async () => {
const copyright = await new Promise((resolve) => {
let lines = [];
let lineReader = readline.createInterface({
input: require('fs').createReadStream(__dirname + '/src-sdk/aws-sdk.js'),
});
lineReader.on('line', (line) => {
if (/^\/\//.test(line)) {
lines.push(line);
} else {
lineReader.close();
lineReader.removeAllListeners();
resolve(lines);
}
});
})
.then((data) => data.join('\n') + '\n')
.catch((err) => console.error(err));
return gulp
.src('./src-sdk/aws-sdk.template.js')
.pipe(include())
.on('error', console.log)
.pipe(
replace(/(AWS.XHRClient = AWS\.util\.inherit)/, (match, p1, offset) => {
const data = fs.readFileSync('./src-sdk/xhrClient.part.js', { encoding: 'utf8', flag: 'r' });
console.log('xhrClient: Inserted ' + data.length + ' bytes at offset ' + offset);
return data + p1;
}),
)
.pipe(
replace(/(AWS.HttpClient.prototype = AWS\.XHRClient\.prototype;)/, (match, p1, offset) => {
const data = fs.readFileSync('./src-sdk/httpClient.part.js', { encoding: 'utf8', flag: 'r' });
console.log('httpClient: Inserted ' + data.length + ' bytes at offset ' + offset);
return data;
}),
)
.pipe(
replace(/(if \(window.ActiveXObject\))/, (match, p1, offset) => {
const data = fs.readFileSync('./src-sdk/xmlParser.part.js', { encoding: 'utf8', flag: 'r' });
console.log('xmlParser: Inserted ' + data.length + ' bytes at offset ' + offset);
return data + ' else ' + p1;
}),
)
.pipe(
minify({
noSource: true,
ext: {
src: '.js',
min: '.js',
},
mangle: false,
compress: {
// drop_console: true,
},
output: {
// beautify: true,
// indent_level: 2,
},
}),
)
.pipe(replace(/^/, copyright))
.pipe(rename('AwsSdk.js'))
.pipe(gulp.dest('dist'));
});
// The default task of gulp
gulp.task('default', gulp.series('del', 'copy', 'sdk'));