UNPKG

3.91 kBJavaScriptView Raw
1const generate = require('videojs-generate-rollup-config');
2const worker = require('rollup-plugin-worker-factory');
3const {terser} = require('rollup-plugin-terser');
4const createTestData = require('./create-test-data.js');
5const replace = require('@rollup/plugin-replace');
6const strip = require('@rollup/plugin-strip');
7
8const CI_TEST_TYPE = process.env.CI_TEST_TYPE || '';
9
10let syncWorker;
11// see https://github.com/videojs/videojs-generate-rollup-config
12// for options
13const options = {
14 input: 'src/videojs-http-streaming.js',
15 distName: 'videojs-http-streaming',
16 excludeCoverage(defaults) {
17 defaults.push(/^rollup-plugin-worker-factory/);
18 defaults.push(/^create-test-data!/);
19
20 return defaults;
21 },
22 globals(defaults) {
23 defaults.browser['@xmldom/xmldom'] = 'window';
24 defaults.test['@xmldom/xmldom'] = 'window';
25 return defaults;
26 },
27 externals(defaults) {
28 return Object.assign(defaults, {
29 module: defaults.module.concat([
30 'aes-decrypter',
31 'm3u8-parser',
32 'mpd-parser',
33 'mux.js',
34 '@videojs/vhs-utils'
35 ])
36 });
37 },
38 plugins(defaults) {
39 // add worker and createTestData to the front of plugin lists
40 defaults.module.unshift('worker');
41 defaults.browser.unshift('worker');
42 // change this to `syncWorker` for syncronous web worker
43 // during unit tests
44 if (CI_TEST_TYPE === 'coverage') {
45 defaults.test.unshift('syncWorker');
46 } else {
47 defaults.test.unshift('worker');
48 }
49 defaults.test.unshift('createTestData');
50
51 if (CI_TEST_TYPE === 'playback-min') {
52 defaults.test.push('uglify');
53 }
54
55 // istanbul is only in the list for regular builds and not watch
56 if (CI_TEST_TYPE !== 'coverage' && defaults.test.indexOf('istanbul') !== -1) {
57 defaults.test.splice(defaults.test.indexOf('istanbul'), 1);
58 }
59 defaults.module.unshift('replace');
60
61 defaults.module.unshift('strip');
62 defaults.browser.unshift('strip');
63
64 return defaults;
65 },
66 primedPlugins(defaults) {
67 defaults = Object.assign(defaults, {
68 replace: replace({
69 // single quote replace
70 "require('@videojs/vhs-utils/es": "require('@videojs/vhs-utils/cjs",
71 // double quote replace
72 'require("@videojs/vhs-utils/es': 'require("@videojs/vhs-utils/cjs'
73 }),
74 uglify: terser({
75 output: {comments: 'some'},
76 compress: {passes: 2}
77 }),
78 strip: strip({
79 functions: ['TEST_ONLY_*'],
80 debugger: false,
81 sourceMap: false
82 }),
83 createTestData: createTestData()
84 });
85
86 defaults.worker = worker({type: 'browser', plugins: [
87 defaults.resolve,
88 defaults.json,
89 defaults.commonjs,
90 defaults.babel
91 ]});
92
93 defaults.syncWorker = syncWorker = worker({type: 'mock', plugins: [
94 defaults.resolve,
95 defaults.json,
96 defaults.commonjs,
97 defaults.babel
98 ]});
99
100 return defaults;
101 },
102 babel(defaults) {
103 const presetEnvSettings = defaults.presets[0][1];
104
105 presetEnvSettings.exclude = presetEnvSettings.exclude || [];
106 presetEnvSettings.exclude.push('@babel/plugin-transform-typeof-symbol');
107
108 return defaults;
109 }
110};
111
112if (CI_TEST_TYPE === 'playback' || CI_TEST_TYPE === 'playback-min') {
113 options.testInput = 'test/playback.test.js';
114} else if (CI_TEST_TYPE === 'unit' || CI_TEST_TYPE === 'coverage') {
115 options.testInput = {include: ['test/**/*.test.js'], exclude: ['test/playback.test.js']};
116}
117
118const config = generate(options);
119
120if (config.builds.browser) {
121 config.builds.syncWorkers = config.makeBuild('browser', {
122 output: {
123 name: 'httpStreaming',
124 format: 'umd',
125 file: 'dist/videojs-http-streaming-sync-workers.js'
126 }
127 });
128
129 config.builds.syncWorkers.plugins[0] = syncWorker;
130}
131
132// Add additonal builds/customization here!
133
134// export the builds to rollup
135export default Object.values(config.builds);