@hap-toolkit/shared-utils
Version:
hap shared utils
3 lines (2 loc) • 9.27 kB
JavaScript
;Object.defineProperty(exports,"__esModule",{value:!0});var _exportNames={logger:!0,colorconsole:!0,logWarn:!0,mkdirsSync:!0,getIPv4IPAddress:!0,getServerIPAndPort:!0,getDefaultServerHost:!0,getClientIPAddress:!0,stripPrefixForIPV4MappedIPV6Address:!0,outputQRCodeOnTerminal:!0,relateCwd:!0,equals:!0,extend:!0,renderString:!0,KnownError:!0,setCustomConfig:!0,getProjectDslName:!0,getDeviceInfo:!0,readJson:!0,calcDataDigest:!0,getStyleObjectId:!0,isNeedFullPackage:!0,getUseFullPackage:!0,globalConfig:!0,BuildModeManager:!0,getLaunchPage:!0};Object.defineProperty(exports,"BuildModeManager",{enumerable:!0,get:function(){return _BuildModeManager.default}}),exports.KnownError=KnownError,exports.calcDataDigest=calcDataDigest,exports.colorconsole=void 0,exports.equals=equals,exports.extend=extend,exports.getClientIPAddress=getClientIPAddress,exports.getDefaultServerHost=getDefaultServerHost,exports.getDeviceInfo=getDeviceInfo,exports.getIPv4IPAddress=getIPv4IPAddress,Object.defineProperty(exports,"getLaunchPage",{enumerable:!0,get:function(){return _util.getLaunchPage}}),exports.getProjectDslName=getProjectDslName,exports.getServerIPAndPort=getServerIPAndPort,exports.getStyleObjectId=getStyleObjectId,exports.getUseFullPackage=getUseFullPackage,Object.defineProperty(exports,"globalConfig",{enumerable:!0,get:function(){return _config.default}}),exports.isNeedFullPackage=isNeedFullPackage,exports.logWarn=logWarn,exports.logger=void 0,exports.mkdirsSync=mkdirsSync,exports.outputQRCodeOnTerminal=outputQRCodeOnTerminal,exports.readJson=readJson,exports.relateCwd=relateCwd,exports.renderString=renderString,exports.setCustomConfig=setCustomConfig,exports.stripPrefixForIPV4MappedIPV6Address=stripPrefixForIPV4MappedIPV6Address;var _os=_interopRequireDefault(require("os")),_fs=_interopRequireDefault(require("fs")),_path=_interopRequireDefault(require("path")),_http=_interopRequireDefault(require("http")),_console=require("console"),_chalk=_interopRequireDefault(require("chalk")),_qrcodeTerminal=_interopRequireDefault(require("qrcode-terminal")),_config=_interopRequireDefault(require("./config")),_BuildModeManager=_interopRequireDefault(require("./buildMode/BuildModeManager.js")),_crypto=_interopRequireDefault(require("crypto")),_util=require("./buildMode/util"),_compilationConfig=require("./compilation-config");Object.keys(_compilationConfig).forEach((function(e){"default"!==e&&"__esModule"!==e&&(Object.prototype.hasOwnProperty.call(_exportNames,e)||e in exports&&exports[e]===_compilationConfig[e]||Object.defineProperty(exports,e,{enumerable:!0,get:function(){return _compilationConfig[e]}}))}));var _recordClient=require("./record-client");Object.keys(_recordClient).forEach((function(e){"default"!==e&&"__esModule"!==e&&(Object.prototype.hasOwnProperty.call(_exportNames,e)||e in exports&&exports[e]===_recordClient[e]||Object.defineProperty(exports,e,{enumerable:!0,get:function(){return _recordClient[e]}}))}));var _eventBus=require("./event-bus");function _interopRequireDefault(e){return e&&e.__esModule?e:{default:e}}Object.keys(_eventBus).forEach((function(e){"default"!==e&&"__esModule"!==e&&(Object.prototype.hasOwnProperty.call(_exportNames,e)||e in exports&&exports[e]===_eventBus[e]||Object.defineProperty(exports,e,{enumerable:!0,get:function(){return _eventBus[e]}}))}));const logLevelMap={};function prependLevel(e,t){if(!logLevelMap[e]){const t=e.toUpperCase();logLevelMap[e]=t}"string"==typeof t[0]&&t[0].length>1&&"["!==t[0][0]&&(t[0]=`[${logLevelMap[e]}] ${t[0]}`)}const logger={logs:[],add(e){this.logs.push(e)},clear(){this.logs=[]},get(){return this.logs.join("\n")}};exports.logger=logger;let originConsole=global.console,console=_console.Console?new _console.Console(process.stdout,process.stderr):originConsole;const colorconsole={attach(e){e&&_console.Console&&(console=new _console.Console(e,e))},trace(...e){prependLevel("trace",e),console.trace(...e)},log(...e){prependLevel("log",e),console.log(_chalk.default.green(...e))},info(...e){prependLevel("info",e),console.info(_chalk.default.green(...e))},warn(...e){prependLevel("warn",e),console.warn(_chalk.default.yellow.bold(...e))},error(...e){prependLevel("error",e),console.error(_chalk.default.red.bold(...e))},throw(...e){throw new Error(_chalk.default.red.bold(...e))}};function logWarn(e,t,r){t&&t.length&&t.forEach((t=>{const o=t.line&&t.column?"@"+t.line+":"+t.column:"";r||(t.reason.startsWith("ERROR")?colorconsole.error(e.resourcePath,o,t.reason):colorconsole.warn(e.resourcePath,o,t.reason))}))}function mkdirsSync(e){return!!_fs.default.existsSync(e)||(mkdirsSync(_path.default.dirname(e))?(_fs.default.mkdirSync(e),!0):void 0)}function getIPv4IPAddress(){const e=_os.default.networkInterfaces();let t;for(const r in e)if(Object.prototype.hasOwnProperty.call(e,r)){if(e[r].every((e=>!("IPv4"===e.family&&!e.internal&&"127.0.0.1"!==e.address)||(t=e,!1))),void 0!==t)break}return t&&t.address}function getServerIPAndPort(e){return(getIPv4IPAddress()||"127.0.0.1")+""+(80===e?"":":"+e)}function getDefaultServerHost(){return getServerIPAndPort(_config.default.server.port)}function getClientIPAddress(e){return stripPrefixForIPV4MappedIPV6Address(e.headers["x-forwarded-for"]||e.connection&&e.connection.remoteAddress||e.socket&&e.socket.remoteAddress||e.connection&&e.connection.socket&&e.connection.socket.remoteAddress)}function stripPrefixForIPV4MappedIPV6Address(e){return/^::1$/.test(e)&&(e="127.0.0.1"),/^::.{0,4}:(\d{1,3}\.){3}\d{1,3}/.test(e)&&(e=e.replace(/^.*:/,"")),e}function outputQRCodeOnTerminal(e){console.info(`\n生成HTTP服务器的二维码: ${e}`),_qrcodeTerminal.default.generate(e,{small:!0})}function relateCwd(e){const t=_config.default.projectPath;return _path.default.relative(t,e)}function equals(e,t,r,...o){if(r){if(r(e,t,...o))return!0}const n=Object.prototype.toString.call(e);if(n!==Object.prototype.toString.call(t))return!1;if("[object Null]"===n||"[object Undefined]"===n)return!0;if("[object Object]"!==n&&"[object Array]"!==n)return Object(e).toString()===Object(t).toString();const s={};Object.keys(e).forEach((e=>s[e]=!0)),Object.keys(t).forEach((e=>s[e]=!0));const a=Object.keys(s);for(let o=0;o<a.length;o++){const n=a[o];if(!equals(e[n],t[n],r,n))return!1}return!0}function extend(e,...t){if("function"==typeof Object.assign)Object.assign(e,...t);else{const r=t.shift();for(const t in r)e[t]=r[t];t.length&&extend(e,...t)}return e}function renderString(e,t){return e.replace(/{{(.*?)}}/gm,((e,r)=>(r=r.trim(),void 0!==t[r]?t[r]:r)))}function KnownError(e){const t=new Error(e);return t.name="KnownError",t.__KNOWN=!0,t}function setCustomConfig(e,t){e=_config.default.projectPath=e||_config.default.projectPath;const r=_path.default.join(e,"quickapp.config.js");if(_fs.default.existsSync(r)){let e={};try{e=require(r)}catch(e){colorconsole.error(`读取项目自定义配置文件出错: ${e.message}`)}const t=Object.assign(_config.default.server,e.server);Object.assign(_config.default,e,{server:t})}t&&(_config.default.server.port=t)}exports.colorconsole=colorconsole;const illegalExtsList=[".css",".less",".scss",".styl",".sass",".log",".json",".js"].map((e=>"app"+e));function getProjectDslName(e){const t=_fs.default.readdirSync(_path.default.join(e,_config.default.sourceRoot)).filter((e=>/^app\..*/.test(e)&&!illegalExtsList.includes(e)));let r;return t&&t[0]?(r=_path.default.extname(t[0]).slice(1),colorconsole.info(`获取到app文件后缀: ${r}`)):colorconsole.error("无法获取正确的app文件后缀"),"ux"===r?"xvm":r}function getDeviceInfo(e,t){const r=_http.default.request({path:"/deviceinfo",host:e.ip,port:e.port,timeout:3e3},(e=>{e.on("data",(e=>{t(null,JSON.parse(e))}))})).on("error",(e=>{t(e)})).on("timeout",(function(){r.abort()}));r.end()}function readJson(e){try{return JSON.parse(_fs.default.readFileSync(e).toString())}catch(t){throw t instanceof SyntaxError?new SyntaxError(`解析 ${e} 失败, 格式错误`):t.message.startsWith("ENOENT:")?(t.message=`读取 ${e} 失败, 找不到该文件`,t):(t.message=`读取 ${e} 失败 ${t.message}`,t)}}function calcDataDigest(e){const t=_crypto.default.createHash("SHA256");return t.update(e),t.digest()}const componentIdMap=new Map,componentPathMap=new Map;function getStyleObjectId(e){if(!componentPathMap.get(e)){const t=getHash(e);componentIdMap.set(t,e),componentPathMap.set(e,t)}return componentPathMap.get(e)}function getHash(e){const t=calcDataDigest(Buffer.from(e,"utf-8")).toString("hex");let r=e;for(let e=Math.min(6,t.length);e<t.length&&(r=t.substring(0,e),componentIdMap.has(r));e++);return r}let manifest;function isNeedFullPackage(){let e=!1;if(!manifest)try{manifest=readJson(_path.default.join(_config.default.projectPath,"./src/manifest.json"))}catch(e){manifest=null}return manifest.router.pages&&Object.keys(manifest.router.pages).length>0&&(e=!0),e}function getUseFullPackage(){let e=!1;if(!manifest)try{manifest=readJson(_path.default.join(_config.default.projectPath,"./src/manifest.json"))}catch(e){manifest=null}return manifest&&manifest.router&&manifest.router.pages&&Object.keys(manifest.router.pages).length>0&&(!manifest.subpackages||0===manifest.subpackages.length)&&manifest.router.widgets&&Object.keys(manifest.router.widgets).length>0&&(e=!0),e}
//# sourceMappingURL=index.js.map