-
-
Notifications
You must be signed in to change notification settings - Fork 13
/
upgrade.js
39 lines (31 loc) · 1.23 KB
/
upgrade.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
'use strict';
var getWrapper = require('./get-wrapper')
, requirefy = require('./requirefy')
, exportify = require('./exportify')
, style = require('./style')
;
/*
* We need to get AST twice, since ranges go out of sync everytime we modify the code
* 1. Parse code, find return statement inside requirejs wrapper and replace with assignment to module.exports
* This needs to happen before removing the wrapper since requirejs considers returns on script level to be illegal.
* 2. Parse resulting code, find and replace requirejs wrapper with appropriate commonjs require statements
*/
module.exports = function upgrade(code, options, resolvePath) {
var wrapper
, header = '';
wrapper = getWrapper(code, true);
// not a requirejs file? signify that no upgrade is needed.
if (!wrapper) return null;
var exportified;
if (wrapper.return) {
header = code.substring(0, wrapper.codeStart);
exportified = exportify(code, wrapper.return, wrapper.codeStart);
wrapper = getWrapper(exportified, false);
} else {
if (header === '') {
header = code.substring(0, wrapper.codeStart);
}
exportified = code.substr(wrapper.codeStart);
}
return header + requirefy(exportified, options, resolvePath);
};