You can not select more than 25 topics
			Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
		
		
		
		
		
			
		
			
				
					190 lines
				
				4.4 KiB
			
		
		
			
		
	
	
					190 lines
				
				4.4 KiB
			| 
											2 years ago
										 | "use strict"; | ||
|  | 
 | ||
|  | var fs = require('fs'); // useful stuff
 | ||
|  | 
 | ||
|  | 
 | ||
|  | var inherits = function inherits(cls, superCtor, statics, prototype) { | ||
|  |   // eslint-disable-next-line no-underscore-dangle
 | ||
|  |   cls.super_ = superCtor; | ||
|  | 
 | ||
|  |   if (!prototype) { | ||
|  |     prototype = statics; | ||
|  |     statics = null; | ||
|  |   } | ||
|  | 
 | ||
|  |   if (statics) { | ||
|  |     Object.keys(statics).forEach(function (i) { | ||
|  |       Object.defineProperty(cls, i, Object.getOwnPropertyDescriptor(statics, i)); | ||
|  |     }); | ||
|  |   } | ||
|  | 
 | ||
|  |   var properties = { | ||
|  |     constructor: { | ||
|  |       value: cls, | ||
|  |       enumerable: false, | ||
|  |       writable: false, | ||
|  |       configurable: true | ||
|  |     } | ||
|  |   }; | ||
|  | 
 | ||
|  |   if (prototype) { | ||
|  |     Object.keys(prototype).forEach(function (i) { | ||
|  |       properties[i] = Object.getOwnPropertyDescriptor(prototype, i); | ||
|  |     }); | ||
|  |   } | ||
|  | 
 | ||
|  |   cls.prototype = Object.create(superCtor.prototype, properties); | ||
|  | }; // eslint-disable-next-line no-control-regex
 | ||
|  | 
 | ||
|  | 
 | ||
