@aiot-toolkit/packager
Version:
@aiot-toolkit/packager
3 lines (2 loc) • 2.5 kB
JavaScript
;var _path=_interopRequireDefault(require("path")),_fs=_interopRequireDefault(require("fs")),_loaderUtils=_interopRequireDefault(require("loader-utils")),_sharedUtils=require("@aiot-toolkit/shared-utils"),_utils=require("../common/utils");function _interopRequireDefault(e){return e&&e.__esModule?e:{default:e}}const REGEXP_INT=/^[-+]?[0-9]+$/,REGEXP_URL=/^['"]?([^()]+?)['"]?$/gi,REGEXP_NAME=/^[a-zA-Z_][a-zA-Z0-9]*$/,validator={integer:function(e){return(e=(e||"").toString()).match(REGEXP_INT)?{value:!0}:{value:!1,reason:function(e,t){return"ERROR: The value `"+t+"` of configuration item `"+e+"` in manifest.json is invalid (only supports integer)"}}},object:function(e){const t=(0,_utils.isPlainObject)(e);return{value:(0,_utils.isPlainObject)(e),reason:t?null:function(e,t){return"ERROR: The value `"+t+"` of configuration item `"+e+"` in manifest.json is invalid (only supports object)"}}},url:function(e){return(e=(e||"").toString().trim()).match(REGEXP_URL)?{value:!0}:{value:!1,reason:function(e,t){return"ERROR: The value `"+t+"` of configuration item `"+e+"` in manifest.json must be a url"}}},name:function(e){return(e=(e||"").toString()).match(REGEXP_NAME)?{value:!0}:{value:!1,reason:function(e,t){return"ERROR: The configuration item `"+e+"` of manifest.json has an incorrect format of value `"+t+"`"}}}},validatorMap={package:{type:validator.string,require:!0},name:{type:validator.string,require:!0},versionCode:{type:validator.integer,require:!0},icon:{type:validator.url,require:!0},banner:{type:validator.url,require:!1},config:{type:validator.object,require:!0},router:{type:validator.object,require:!0}};function validate(e,t){let r,i;const a=validatorMap[e];return a&&"function"==typeof a.type?(r=a.type(t),r.reason&&(i={reason:r.reason(e,t)})):r={value:!0},{value:r.value,log:i}}const requireAttrMap=[];Object.keys(validatorMap).forEach((function(e){validatorMap[e].require&&requireAttrMap.push(e)})),module.exports=function(e,t){const r=_loaderUtils.default.getOptions(this).path,i=JSON.parse(_fs.default.readFileSync(_path.default.join(r,"manifest.json")).toString()),a=[];if(i){let e,t;requireAttrMap.forEach((function(e){i[e]||a.push({line:1,column:1,reason:"ERROR: manifest.json missing configuration items `"+e+"`"})})),Object.keys(i).forEach((r=>{e=i[r],t=validate(r,e),t.log&&a.push({line:1,column:1,reason:t.log.reason})})),(0,_sharedUtils.logWarn)(this,a),global.framework.manifest=i}this.callback(null,e,t)};
//# sourceMappingURL=manifest-loader.js.map