| 
									
										
										
										
											2019-06-01 00:56:07 +09:00
										 |  |  | /** | 
					
						
							|  |  |  |  * @license | 
					
						
							| 
									
										
										
										
											2020-05-19 12:08:49 -07:00
										 |  |  |  * Copyright Google LLC All Rights Reserved. | 
					
						
							| 
									
										
										
										
											2019-06-01 00:56:07 +09:00
										 |  |  |  * | 
					
						
							|  |  |  |  * Use of this source code is governed by an MIT-style license that can be | 
					
						
							|  |  |  |  * found in the LICENSE file at https://angular.io/license
 | 
					
						
							|  |  |  |  */ | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | import {patchMacroTask} from '../common/utils'; | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | Zone.__load_patch('fs', () => { | 
					
						
							|  |  |  |   let fs: any; | 
					
						
							|  |  |  |   try { | 
					
						
							|  |  |  |     fs = require('fs'); | 
					
						
							|  |  |  |   } catch (err) { | 
					
						
							|  |  |  |   } | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |   // watch, watchFile, unwatchFile has been patched
 | 
					
						
							|  |  |  |   // because EventEmitter has been patched
 | 
					
						
							|  |  |  |   const TO_PATCH_MACROTASK_METHODS = [ | 
					
						
							|  |  |  |     'access',  'appendFile', 'chmod',    'chown',    'close',     'exists',    'fchmod', | 
					
						
							|  |  |  |     'fchown',  'fdatasync',  'fstat',    'fsync',    'ftruncate', 'futimes',   'lchmod', | 
					
						
							|  |  |  |     'lchown',  'link',       'lstat',    'mkdir',    'mkdtemp',   'open',      'read', | 
					
						
							|  |  |  |     'readdir', 'readFile',   'readlink', 'realpath', 'rename',    'rmdir',     'stat', | 
					
						
							|  |  |  |     'symlink', 'truncate',   'unlink',   'utimes',   'write',     'writeFile', | 
					
						
							|  |  |  |   ]; | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |   if (fs) { | 
					
						
							|  |  |  |     TO_PATCH_MACROTASK_METHODS.filter(name => !!fs[name] && typeof fs[name] === 'function') | 
					
						
							|  |  |  |         .forEach(name => { | 
					
						
							|  |  |  |           patchMacroTask(fs, name, (self: any, args: any[]) => { | 
					
						
							|  |  |  |             return { | 
					
						
							|  |  |  |               name: 'fs.' + name, | 
					
						
							|  |  |  |               args: args, | 
					
						
							|  |  |  |               cbIdx: args.length > 0 ? args.length - 1 : -1, | 
					
						
							|  |  |  |               target: self | 
					
						
							|  |  |  |             }; | 
					
						
							|  |  |  |           }); | 
					
						
							|  |  |  |         }); | 
					
						
							|  |  |  |   } | 
					
						
							|  |  |  | }); |