|  | var xmlDecodeRegex = /[<>&'"\x7F\x00-\x08\x0B-\x0C\x0E-\x1F]/; | ||
|  | var utils = { | ||
|  |   nop: function nop() {}, | ||
|  |   promiseImmediate: function promiseImmediate(value) { | ||
|  |     return new Promise(function (resolve) { | ||
|  |       if (global.setImmediate) { | ||
|  |         setImmediate(function () { | ||
|  |           resolve(value); | ||
|  |         }); | ||
|  |       } else { | ||
|  |         // poorman's setImmediate - must wait at least 1ms
 | ||
|  |         setTimeout(function () { | ||
|  |           resolve(value); | ||
|  |         }, 1); | ||
|  |       } | ||
|  |     }); | ||
|  |   }, | ||
|  |   inherits: inherits, | ||
|  |   dateToExcel: function dateToExcel(d, date1904) { | ||
|  |     return 25569 + d.getTime() / (24 * 3600 * 1000) - (date1904 ? 1462 : 0); | ||
|  |   }, | ||
|  |   excelToDate: function excelToDate(v, date1904) { | ||
|  |     var millisecondSinceEpoch = Math.round((v - 25569 + (date1904 ? 1462 : 0)) * 24 * 3600 * 1000); | ||
|  |     return new Date(millisecondSinceEpoch); | ||
|  |   }, | ||
|  |   parsePath: function parsePath(filepath) { | ||
|  |     var last = filepath.lastIndexOf('/'); | ||
|  |     return { | ||
|  |       path: filepath.substring(0, last), | ||
|  |       name: filepath.substring(last + 1) | ||
|  |     }; | ||
|  |   }, | ||
|  |   getRelsPath: function getRelsPath(filepath) { | ||
|  |     var path = utils.parsePath(filepath); | ||
|  |     return "".concat(path.path, "/_rels/").concat(path.name, ".rels"); | ||
|  |   }, | ||
|  |   xmlEncode: function xmlEncode(text) { | ||
|  |     var regexResult = xmlDecodeRegex.exec(text); | ||
|  |     if (!regexResult) return text; | ||
|  |     var result = ''; | ||
|  |     var escape = ''; | ||
|  |     var lastIndex = 0; | ||
|  |     var i = regexResult.index; | ||
|  | 
 | ||
|  |     for (; i < text.length; i++) { | ||
|  |       var charCode = text.charCodeAt(i); | ||
|  | 
 | ||
|  |       switch (charCode) { | ||
|  |         case 34: | ||
|  |           // "
 | ||
|  |           escape = '"'; | ||
|  |           break; | ||
|  | 
 | ||
|  |         case 38: | ||
|  |           // &
 | ||
|  |           escape = '&'; | ||
|  |           break; | ||
|  | 
 | ||
|  |         case 39: | ||
|  |           // '
 | ||
|  |           escape = '''; | ||
|  |           break; | ||
|  | 
 | ||
|  |         case 60: | ||
|  |           // <
 | ||
|  |           escape = '<'; | ||
|  |           break; | ||
|  | 
 | ||
|  |         case 62: | ||
|  |           // >
 | ||
|  |           escape = '>'; | ||
|  |           break; | ||
|  | 
 | ||
|  |         case 127: | ||
|  |           escape = ''; | ||
|  |           break; | ||
|  | 
 | ||
|  |         default: | ||
|  |           { | ||
|  |             if (charCode <= 31 && (charCode <= 8 || charCode >= 11 && charCode !== 13)) { | ||
|  |               escape = ''; | ||
|  |               break; | ||
|  |             } | ||
|  | 
 | ||
|  |             continue; | ||
|  |           } | ||
|  |       } | ||
|  | 
 | ||
|  |       if (lastIndex !== i) result += text.substring(lastIndex, i); | ||
|  |       lastIndex = i + 1; | ||
|  |       if (escape) result += escape; | ||
|  |     } | ||
|  | 
 | ||
|  |     if (lastIndex !== i) return result + text.substring(lastIndex, i); | ||
|  |     return result; | ||
|  |   }, | ||
|  |   xmlDecode: function xmlDecode(text) { | ||
|  |     return text.replace(/&([a-z]*);/g, function (c) { | ||
|  |       switch (c) { | ||
|  |         case '<': | ||
|  |           return '<'; | ||
|  | 
 | ||
|  |         case '>': | ||
|  |           return '>'; | ||
|  | 
 | ||
|  |         case '&': | ||
|  |           return '&'; | ||
|  | 
 | ||
|  |         case ''': | ||
|  |           return '\''; | ||
|  | 
 | ||
|  |         case '"': | ||
|  |           return '"'; | ||
|  | 
 | ||
|  |         default: | ||
|  |           return c; | ||
|  |       } | ||
|  |     }); | ||
|  |   }, | ||
|  |   validInt: function validInt(value) { | ||
|  |     var i = parseInt(value, 10); | ||
|  |     return !Number.isNaN(i) ? i : 0; | ||
|  |   }, | ||
|  |   isDateFmt: function isDateFmt(fmt) { | ||
|  |     if (!fmt) { | ||
|  |       return false; | ||
|  |     } // must remove all chars inside quotes and []
 | ||
|  | 
 | ||
|  | 
 | ||
|  |     fmt = fmt.replace(/\[[^\]]*]/g, ''); | ||
|  |     fmt = fmt.replace(/"[^"]*"/g, ''); // then check for date formatting chars
 | ||
|  | 
 | ||
|  |     var result = fmt.match(/[ymdhMsb]+/) !== null; | ||
|  |     return result; | ||
|  |   }, | ||
|  |   fs: { | ||
|  |     exists: function exists(path) { | ||
|  |       return new Promise(function (resolve) { | ||
|  |         fs.access(path, fs.constants.F_OK, function (err) { | ||
|  |           resolve(!err); | ||
|  |         }); | ||
|  |       }); | ||
|  |     } | ||
|  |   }, | ||
|  |   toIsoDateString: function toIsoDateString(dt) { | ||
|  |     return dt.toIsoString().subsstr(0, 10); | ||
|  |   } | ||
|  | }; | ||
|  | module.exports = utils; | ||
|  | //# sourceMappingURL=utils.js.map
 |