@aiot-toolkit/packager
Version:
@aiot-toolkit/packager
3 lines (2 loc) • 4.26 kB
JavaScript
;Object.defineProperty(exports,"__esModule",{value:!0}),exports.getBabelConfigJsPath=getBabelConfigJsPath,exports.isEmptyObject=isEmptyObject,exports.getFilenameByPath=getFilenameByPath,exports.serialize=serialize,exports.sortFilesBy=sortFilesBy,exports.lsdirdeep=lsdirdeep,exports.loaderWrapper=loaderWrapper,exports.isPlainObject=isPlainObject,exports.calcDataDigest=calcDataDigest,exports.genPriorities=genPriorities,exports.mergeDeep=mergeDeep,exports.createMetaForBuild=createMetaForBuild,exports.FRAG_TYPE=exports.ENTRY_TYPE=void 0;var _fs=_interopRequireDefault(require("fs")),_path=_interopRequireDefault(require("path")),_crypto=_interopRequireDefault(require("crypto")),_sharedUtils=require("@aiot-toolkit/shared-utils"),_ziputil=require("./ziputil"),_constant=require("./constant");function _interopRequireDefault(e){return e&&e.__esModule?e:{default:e}}function getBabelConfigJsPath(e){let t=_path.default.join(e,"babel.config.js");return _fs.default.existsSync(t)||(t=_path.default.resolve(__dirname,"../../babel.config.js")),t}function isEmptyObject(e){if(!e)return!0;for(const t in e)return!1;return!0}function getFilenameByPath(e){return _path.default.relative(".",e)}function serialize(e,t){const r=typeof e;if("undefined"===r)return e;if("function"===r)return e.toString();const n=[];let i=-1,o=`__FKS_${Math.random().toString(16).slice(2,10)}_FKE__`;const s=JSON.stringify(e,((e,t)=>"function"==typeof t?"":t));for(;s.indexOf(o)>-1;)o=`_${o}_`;let a=JSON.stringify(e,(function(e,t){return"function"==typeof t?(n.push(t),i++,o+i):t}),t);const c=new RegExp(`"${o}(\\d+)"`,"g");return a=a.replace(c,((e,t)=>n[t].toString())),a}function predicate(e){return"string"==typeof e?e===this.toString():this.match(e)}function sortFilesBy(e,t){const r=e.length;return e=e.sort(((e,n)=>{let i=t.findIndex(predicate,e),o=t.findIndex(predicate,n);return i=-1===i?r:i,o=-1===o?r:o,i-o}))}function lsdirdeep(e,t=_fs.default){return function e(t,r,n){let i=[];const o=_path.default.posix.join(t,r);return n.readdirSync(o).forEach((s=>{const a=_path.default.posix.join(o,s),c=_path.default.posix.join(r,s);n.statSync(a).isFile()?i.push(c):i=i.concat(e(t,c,n))})),i}(e,".",t)}function loaderWrapper(e,t){Array.isArray(t.use)||(t.use=[t.use]),t.use.unshift({loader:require.resolve("../loaders/module-loader")}),t.use.push({loader:require.resolve("../loaders/manifest-loader"),options:{path:e}})}const toString=Object.prototype.toString,OBJECT_STRING="[object Object]";function isPlainObject(e){return toString.call(e)===OBJECT_STRING}const ENTRY_TYPE={APP:"app",PAGE:"page",COMP:"comp",CARD:"card",FLOAT:"float",JS:"js"};exports.ENTRY_TYPE=ENTRY_TYPE;const FRAG_TYPE={IMPORT:"import",TEMPLATE:"template",STYLE:"style",SCRIPT:"script"};function calcDataDigest(e){const t=_crypto.default.createHash("SHA256");return t.update(e),t.digest()}function getEntrySkeleton(e,t){if(!e)return[];const{singleMap:r,anchorMaps:n}=e;let i=[];const o=Object.keys(r||{}).find((e=>e===t));o&&i.push(r[o]);const s=Array.from(n||[]).find((e=>e.page===t));return s&&(i=i.concat(Object.keys(s.skeletonMap||{}).map((e=>s.skeletonMap[e])))),i=i.map((e=>new RegExp(`skeleton/page/${e}$`))),i}function genPriorities(e,t){const r=[/^i18n\/.+\.json$/i,/^manifest-\w+\.json$/,"manifest.json","app.js",/page-chunks.json$/,/skeleton\/config\.json$/,/^common\//i];if(e&&e.router&&e.router.entry){const n=e.router.entry,i=getEntrySkeleton(t,n);r.splice(5,0,...i,new RegExp(`^${n}/$`),new RegExp(`^${n}/.+`))}else _sharedUtils.colorconsole.error("Entry page router.entry is not configured in manifest.json");return r}function mergeDeep(e,...t){if(!t.length)return e;const r=t.shift();if(isPlainObject(e)&&isPlainObject(r))for(const t in r)isPlainObject(r[t])?(e[t]||Object.assign(e,{[t]:{}}),mergeDeep(e[t],r[t])):Object.assign(e,{[t]:r[t]});return mergeDeep(e,...t)}async function createMetaForBuild(e,t){try{(await(0,_ziputil.createFileListFromZipBuffer)(e)).fileList.filter((e=>(e.path||"").startsWith(_constant.DIGEST_ZIP_DIR))).map((e=>{let{path:r,content:n}=e,i=_path.default.join(t,r);"/"===r[r.length-1]?(0,_sharedUtils.mkdirsSync)(i):_fs.default.writeFileSync(i,n)}))}catch(e){_sharedUtils.colorconsole.error(e)}}exports.FRAG_TYPE=FRAG_TYPE;
//# sourceMappingURL=utils.js.map