jass 0.9.1 → 0.9.3

Sign up to get free protection for your applications and to get access to all the features.
Files changed (87) hide show
  1. checksums.yaml +4 -4
  2. data/README.md +1 -1
  3. data/lib/jass.rb +5 -0
  4. data/lib/jass/compiler.rb +5 -0
  5. data/lib/jass/plugin.rb +2 -1
  6. data/lib/jass/version.rb +1 -1
  7. data/vendor/node_modules/@types/estree/index.d.ts +4 -2
  8. data/vendor/node_modules/@types/estree/package.json +2 -2
  9. data/vendor/node_modules/acorn/bin/_acorn.js +12 -12
  10. data/vendor/node_modules/acorn/bin/run_test262.js +2 -3
  11. data/vendor/node_modules/acorn/bin/test262.whitelist +0 -5
  12. data/vendor/node_modules/acorn/dist/acorn.es.js +76 -68
  13. data/vendor/node_modules/acorn/dist/acorn.js +76 -68
  14. data/vendor/node_modules/acorn/dist/acorn_loose.es.js +42 -30
  15. data/vendor/node_modules/acorn/dist/acorn_loose.js +42 -30
  16. data/vendor/node_modules/acorn/dist/walk.es.js +47 -43
  17. data/vendor/node_modules/acorn/dist/walk.js +47 -43
  18. data/vendor/node_modules/acorn/package.json +9 -5
  19. data/vendor/node_modules/chalk/index.js.flow +93 -0
  20. data/vendor/node_modules/chalk/package.json +8 -3
  21. data/vendor/node_modules/color-convert/conversions.js +36 -29
  22. data/vendor/node_modules/color-convert/package.json +4 -4
  23. data/vendor/node_modules/estree-walker/index.d.ts +17 -0
  24. data/vendor/node_modules/estree-walker/package.json +2 -1
  25. data/vendor/node_modules/fill-range/index.js +2 -2
  26. data/vendor/node_modules/fill-range/package.json +24 -7
  27. data/vendor/node_modules/is-reference/node_modules/@types/estree/index.d.ts +546 -0
  28. data/vendor/node_modules/is-reference/node_modules/@types/estree/package.json +22 -0
  29. data/vendor/node_modules/math-random/browser.js +17 -0
  30. data/vendor/node_modules/math-random/node.js +13 -0
  31. data/vendor/node_modules/math-random/package.json +31 -0
  32. data/vendor/node_modules/math-random/test.js +26 -0
  33. data/vendor/node_modules/nodent-compiler/compiler.js +115 -11
  34. data/vendor/node_modules/nodent-compiler/{lib/output.js → output.js} +0 -0
  35. data/vendor/node_modules/nodent-compiler/package.json +8 -4
  36. data/vendor/node_modules/{nodent-compiler/lib → nodent-transform}/arboriculture.js +1340 -1107
  37. data/vendor/node_modules/nodent-transform/package.json +19 -0
  38. data/vendor/node_modules/path-parse/package.json +1 -1
  39. data/vendor/node_modules/pretty-ms/index.js +2 -1
  40. data/vendor/node_modules/pretty-ms/package.json +2 -3
  41. data/vendor/node_modules/randomatic/index.js +12 -2
  42. data/vendor/node_modules/randomatic/node_modules/is-number/index.js +6 -7
  43. data/vendor/node_modules/randomatic/node_modules/is-number/package.json +9 -16
  44. data/vendor/node_modules/randomatic/node_modules/kind-of/index.js +112 -102
  45. data/vendor/node_modules/randomatic/node_modules/kind-of/package.json +18 -20
  46. data/vendor/node_modules/randomatic/package.json +15 -13
  47. data/vendor/node_modules/repeat-element/index.js +1 -1
  48. data/vendor/node_modules/repeat-element/package.json +27 -22
  49. data/vendor/node_modules/resolve/lib/async.js +20 -17
  50. data/vendor/node_modules/resolve/lib/core.js +2 -2
  51. data/vendor/node_modules/resolve/lib/core.json +4 -1
  52. data/vendor/node_modules/resolve/lib/sync.js +52 -13
  53. data/vendor/node_modules/resolve/package.json +3 -3
  54. data/vendor/node_modules/rollup-plugin-commonjs/dist/rollup-plugin-commonjs.cjs.js +50 -12
  55. data/vendor/node_modules/rollup-plugin-commonjs/dist/rollup-plugin-commonjs.es.js +50 -12
  56. data/vendor/node_modules/rollup-plugin-commonjs/package.json +2 -2
  57. data/vendor/node_modules/rollup-plugin-commonjs/src/index.js +49 -11
  58. data/vendor/node_modules/rollup-plugin-commonjs/src/transform.js +1 -1
  59. data/vendor/node_modules/rollup-plugin-node-resolve/dist/rollup-plugin-node-resolve.cjs.js +82 -85
  60. data/vendor/node_modules/rollup-plugin-node-resolve/dist/rollup-plugin-node-resolve.es.js +82 -85
  61. data/vendor/node_modules/rollup-plugin-node-resolve/package.json +1 -1
  62. data/vendor/node_modules/rollup-plugin-node-resolve/src/index.js +81 -84
  63. data/vendor/node_modules/rollup-pluginutils/dist/pluginutils.cjs.js +81 -2
  64. data/vendor/node_modules/rollup-pluginutils/dist/pluginutils.es.js +81 -3
  65. data/vendor/node_modules/rollup-pluginutils/package.json +12 -6
  66. data/vendor/node_modules/rollup-pluginutils/src/attachScopes.js +10 -2
  67. data/vendor/node_modules/rollup-pluginutils/src/dataToEsm.js +69 -0
  68. data/vendor/node_modules/rollup-pluginutils/src/index.js +1 -0
  69. data/vendor/node_modules/supports-color/index.js +1 -5
  70. data/vendor/node_modules/supports-color/package.json +51 -51
  71. data/vendor/yarn.lock +65 -70
  72. metadata +16 -21
  73. data/vendor/node_modules/irregular-plurals/irregular-plurals.json +0 -146
  74. data/vendor/node_modules/irregular-plurals/package.json +0 -39
  75. data/vendor/node_modules/nodent-compiler/lib/parser.js +0 -291
  76. data/vendor/node_modules/path-parse/index.min.js +0 -1
  77. data/vendor/node_modules/path-parse/test.min.js +0 -1
  78. data/vendor/node_modules/plur/index.js +0 -20
  79. data/vendor/node_modules/plur/package.json +0 -42
  80. data/vendor/node_modules/randomatic/node_modules/is-number/node_modules/kind-of/index.js +0 -116
  81. data/vendor/node_modules/randomatic/node_modules/is-number/node_modules/kind-of/package.json +0 -90
  82. data/vendor/node_modules/rollup-pluginutils/dist/pluginutils.es6.js +0 -217
  83. data/vendor/node_modules/rollup-pluginutils/node_modules/estree-walker/dist/estree-walker.es.js +0 -55
  84. data/vendor/node_modules/rollup-pluginutils/node_modules/estree-walker/dist/estree-walker.es6.js +0 -59
  85. data/vendor/node_modules/rollup-pluginutils/node_modules/estree-walker/dist/estree-walker.umd.js +0 -65
  86. data/vendor/node_modules/rollup-pluginutils/node_modules/estree-walker/package.json +0 -33
  87. data/vendor/node_modules/rollup-pluginutils/node_modules/estree-walker/src/estree-walker.js +0 -49
