Bug:Fix file validation issue
[vnfsdk/refrepo.git] / vnfmarket / src / main / webapp / vnfmarket / node_modules / ibrik / lib / hook.js
1 // Generated by CoffeeScript 1.8.0
2 (function() {
3   var Module, coffee, endsWith, fs, hook, istanbul, originalJSLoader, originalLoader, transformFn;
4
5   fs = require('fs');
6
7   Module = require('module');
8
9   istanbul = require('istanbul');
10
11   coffee = require('coffee-script');
12
13   coffee.register();
14
15   originalLoader = require.extensions['.coffee'];
16
17   originalJSLoader = null;
18
19   hook = Object.create(istanbul.hook);
20
21   transformFn = function(matcher, transformer, verbose) {
22     return function(code, filename) {
23       var changed, ex, shouldHook, transformed;
24       shouldHook = matcher(filename);
25       changed = false;
26       if (shouldHook) {
27         if (verbose) {
28           console.error("Module load hook: transform [" + filename + "]");
29         }
30         try {
31           transformed = transformer(code, filename);
32           changed = true;
33         } catch (_error) {
34           ex = _error;
35           console.error('Transformation error; return original code');
36           console.error(ex.stack);
37           console.error(ex);
38           transformed = code;
39         }
40       } else {
41         transformed = code;
42       }
43       return {
44         code: transformed,
45         changed: changed
46       };
47     };
48   };
49
50   hook.hookRequire = function(matcher, transformer, options) {
51     var fn, postLoadHook;
52     if (options == null) {
53       options = {};
54     }
55     fn = transformFn(matcher, transformer, options.verbose);
56     postLoadHook = null;
57     if (options.postLoadHook && typeof options.postLoadHook === 'function') {
58       postLoadHook = options.postLoadHook;
59     }
60     require.extensions['.coffee'] = function(module, filename) {
61       var ret;
62       ret = fn(fs.readFileSync(filename, 'utf8'), filename);
63       if (ret.changed) {
64         module._compile(ret.code, filename);
65       } else {
66         originalLoader(module, filename);
67       }
68       if (postLoadHook) {
69         return postLoadHook(filename);
70       }
71     };
72     istanbul.hook.hookRequire(matcher, transformer, options);
73     originalJSLoader = require.extensions['.js'];
74     return require.extensions['.js'] = function(module, filename) {
75       if (!endsWith(filename, 'coffee-script.js')) {
76         originalJSLoader(module, filename);
77       }
78     };
79   };
80
81   hook.unhookRequire = function() {
82     if (originalJSLoader) {
83       require.extensions['.js'] = originalJSLoader;
84       originalJSLoader = null;
85     }
86     istanbul.hook.unhookRequire();
87     return require.extensions['.coffee'] = originalLoader;
88   };
89
90   endsWith = function(string, endString) {
91     if (string.length < endString.length) {
92       return false;
93     }
94     return string.substr(string.length - endString.length) === endString;
95   };
96
97   module.exports = hook;
98
99 }).call(this);