-
Notifications
You must be signed in to change notification settings - Fork 2
/
Copy pathindex.js
52 lines (47 loc) · 1.49 KB
/
index.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
var asyncToGen = require('async-to-gen');
var fs = require('fs');
var os = require('os');
var path = require('path');
var createFilter = require('rollup-pluginutils').createFilter;
module.exports = function(options) {
options = options || {};
var filter = createFilter(options.include, options.exclude);
var sourceMap = options.sourceMap !== false;
return {
name: 'async-to-gen',
transform: function(code, id) {
if (filter(id)) {
var result = asyncToGen(code, {
sourceMap: sourceMap,
includeHelper: false
});
if (result.isEdited) {
result.prepend('import { __async, __asyncGen, __asyncIterator } from "' + getAsyncHelperFile() + '"\n');
}
return {
code: result.toString(),
map: sourceMap ? result.generateMap() : { mappings: '' }
};
}
}
};
}
var _asyncHelperFile;
function getAsyncHelperFile() {
if (!_asyncHelperFile) {
_asyncHelperFile = path.join(os.tmpdir(), 'asyncHelper.' + Date.now() + '.js');
fs.writeFileSync(
_asyncHelperFile,
'export ' + asyncToGen.asyncHelper + '\n' +
'export ' + asyncToGen.asyncGenHelper + '\n' +
'export ' + asyncToGen.asyncIteratorHelper
);
process.on('exit', function () {
fs.unlinkSync(_asyncHelperFile)
})
}
// Note that while win32 uses \ as path separator, Node require() may rely on /.
return os.platform() === 'win32' ?
_asyncHelperFile.replace(/\\/g, '/') :
_asyncHelperFile;
}