@@ -164,7 +164,7 @@ function getName ( id ) {
164
164
  }
165
165
  }
166
166
 
167
- var reserved = 'abstract arguments boolean break byte case catch char class const continue debugger default delete do double else enum eval export extends false final finally float for function goto if implements import in instanceof int interface let long native new null package private protected public return short static super switch synchronized this throw throws transient true try typeof var void volatile while with yield'.split( ' ' );
167
+ var reserved = 'abstract arguments boolean break byte case catch char class const continue debugger default delete do double else enum eval export extends false final finally float for from function goto if implements import in instanceof int interface let long native new null package private protected public return short static super switch synchronized this throw throws transient true try typeof var void volatile while with yield'.split( ' ' );
168
168
  var blacklist = { __esModule: true };
169
169
  reserved.forEach( function (word) { return blacklist[ word ] = true; } );
170
170
 
@@ -629,6 +629,7 @@ function startsWith ( str, prefix ) {
629
629
  return str.slice( 0, prefix.length ) === prefix;
630
630
  }
631
631
 
632
+ var isCjsPromises = Object.create(null);
632
633
 
633
634
  function commonjs ( options ) {
634
635
  if ( options === void 0 ) options = {};
@@ -687,9 +688,36 @@ function commonjs ( options ) {
687
688
 
688
689
  var sourceMap = options.sourceMap !== false;
689
690
 
690
- var commonjsModules = new Map();
691
691
  var resolveUsingOtherResolvers;
692
692
 
693
+ function getIsCjsPromise ( id ) {
694
+ var isCjsPromise = isCjsPromises[id];
695
+ if (isCjsPromise)
696
+ { return isCjsPromise.promise; }
697
+
698
+ var promise = new Promise( function (resolve$$1) {
699
+ isCjsPromises[id] = isCjsPromise = {
700
+ resolve: resolve$$1,
701
+ promise: undefined
702
+ };
703
+ });
704
+ isCjsPromise.promise = promise;
705
+
706
+ return promise;
707
+ }
708
+ function setIsCjsPromise ( id, promise ) {
709
+ var isCjsPromise = isCjsPromises[id];
710
+ if (isCjsPromise) {
711
+ if (isCjsPromise.resolve) {
712
+ isCjsPromise.resolve(promise);
713
+ isCjsPromise.resolve = undefined;
714
+ }
715
+ }
716
+ else {
717
+ isCjsPromises[id] = { promise: promise, resolve: undefined };
718
+ }
719
+ }
720
+
693
721
  return {
694
722
  name: 'commonjs',
695
723
 
@@ -725,8 +753,12 @@ function commonjs ( options ) {
725
753
  resolvers.unshift( function (id) { return isExternal( id ) ? false : null; } );
726
754
 
727
755
  resolveUsingOtherResolvers = first( resolvers );
728
-
729
- var entryModules = [].concat( options$1.input || options$1.entry );
756
+ var input = options$1.input || options$1.entry;
757
+ var entryModules = Array.isArray(input) ?
758
+ input :
759
+ typeof input === 'object' && input !== null ?
760
+ Object.values(input) :
761
+ [input];
730
762
  entryModuleIdsPromise = Promise.all(
731
763
  entryModules.map( function (entry) { return resolveId( entry ); })
732
764
  );
@@ -749,12 +781,15 @@ function commonjs ( options ) {
749
781
  var actualId$1 = id.slice( PREFIX.length );
750
782
  var name$1 = getName( actualId$1 );
751
783
 
752
- if (commonjsModules.has( actualId$1 ))
753
- { return ("import { __moduleExports } from " + (JSON.stringify( actualId$1 )) + "; export default __moduleExports;"); }
754
- else if (esModulesWithoutDefaultExport.indexOf(actualId$1) !== -1)
755
- { return ("import * as " + name$1 + " from " + (JSON.stringify( actualId$1 )) + "; export default " + name$1 + ";"); }
756
- else
757
- { return ("import * as " + name$1 + " from " + (JSON.stringify( actualId$1 )) + "; export default ( " + name$1 + " && " + name$1 + "['default'] ) || " + name$1 + ";"); }
784
+ return ( ( extensions.indexOf( extname( id ) ) === -1 ) ? Promise.resolve(false) : getIsCjsPromise( actualId$1 ) )
785
+ .then( function (isCjs) {
786
+ if ( isCjs )
787
+ { return ("import { __moduleExports } from " + (JSON.stringify( actualId$1 )) + "; export default __moduleExports;"); }
788
+ else if (esModulesWithoutDefaultExport.indexOf(actualId$1) !== -1)
789
+ { return ("import * as " + name$1 + " from " + (JSON.stringify( actualId$1 )) + "; export default " + name$1 + ";"); }
790
+ else
791
+ { return ("import * as " + name$1 + " from " + (JSON.stringify( actualId$1 )) + "; export default ( " + name$1 + " && " + name$1 + "['default'] ) || " + name$1 + ";"); }
792
+ });
758
793
  }
759
794
  },
760
795
 
@@ -764,7 +799,7 @@ function commonjs ( options ) {
764
799
  if ( !filter( id ) ) { return null; }
765
800
  if ( extensions.indexOf( extname( id ) ) === -1 ) { return null; }
766
801
 
767
- return entryModuleIdsPromise.then( function (entryModuleIds) {
802
+ var transformPromise = entryModuleIdsPromise.then( function (entryModuleIds) {
768
803
  var ref = checkEsModule( this$1.parse, code, id );
769
804
  var isEsModule = ref.isEsModule;
770
805
  var hasDefaultExport = ref.hasDefaultExport;
@@ -787,11 +822,14 @@ function commonjs ( options ) {
787
822
  return;
788
823
  }
789
824
 
790
- commonjsModules.set( id, true );
791
825
  return transformed;
792
826
  }).catch(function (err) {
793
827
  this$1.error(err, err.loc);
794
828
  });
829
+
830
+ setIsCjsPromise(id, transformPromise.then( function (transformed) { return transformed ? true : false; }, function () { return true; } ));
831
+
832
+ return transformPromise;
795
833
  }
796
834
  };
797
835
  }
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "rollup-plugin-commonjs",
3
- "version": "9.1.0",
3
+ "version": "9.1.6",
4
4
  "description": "Convert CommonJS modules to ES2015",
5
5
  "main": "dist/rollup-plugin-commonjs.cjs.js",
6
6
  "module": "dist/rollup-plugin-commonjs.es.js",
@@ -35,7 +35,7 @@
35
35
  "locate-character": "^2.0.5",
36
36
  "mocha": "^5.0.1",
37
37
  "require-relative": "^0.8.7",
38
- "rollup": "^0.56.4",
38
+ "rollup": "^0.63.2",
39
39
  "rollup-plugin-buble": "^0.19.2",
40
40
  "rollup-plugin-node-resolve": "^3.0.3",
41
41
  "shx": "^0.2.2",
@@ -37,6 +37,7 @@ function startsWith ( str, prefix ) {
37
37
  return str.slice( 0, prefix.length ) === prefix;
38
38
  }
39
39
 
40
+ const isCjsPromises = Object.create(null);
40
41
 
41
42
  export default function commonjs ( options = {} ) {
42
43
  const extensions = options.extensions || ['.js'];
@@ -93,9 +94,36 @@ export default function commonjs ( options = {} ) {
93
94
 
94
95
  const sourceMap = options.sourceMap !== false;
95
96
 
96
- const commonjsModules = new Map();
97
97
  let resolveUsingOtherResolvers;
98
98
 
99
+ function getIsCjsPromise ( id ) {
100
+ let isCjsPromise = isCjsPromises[id];
101
+ if (isCjsPromise)
102
+ return isCjsPromise.promise;
103
+
104
+ const promise = new Promise( resolve => {
105
+ isCjsPromises[id] = isCjsPromise = {
106
+ resolve: resolve,
107
+ promise: undefined
108
+ };
109
+ });
110
+ isCjsPromise.promise = promise;
111
+
112
+ return promise;
113
+ }
114
+ function setIsCjsPromise ( id, promise ) {
115
+ const isCjsPromise = isCjsPromises[id];
116
+ if (isCjsPromise) {
117
+ if (isCjsPromise.resolve) {
118
+ isCjsPromise.resolve(promise);
119
+ isCjsPromise.resolve = undefined;
120
+ }
121
+ }
122
+ else {
123
+ isCjsPromises[id] = { promise: promise, resolve: undefined };
124
+ }
125
+ }
126
+
99
127
  return {
100
128
  name: 'commonjs',
101
129
 
@@ -131,8 +159,12 @@ export default function commonjs ( options = {} ) {
131
159
  resolvers.unshift( id => isExternal( id ) ? false : null );
132
160
 
133
161
  resolveUsingOtherResolvers = first( resolvers );
134
-
135
- const entryModules = [].concat( options.input || options.entry );
162
+ const input = options.input || options.entry;
163
+ const entryModules = Array.isArray(input) ?
164
+ input :
165
+ typeof input === 'object' && input !== null ?
166
+ Object.values(input) :
167
+ [input];
136
168
  entryModuleIdsPromise = Promise.all(
137
169
  entryModules.map( entry => resolveId( entry ))
138
170
  );
@@ -155,12 +187,15 @@ export default function commonjs ( options = {} ) {
155
187
  const actualId = id.slice( PREFIX.length );
156
188
  const name = getName( actualId );
157
189
 
158
- if (commonjsModules.has( actualId ))
159
- return `import { __moduleExports } from ${JSON.stringify( actualId )}; export default __moduleExports;`;
160
- else if (esModulesWithoutDefaultExport.indexOf(actualId) !== -1)
161
- return `import * as ${name} from ${JSON.stringify( actualId )}; export default ${name};`;
162
- else
163
- return `import * as ${name} from ${JSON.stringify( actualId )}; export default ( ${name} && ${name}['default'] ) || ${name};`;
190
+ return ( ( extensions.indexOf( extname( id ) ) === -1 ) ? Promise.resolve(false) : getIsCjsPromise( actualId ) )
191
+ .then( isCjs => {
192
+ if ( isCjs )
193
+ return `import { __moduleExports } from ${JSON.stringify( actualId )}; export default __moduleExports;`;
194
+ else if (esModulesWithoutDefaultExport.indexOf(actualId) !== -1)
195
+ return `import * as ${name} from ${JSON.stringify( actualId )}; export default ${name};`;
196
+ else
197
+ return `import * as ${name} from ${JSON.stringify( actualId )}; export default ( ${name} && ${name}['default'] ) || ${name};`;
198
+ });
164
199
  }
165
200
  },
166
201
 
@@ -168,7 +203,7 @@ export default function commonjs ( options = {} ) {
168
203
  if ( !filter( id ) ) return null;
169
204
  if ( extensions.indexOf( extname( id ) ) === -1 ) return null;
170
205
 
171
- return entryModuleIdsPromise.then( (entryModuleIds) => {
206
+ const transformPromise = entryModuleIdsPromise.then( (entryModuleIds) => {
172
207
  const {isEsModule, hasDefaultExport, ast} = checkEsModule( this.parse, code, id );
173
208
  if ( isEsModule ) {
174
209
  if ( !hasDefaultExport )
@@ -188,11 +223,14 @@ export default function commonjs ( options = {} ) {
188
223
  return;
189
224
  }
190
225
 
191
- commonjsModules.set( id, true );
192
226
  return transformed;
193
227
  }).catch(err => {
194
228
  this.error(err, err.loc);
195
229
  });
230
+
231
+ setIsCjsPromise(id, transformPromise.then( transformed => transformed ? true : false, () => true ));
232
+
233
+ return transformPromise;
196
234
  }
197
235
  };
198
236
  }
@@ -5,7 +5,7 @@ import { extractNames, flatten, isReference, isTruthy, isFalsy } from './ast-uti
5
5
  import { PREFIX, HELPERS_ID } from './helpers.js';
6
6
  import { getName } from './utils.js';
7
7
 
8
- const reserved = 'abstract arguments boolean break byte case catch char class const continue debugger default delete do double else enum eval export extends false final finally float for function goto if implements import in instanceof int interface let long native new null package private protected public return short static super switch synchronized this throw throws transient true try typeof var void volatile while with yield'.split( ' ' );
8
+ const reserved = 'abstract arguments boolean break byte case catch char class const continue debugger default delete do double else enum eval export extends false final finally float for from function goto if implements import in instanceof int interface let long native new null package private protected public return short static super switch synchronized this throw throws transient true try typeof var void volatile while with yield'.split( ' ' );
9
9
  const blacklist = { __esModule: true };
10
10
  reserved.forEach( word => blacklist[ word ] = true );
11
11
 
@@ -15,7 +15,9 @@ var CONSOLE_WARN = function () {
15
15
 
16
16
  return console.warn.apply( console, args );
17
17
  }; // eslint-disable-line no-console
18
- var exts = [ '.js', '.json', '.node' ];
18
+ // It is important that .mjs occur before .js so that Rollup will interpret npm modules
19
+ // which deploy both ESM .mjs and CommonJS .js files as ESM.
20
+ var DEFAULT_EXTS = [ '.mjs', '.js', '.json', '.node' ];
19
21
 
20
22
  var readFileCache = {};
21
23
  var readFileAsync = function (file) { return new Promise(function (fulfil, reject) { return fs.readFile(file, function (err, contents) { return err ? reject(err) : fulfil(contents); }); }); };
@@ -45,6 +47,8 @@ function cachedIsFile (file, cb) {
45
47
  isFileCache[file].then(function (contents) { return cb(null, contents); }, cb);
46
48
  }
47
49
 
50
+ var resolveIdAsync = function (file, opts) { return new Promise(function (fulfil, reject) { return resolveId(file, opts, function (err, contents) { return err ? reject(err) : fulfil(contents); }); }); };
51
+
48
52
  function nodeResolve ( options ) {
49
53
  if ( options === void 0 ) options = {};
50
54
 
@@ -87,7 +91,7 @@ function nodeResolve ( options ) {
87
91
  readFileCache = {};
88
92
  },
89
93
 
90
- resolveId: function resolveId$1 ( importee, importer ) {
94
+ resolveId: function resolveId$$1 ( importee, importer ) {
91
95
  if ( /\0/.test( importee ) ) { return null; } // ignore IDs with null character, these belong to other plugins
92
96
 
93
97
  // disregard entry module
@@ -118,99 +122,92 @@ function nodeResolve ( options ) {
118
122
 
119
123
  if (only && !only.some(function (pattern) { return pattern.test(id); })) { return null; }
120
124
 
121
- return new Promise( function ( fulfil, reject ) {
122
- var disregardResult = false;
123
- var packageBrowserField = false;
124
-
125
- var resolveOptions = {
126
- basedir: path.dirname( importer ),
127
- packageFilter: function packageFilter ( pkg, pkgPath ) {
128
- var pkgRoot = path.dirname( pkgPath );
129
- if (options.browser && typeof pkg[ 'browser' ] === 'object') {
130
- packageBrowserField = Object.keys(pkg[ 'browser' ]).reduce(function (browser, key) {
131
- var resolved = pkg[ 'browser' ][ key ] === false ? false : path.resolve( pkgRoot, pkg[ 'browser' ][ key ] );
132
- browser[ key ] = resolved;
133
- if ( key[0] === '.' ) {
134
- var absoluteKey = path.resolve( pkgRoot, key );
135
- browser[ absoluteKey ] = resolved;
136
- if ( !path.extname(key) ) {
137
- exts.reduce( function ( browser, ext ) {
138
- browser[ absoluteKey + ext ] = browser[ key ];
139
- return browser;
140
- }, browser );
141
- }
125
+ var disregardResult = false;
126
+ var packageBrowserField = false;
127
+ var extensions = options.extensions || DEFAULT_EXTS;
128
+
129
+ var resolveOptions = {
130
+ basedir: path.dirname( importer ),
131
+ packageFilter: function packageFilter ( pkg, pkgPath ) {
132
+ var pkgRoot = path.dirname( pkgPath );
133
+ if (options.browser && typeof pkg[ 'browser' ] === 'object') {
134
+ packageBrowserField = Object.keys(pkg[ 'browser' ]).reduce(function (browser, key) {
135
+ var resolved = pkg[ 'browser' ][ key ] === false ? false : path.resolve( pkgRoot, pkg[ 'browser' ][ key ] );
136
+ browser[ key ] = resolved;
137
+ if ( key[0] === '.' ) {
138
+ var absoluteKey = path.resolve( pkgRoot, key );
139
+ browser[ absoluteKey ] = resolved;
140
+ if ( !path.extname(key) ) {
141
+ extensions.reduce( function ( browser, ext ) {
142
+ browser[ absoluteKey + ext ] = browser[ key ];
143
+ return browser;
144
+ }, browser );
142
145
  }
143
- return browser;
144
- }, {});
145
- }
146
+ }
147
+ return browser;
148
+ }, {});
149
+ }
146
150
 
147
- if (options.browser && typeof pkg[ 'browser' ] === 'string') {
148
- pkg[ 'main' ] = pkg[ 'browser' ];
149
- } else if ( useModule && pkg[ 'module' ] ) {
150
- pkg[ 'main' ] = pkg[ 'module' ];
151
- } else if ( useJsnext && pkg[ 'jsnext:main' ] ) {
152
- pkg[ 'main' ] = pkg[ 'jsnext:main' ];
153
- } else if ( ( useJsnext || useModule ) && !useMain ) {
154
- disregardResult = true;
155
- }
156
- return pkg;
157
- },
158
- readFile: cachedReadFile,
159
- isFile: cachedIsFile,
160
- extensions: options.extensions
161
- };
162
-
163
- if (preserveSymlinks !== undefined) {
164
- resolveOptions.preserveSymlinks = preserveSymlinks;
165
- }
151
+ if (options.browser && typeof pkg[ 'browser' ] === 'string') {
152
+ pkg[ 'main' ] = pkg[ 'browser' ];
153
+ } else if ( useModule && pkg[ 'module' ] ) {
154
+ pkg[ 'main' ] = pkg[ 'module' ];
155
+ } else if ( useJsnext && pkg[ 'jsnext:main' ] ) {
156
+ pkg[ 'main' ] = pkg[ 'jsnext:main' ];
157
+ } else if ( ( useJsnext || useModule ) && !useMain ) {
158
+ disregardResult = true;
159
+ }
160
+ return pkg;
161
+ },
162
+ readFile: cachedReadFile,
163
+ isFile: cachedIsFile,
164
+ extensions: extensions
165
+ };
166
+
167
+ if (preserveSymlinks !== undefined) {
168
+ resolveOptions.preserveSymlinks = preserveSymlinks;
169
+ }
166
170
 
167
- resolveId(
168
- importee,
169
- Object.assign( resolveOptions, customResolveOptions ),
170
- function ( err, resolved ) {
171
- if (options.browser && packageBrowserField) {
172
- if (packageBrowserField[ resolved ]) {
173
- resolved = packageBrowserField[ resolved ];
174
- }
175
- browserMapCache[resolved] = packageBrowserField;
171
+ return resolveIdAsync(
172
+ importee,
173
+ Object.assign( resolveOptions, customResolveOptions )
174
+ )
175
+ .catch(function () { return false; })
176
+ .then(function (resolved) {
177
+ if (options.browser && packageBrowserField) {
178
+ if (packageBrowserField[ resolved ]) {
179
+ resolved = packageBrowserField[ resolved ];
176
180
  }
181
+ browserMapCache[resolved] = packageBrowserField;
182
+ }
177
183
 
178
- if ( !disregardResult && !err ) {
179
- if ( !preserveSymlinks && resolved && fs.existsSync( resolved ) ) {
180
- resolved = fs.realpathSync( resolved );
181
- }
184
+ if ( !disregardResult && resolved !== false ) {
185
+ if ( !preserveSymlinks && resolved && fs.existsSync( resolved ) ) {
186
+ resolved = fs.realpathSync( resolved );
187
+ }
182
188
 
183
- if ( ~builtins.indexOf( resolved ) ) {
184
- fulfil( null );
185
- } else if ( ~builtins.indexOf( importee ) && preferBuiltins ) {
186
- if ( !isPreferBuiltinsSet ) {
187
- onwarn(
188
- "preferring built-in module '" + importee + "' over local alternative " +
189
- "at '" + resolved + "', pass 'preferBuiltins: false' to disable this " +
190
- "behavior or 'preferBuiltins: true' to disable this warning"
191
- );
192
- }
193
- fulfil( null );
194
- } else if ( jail && resolved.indexOf( path.normalize( jail.trim( path.sep ) ) ) !== 0 ) {
195
- fulfil( null );
189
+ if ( ~builtins.indexOf( resolved ) ) {
190
+ return null;
191
+ } else if ( ~builtins.indexOf( importee ) && preferBuiltins ) {
192
+ if ( !isPreferBuiltinsSet ) {
193
+ onwarn(
194
+ "preferring built-in module '" + importee + "' over local alternative " +
195
+ "at '" + resolved + "', pass 'preferBuiltins: false' to disable this " +
196
+ "behavior or 'preferBuiltins: true' to disable this warning"
197
+ );
196
198
  }
199
+ return null;
200
+ } else if ( jail && resolved.indexOf( path.normalize( jail.trim( path.sep ) ) ) !== 0 ) {
201
+ return null;
197
202
  }
203
+ }
198
204
 
199
- if ( resolved && options.modulesOnly ) {
200
- fs.readFile( resolved, 'utf-8', function ( err, code ) {
201
- if ( err ) {
202
- reject( err );
203
- } else {
204
- var valid = isModule( code );
205
- fulfil( valid ? resolved : null );
206
- }
207
- });
208
- } else {
209
- fulfil( resolved );
210
- }
205
+ if ( resolved && options.modulesOnly ) {
206
+ return readFileAsync( resolved, 'utf-8').then(function (code) { return isModule( code ) ? resolved : null; });
207
+ } else {
208
+ return resolved === false ? null : resolved;
211
209
  }
212
- );
213
- });
210
+ });
214
211
  }
215
212
  };
216
213
  }