Blame view

node_modules/amdefine/intercept.js 1.04 KB
aaac7fed   liuqimichale   add
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
  /*jshint node: true */
  var inserted,
      Module = require('module'),
      fs = require('fs'),
      existingExtFn = Module._extensions['.js'],
      amdefineRegExp = /amdefine\.js/;
  
  inserted  = "if (typeof define !== 'function') {var define = require('amdefine')(module)}";
  
  //From the node/lib/module.js source:
  function stripBOM(content) {
      // Remove byte order marker. This catches EF BB BF (the UTF-8 BOM)
      // because the buffer-to-string conversion in `fs.readFileSync()`
      // translates it to FEFF, the UTF-16 BOM.
      if (content.charCodeAt(0) === 0xFEFF) {
          content = content.slice(1);
      }
      return content;
  }
  
  //Also adapted from the node/lib/module.js source:
  function intercept(module, filename) {
      var content = stripBOM(fs.readFileSync(filename, 'utf8'));
  
      if (!amdefineRegExp.test(module.id)) {
          content = inserted + content;
      }
  
      module._compile(content, filename);
  }
  
  intercept._id = 'amdefine/intercept';
  
  if (!existingExtFn._id || existingExtFn._id !== intercept._id) {
      Module._extensions['.js'] = intercept;
  }