forked from lquixada/cross-fetch
-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathrollup.config.js
128 lines (117 loc) · 3.19 KB
/
rollup.config.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
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
/* Rollup creates the browser version of the polyfill and ponyfill. */
import path from 'path'
import copy from 'rollup-plugin-copy'
import { terser } from 'rollup-plugin-terser'
const input = path.join(__dirname, 'node_modules', 'whatwg-fetch', 'fetch.js')
const outdent = str => str.replace(/^\s*/mg, '')
export default [
/**
* Ponyfill for CommonJS or EcmaScript Modules
* Description:
* Wraps up the whatwg-fetch code in order to prevent it from adding fetch to
* the global object.
* Usage examples:
* - const fetch = require('cross-fetch')
* - import fetch from 'cross-fetch')
*/
{
input,
output: {
file: path.join(__dirname, 'dist', 'browser-ponyfill.js'),
format: 'iife',
name: 'irrelevant',
strict: false,
banner: outdent(`
var global = typeof self !== 'undefined' ? self : this;
var __self__ = (function () {
function F() {
this.fetch = false;
this.DOMException = global.DOMException
}
F.prototype = global;
return new F();
})();
(function(self) {
`),
footer: outdent(`
})(__self__);
__self__.fetch.ponyfill = true;
// Remove "polyfill" property added by whatwg-fetch
delete __self__.fetch.polyfill;
// Choose between native implementation (global) or custom implementation (__self__)
// var ctx = global.fetch ? global : __self__;
var ctx = __self__; // this line disable service worker support temporarily
exports = ctx.fetch // To enable: import fetch from 'cross-fetch'
exports.default = ctx.fetch // For TypeScript consumers without esModuleInterop.
exports.fetch = ctx.fetch // To enable: import {fetch} from 'cross-fetch'
exports.Headers = ctx.Headers
exports.Request = ctx.Request
exports.Response = ctx.Response
module.exports = exports
`)
},
plugins: [
copy({
targets: [
{ src: 'src/*-ponyfill.js', dest: 'dist' }
],
verbose: true
})
],
context: 'this'
},
/**
* Polyfill for CommonJS or EcmaScript Modules
* Usage examples:
* - require('cross-fetch/polyfill')
* - import 'cross-fetch/polyfill'
*/
{
input,
output: {
file: path.join(__dirname, 'dist', 'browser-polyfill.js'),
format: 'iife',
name: 'irrelevant',
strict: false,
banner: outdent(`
(function(self) {
`),
footer: outdent(`
})(typeof self !== 'undefined' ? self : this);
`)
},
plugins: [
copy({
targets: [
{ src: 'src/*-polyfill.js', dest: 'dist' }
],
verbose: true
})
],
context: 'this'
},
/**
* Browser
* Usage examples:
* - <script src="cross-fetch.js"></script>
*/
{
input,
output: {
file: path.join(__dirname, 'dist', 'cross-fetch.js'),
format: 'iife',
name: 'irrelevant',
sourcemap: true,
strict: false,
banner: outdent(`
(function(self) {
`),
footer: outdent(`
})(typeof self !== 'undefined' ? self : this);
`)
},
plugins: [
terser()
]
}
]