h5-manifest
Advanced tools
Comparing version 1.0.7 to 1.1.9
288
index.js
var fs = require("fs"); | ||
var makeArray = require("make-array"); | ||
var argv = process.argv; | ||
var rootPath = process.cwd(); | ||
var root_path = process.cwd(); | ||
var path = require("path"); | ||
var rewriteExt = require("rewrite-ext"); | ||
var combo = require(".'/lib/combo"); | ||
var nocombo = require("./lib/nocombo"); | ||
var H5Ejs = require("h5-ejs"); | ||
var isDev = !process.env.ENV || process.env.ENV == "dev"; | ||
function h5Manifest(fileStream,filePath,cb){ | ||
var DIR_NANME; | ||
var cssLinkRxg = /<link\s+(?:rel\=[\"\']stylesheet[\"\']\s+)?(?:type\=[\"\']text\/css[\"\']\s+)?href\=[\"\']\{{3}([\w\.\/\'\"\s\-]+)\}{3}[\"\']\s*\/>/g, | ||
hrefRxg = /\{{3}\s*(static|modfile)\s*[\'\"]([\w\.\/\s\-]+)[\'\"]\s*\}{3}/, | ||
imgHrefRxg = /<img\s+src\=[\'\"]\{{3}(static|modfile)\s+[\'\"]([\w\.\/\'\"\s\-]+)[\'\"]\s*\}{3}[\'\"]\s*\/>/g, | ||
bgHrefRxg = /url\([\'\"]?([\w\.\/\s\-]+)[\'\"]?\)/g, | ||
bgSrcRxg = /url\([\'\"]?([\w\.\/\s\-]+)[\'\"]?\)/, | ||
jsSrcRxg = /\{{3}\s*(facade)\s*[\'\"]([\w\.\/\s\-]+)[\'\"]\s*\}{3}/; | ||
var cssRxg = /\<\%\-\s*CSS\([\'\"]([\w\.\/\s\-\,]+)[\'\"]\)\s*\%\>/, | ||
jsRxg = /\<\%\-\s*JS\([\'\"]([\w\.\/\s\-\,]+)[\'\"]\)\s*\%\>/; | ||
function readHTMLFile(file,filePath){ | ||
var has_combo = cssRxg.test(fileStream) || jsRxg.test(fileStream); | ||
var fileStream = file; | ||
var data = has_combo ? combo(fileStream,filePath) : nocombo(fileStream,filePath); | ||
var cssLinkArr = fileStream.match(cssLinkRxg); | ||
var img2HTMLLinkArr = fileStream.match(imgHrefRxg); | ||
//html中所有的css路径 | ||
var css2HtmlArr = readLink(cssLinkArr); | ||
var cssArr = readLink(cssLinkArr).map(function(item){ | ||
return item.link; | ||
new H5Ejs(data,{ | ||
combo:isDev ? false : true | ||
},function(content){ | ||
cb(new Buffer(content)); | ||
}) | ||
//html中的js路径 | ||
//var js2HtmlArr = makeJsArr(file,filePath); | ||
//html路径 | ||
var htmlArr = makeHtmlArr(filePath); | ||
//html中所用的img路径 | ||
var img2HtmlArr = readLink(img2HTMLLinkArr); | ||
var imgArr = img2HtmlArr.map(function(item){ | ||
return item.link | ||
}) | ||
//css中所有的img路径 | ||
var img2CssArr = readImg2Css(css2HtmlArr); | ||
imgArr = imgArr.concat(img2CssArr); | ||
//cortex.js中依赖的js,外部资源和html中的js路径 | ||
var jsArr = concatArr(readJson(), makeJsArr(file,filePath)); | ||
var maps = concatArr(cssArr, imgArr, jsArr, htmlArr); | ||
var cachename = file.replace("html","appcache"); | ||
//writeFile(cachename, maps) | ||
var data = "CACHE MANIFEST\n"; | ||
maps.forEach(function(item){ | ||
data += item + "\n"; | ||
}) | ||
data += "NETWORK:\n*\n"; | ||
return new Buffer(data); | ||
} | ||
function readImg2Css(arr){ | ||
var imgArr = [], imgStrArr = []; | ||
arr.forEach(function(item){ | ||
if(item.type == "modfile"){ | ||
return ; | ||
} | ||
var csslink = "", | ||
cssLinkArr = item.path.split("/"); | ||
for(var i = 0; i< cssLinkArr.length; i++){ | ||
if(cssLinkArr[i] != ".."){ | ||
csslink += "/" + cssLinkArr[i]; | ||
} | ||
} | ||
var cssStream = fs.readFileSync(rootPath + csslink,"utf-8"); | ||
var imgSrcArr = cssStream.match(bgHrefRxg); | ||
makeArray(imgSrcArr).forEach(function(item){ | ||
if(imgArr.indexOf(bgSrcRxg.exec(item)[1]) == -1){ | ||
imgArr.push(transformImgPath(bgSrcRxg.exec(item)[1], cssLinkArr)); | ||
} | ||
}) | ||
}) | ||
makeArray(imgArr).forEach(function(item){ | ||
imgStrArr.push("{{{static '" + item + "'}}}"); | ||
}) | ||
return imgStrArr; | ||
} | ||
function makeHtmlArr(filePath){ | ||
var arr = []; | ||
var htmlStr = "./"+path.basename(filePath); | ||
arr.push(htmlStr); | ||
arr.push(autoUpdate(htmlStr)); | ||
return arr; | ||
} | ||
function autoUpdate(str){ | ||
return str+"?"+new Date().getTime(); | ||
} | ||
function makeJsArr(fileStream,filePath) { | ||
var jsPath = ""; | ||
if(!fileStream.match(jsSrcRxg)){ | ||
return; | ||
} | ||
var jsLink = fileStream.match(jsSrcRxg)[2]; | ||
var js2HtmlArr = jsLink.split("/"); | ||
// 去除空值 | ||
js2HtmlArr = js2HtmlArr.filter(function(item){ | ||
return !!item; | ||
}) | ||
if(js2HtmlArr.length == 1){ | ||
var cortexJson = JSON.parse(fs.readFileSync(rootPath+"/cortex.json","utf-8")); | ||
jsPath = cortexJson.main || "index.js"; | ||
}else if(js2HtmlArr.length > 1){ | ||
// 等于实际地址 | ||
// 去除模块名 | ||
js2HtmlArr.splice(0,1); | ||
// 算出相对文件路径 | ||
jsPath = js2HtmlArr.join("/"); | ||
}else{ | ||
// over | ||
return ""; | ||
} | ||
// 算出html的相对路径,用于本地 | ||
htmlRel = path.dirname(filePath.replace(rootPath,"")).split("/").map(function(item){ | ||
return item ? "../" : "" | ||
}).join(""); | ||
return jsPath ? "{{{static '" +rewriteExt(path.join(htmlRel,jsPath),".js")+ "'}}}" : ""; | ||
} | ||
function readJson(){ | ||
var cortexArr = []; | ||
var cortexJson = JSON.parse(fs.readFileSync(rootPath+"/cortex.json","utf-8")) | ||
var dependencies = cortexJson.dependencies; | ||
var quoteResource = cortexJson.quoteResource || []; | ||
for(var i in dependencies){ | ||
cortexArr.push("{{{modfile '" + i + "'}}}"); | ||
} | ||
for(var j = 0; j < quoteResource.length; j++){ | ||
cortexArr.push(quoteResource[j]); | ||
} | ||
return cortexArr; | ||
} | ||
function concatArr(){ | ||
var arr = [] | ||
for(var i = 0 ;i < arguments.length; i++){ | ||
arr = arr.concat(arguments[i]); | ||
} | ||
return arr; | ||
} | ||
function readLink(arr){ | ||
var newArr = []; | ||
makeArray(arr).forEach(function(item){ | ||
var match = hrefRxg.exec(item); | ||
if(!match) | ||
return ; | ||
var nameArr = match[2].split("/"), | ||
name = nameArr[nameArr.length - 1]; | ||
newArr.push({"link": match[0], "path": match[2], "name": name,"type":match[1]}); | ||
}) | ||
return newArr; | ||
} | ||
function transformImgPath(imgpath, csspath) { | ||
var imgPathArr = imgpath.split("/"); | ||
if(imgPathArr[0] !== ".."){ | ||
if(imgPathArr[1] == ".."){ | ||
var cssArr = [],imgArr = []; | ||
imgPathArr.splice(0, 1); | ||
for(var i = csspath.length; i > 0; i--){ | ||
if(!/^([\w\/\s\-]+)\.css$/.test(csspath[i - 1])){ | ||
cssArr.push(csspath[i - 1]); | ||
} | ||
} | ||
for(var i = 0; i < imgPathArr.length; i++){ | ||
if(imgPathArr[0] == ".."){ | ||
cssArr.splice(0, 1); | ||
imgPathArr.splice(0,1); | ||
} | ||
} | ||
imgArr = concatArr(cssArr.reverse(), imgPathArr); | ||
return imgArr.join("/"); | ||
}else{ | ||
imgPathArr[0] == "." ? imgPathArr.splice(0,1) : function() {}; | ||
for(var i = csspath.length ; i > 0; i--){ | ||
if(!/^([\w\/\s\-]+)\.css$/.test(csspath[i - 1])){ | ||
imgPathArr.splice(0,0,csspath[i - 1]); | ||
} | ||
} | ||
return imgPathArr.join("/"); | ||
} | ||
}else{ | ||
var cssArr = [],imgArr = []; | ||
for(var i = csspath.length; i > 0; i--){ | ||
if(!/^([\w\/\s\-]+)\.css$/.test(csspath[i - 1])){ | ||
cssArr.push(csspath[i - 1]); | ||
} | ||
} | ||
for(var i = 0; i < imgPathArr.length; i++){ | ||
if(imgPathArr[0] == ".."){ | ||
cssArr.splice(0, 1); | ||
imgPathArr.splice(0,1); | ||
} | ||
} | ||
imgArr = concatArr(cssArr.reverse(), imgPathArr); | ||
return imgArr.join("/") | ||
} | ||
} | ||
module.exports = readHTMLFile; | ||
module.exports = h5Manifest |
{ | ||
"name": "h5-manifest", | ||
"version": "1.0.7", | ||
"version": "1.1.9", | ||
"description": "", | ||
@@ -20,2 +20,3 @@ "main": "index.js", | ||
"dependencies": { | ||
"h5-ejs": "^1.0.14", | ||
"make-array": "^0.1.2", | ||
@@ -22,0 +23,0 @@ "rewrite-ext": "^0.2.0" |
Major refactor
Supply chain riskPackage has recently undergone a major refactor. It may be unstable or indicate significant internal changes. Use caution when updating to versions that include significant changes.
Found 1 instance in 1 package
Environment variable access
Supply chain riskPackage accesses environment variables, which may be a sign of credential stuffing or data theft.
Found 1 instance in 1 package
12932
7
361
3
5
1
+ Addedh5-ejs@^1.0.14
+ Addedamdefine@1.0.1(transitive)
+ Addedansi-regex@0.2.1(transitive)
+ Addedansi-styles@1.1.0(transitive)
+ Addedarray-find-index@1.0.2(transitive)
+ Addedasync@0.2.100.8.00.9.21.5.2(transitive)
+ Addedbalanced-match@1.0.2(transitive)
+ Addedbrace-expansion@1.1.11(transitive)
+ Addedcamelcase@2.1.1(transitive)
+ Addedcamelcase-keys@2.1.0(transitive)
+ Addedchalk@0.5.1(transitive)
+ Addedclone-stats@0.0.1(transitive)
+ Addedcomment-json@0.1.11(transitive)
+ Addedconcat-map@0.0.1(transitive)
+ Addedcore-util-is@1.0.3(transitive)
+ Addedcortex-deps-traveller@3.0.1(transitive)
+ Addedcortex-handlebars-compiler@1.5.4(transitive)
+ Addedcortex-shrinkwrap@5.0.0(transitive)
+ Addedcurrently-unhandled@0.4.1(transitive)
+ Addeddateformat@1.0.12(transitive)
+ Addeddecamelize@1.2.0(transitive)
+ Addeddpciconfig@1.0.1(transitive)
+ Addedduplexer2@0.0.2(transitive)
+ Addedejs@2.7.4(transitive)
+ Addederror-ex@1.3.2(transitive)
+ Addedescape-string-regexp@1.0.5(transitive)
+ Addedesprima@1.2.5(transitive)
+ Addedfind-up@1.1.2(transitive)
+ Addedfs-expand@0.2.2(transitive)
+ Addedfs-extra@0.8.1(transitive)
+ Addedfunction-bind@1.1.2(transitive)
+ Addedgen-graph@0.1.4(transitive)
+ Addedget-stdin@4.0.1(transitive)
+ Addedgithub-url-from-git@1.1.11.5.0(transitive)
+ Addedgithub-url-from-username-repo@0.2.01.0.2(transitive)
+ Addedglob@4.5.35.0.15(transitive)
+ Addedgraceful-fs@3.0.124.2.11(transitive)
+ Addedgulp-cortex-handlebars-compiler@1.2.7(transitive)
+ Addedgulp-util@2.2.20(transitive)
+ Addedh5-ejs@1.0.19(transitive)
+ Addedhandlebars@2.0.0(transitive)
+ Addedhas-ansi@0.1.0(transitive)
+ Addedhasown@2.0.2(transitive)
+ Addedhome@0.1.8(transitive)
+ Addedhosted-git-info@2.8.9(transitive)
+ Addedindent-string@2.1.0(transitive)
+ Addedinflight@1.0.6(transitive)
+ Addedinherits@2.0.4(transitive)
+ Addedis-arrayish@0.2.1(transitive)
+ Addedis-core-module@2.16.1(transitive)
+ Addedis-finite@1.1.0(transitive)
+ Addedis-utf8@0.2.1(transitive)
+ Addedisarray@0.0.1(transitive)
+ Addedjju@1.4.0(transitive)
+ Addedjson-parse-helpfulerror@1.0.3(transitive)
+ Addedjson-parser@0.2.4(transitive)
+ Addedjsonfile@1.1.11.2.0(transitive)
+ Addedload-json-file@1.1.0(transitive)
+ Addedlodash._escapehtmlchar@2.4.1(transitive)
+ Addedlodash._escapestringchar@2.4.1(transitive)
+ Addedlodash._htmlescapes@2.4.1(transitive)
+ Addedlodash._isnative@2.4.1(transitive)
+ Addedlodash._objecttypes@2.4.1(transitive)
+ Addedlodash._reinterpolate@2.4.1(transitive)
+ Addedlodash._reunescapedhtml@2.4.1(transitive)
+ Addedlodash._shimkeys@2.4.1(transitive)
+ Addedlodash.defaults@2.4.1(transitive)
+ Addedlodash.escape@2.4.1(transitive)
+ Addedlodash.isobject@2.4.1(transitive)
+ Addedlodash.keys@2.4.1(transitive)
+ Addedlodash.template@2.4.1(transitive)
+ Addedlodash.templatesettings@2.4.1(transitive)
+ Addedlodash.values@2.4.1(transitive)
+ Addedlog@1.4.0(transitive)
+ Addedloud-rejection@1.6.0(transitive)
+ Addedmap-obj@1.0.1(transitive)
+ Addedmeow@3.7.0(transitive)
+ Addedminimatch@2.0.103.1.2(transitive)
+ Addedminimist@0.2.41.2.8(transitive)
+ Addedmix2@1.0.5(transitive)
+ Addedmkdirp@0.3.50.5.6(transitive)
+ Addedmoment@2.30.1(transitive)
+ Addedmultimap@0.0.2(transitive)
+ Addedmultipipe@0.1.2(transitive)
+ Addednatives@1.1.6(transitive)
+ Addedncp@0.4.2(transitive)
+ Addedneuron-graph@1.0.2(transitive)
+ Addedneuron-pkg@0.1.5(transitive)
+ Addednormalize-package-data@0.4.21.0.32.5.0(transitive)
+ Addedobject-assign@4.1.1(transitive)
+ Addedobject-keys@0.4.0(transitive)
+ Addedonce@1.4.0(transitive)
+ Addedoptimist@0.3.7(transitive)
+ Addedparse-json@2.2.0(transitive)
+ Addedpath-exists@2.1.0(transitive)
+ Addedpath-is-absolute@1.0.1(transitive)
+ Addedpath-parse@1.0.7(transitive)
+ Addedpath-type@1.1.0(transitive)
+ Addedpify@2.3.0(transitive)
+ Addedpinkie@2.0.4(transitive)
+ Addedpinkie-promise@2.0.1(transitive)
+ Addedq@1.5.1(transitive)
+ Addedread-cortex-json@2.3.03.6.1(transitive)
+ Addedread-package-json@1.3.3(transitive)
+ Addedread-pkg@1.1.0(transitive)
+ Addedread-pkg-up@1.0.1(transitive)
+ Addedreadable-stream@1.0.341.1.14(transitive)
+ Addedredent@1.0.0(transitive)
+ Addedrepeating@2.0.1(transitive)
+ Addedresolve@1.22.10(transitive)
+ Addedrimraf@2.2.8(transitive)
+ Addedsemver@2.3.23.0.15.7.2(transitive)
+ Addedsemver-extra@1.0.5(transitive)
+ Addedshrinked@0.1.5(transitive)
+ Addedsignal-exit@3.0.7(transitive)
+ Addedsorted-object@1.0.0(transitive)
+ Addedsource-map@0.1.43(transitive)
+ Addedspdx-correct@3.2.0(transitive)
+ Addedspdx-exceptions@2.5.0(transitive)
+ Addedspdx-expression-parse@3.0.1(transitive)
+ Addedspdx-license-ids@3.0.21(transitive)
+ Addedstring_decoder@0.10.31(transitive)
+ Addedstrip-ansi@0.3.0(transitive)
+ Addedstrip-bom@2.0.0(transitive)
+ Addedstrip-indent@1.0.1(transitive)
+ Addedsupports-color@0.2.0(transitive)
+ Addedsupports-preserve-symlinks-flag@1.0.0(transitive)
+ Addedthrough2@0.4.20.5.1(transitive)
+ Addedtrim-newlines@1.0.0(transitive)
+ Addeduglify-js@2.3.6(transitive)
+ Addedunderscore@1.13.7(transitive)
+ Addedvalidate-npm-package-license@3.0.4(transitive)
+ Addedvinyl@0.2.3(transitive)
+ Addedwordwrap@0.0.3(transitive)
+ Addedwrappy@1.0.2(transitive)
+ Addedxtend@2.1.23.0.0(transitive)