UNPKG

@ohos/hpm-cli

Version:

CLI for HarmonyOS package manager

1,138 lines (1,130 loc) 47.8 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); exports.Manifest = void 0; var _semver = _interopRequireDefault(require("semver")); var _path2 = _interopRequireDefault(require("path")); var _fs = _interopRequireDefault(require("fs")); var _url = _interopRequireDefault(require("url")); var _helpers = require("../utils/helpers"); var _common = require("../utils/common"); var _dependency = require("./dependency"); var _i18n = require("../i18n"); function _interopRequireDefault(e) { return e && e.__esModule ? e : { "default": e }; } function _toConsumableArray(r) { return _arrayWithoutHoles(r) || _iterableToArray(r) || _unsupportedIterableToArray(r) || _nonIterableSpread(); } function _nonIterableSpread() { throw new TypeError("Invalid attempt to spread non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method."); } function _iterableToArray(r) { if ("undefined" != typeof Symbol && null != r[Symbol.iterator] || null != r["@@iterator"]) return Array.from(r); } function _arrayWithoutHoles(r) { if (Array.isArray(r)) return _arrayLikeToArray(r); } function ownKeys(e, r) { var t = Object.keys(e); if (Object.getOwnPropertySymbols) { var o = Object.getOwnPropertySymbols(e); r && (o = o.filter(function (r) { return Object.getOwnPropertyDescriptor(e, r).enumerable; })), t.push.apply(t, o); } return t; } function _objectSpread(e) { for (var r = 1; r < arguments.length; r++) { var t = null != arguments[r] ? arguments[r] : {}; r % 2 ? ownKeys(Object(t), !0).forEach(function (r) { _defineProperty(e, r, t[r]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(e, Object.getOwnPropertyDescriptors(t)) : ownKeys(Object(t)).forEach(function (r) { Object.defineProperty(e, r, Object.getOwnPropertyDescriptor(t, r)); }); } return e; } function _defineProperty(e, r, t) { return (r = _toPropertyKey(r)) in e ? Object.defineProperty(e, r, { value: t, enumerable: !0, configurable: !0, writable: !0 }) : e[r] = t, e; } function _readOnlyError(r) { throw new TypeError('"' + r + '" is read-only'); } function _classPrivateFieldInitSpec(e, t, a) { _checkPrivateRedeclaration(e, t), t.set(e, a); } function _checkPrivateRedeclaration(e, t) { if (t.has(e)) throw new TypeError("Cannot initialize the same private elements twice on an object"); } function _classPrivateFieldGet(s, a) { return s.get(_assertClassBrand(s, a)); } function _classPrivateFieldSet(s, a, r) { return s.set(_assertClassBrand(s, a), r), r; } function _assertClassBrand(e, t, n) { if ("function" == typeof e ? e === t : e.has(t)) return arguments.length < 3 ? t : n; throw new TypeError("Private element is not present on this object"); } function _createForOfIteratorHelper(r, e) { var t = "undefined" != typeof Symbol && r[Symbol.iterator] || r["@@iterator"]; if (!t) { if (Array.isArray(r) || (t = _unsupportedIterableToArray(r)) || e && r && "number" == typeof r.length) { t && (r = t); var _n = 0, F = function F() {}; return { s: F, n: function n() { return _n >= r.length ? { done: !0 } : { done: !1, value: r[_n++] }; }, e: function e(r) { throw r; }, f: F }; } throw new TypeError("Invalid attempt to iterate non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method."); } var o, a = !0, u = !1; return { s: function s() { t = t.call(r); }, n: function n() { var r = t.next(); return a = r.done, r; }, e: function e(r) { u = !0, o = r; }, f: function f() { try { a || null == t["return"] || t["return"](); } finally { if (u) throw o; } } }; } function _unsupportedIterableToArray(r, a) { if (r) { if ("string" == typeof r) return _arrayLikeToArray(r, a); var t = {}.toString.call(r).slice(8, -1); return "Object" === t && r.constructor && (t = r.constructor.name), "Map" === t || "Set" === t ? Array.from(r) : "Arguments" === t || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(t) ? _arrayLikeToArray(r, a) : void 0; } } function _arrayLikeToArray(r, a) { (null == a || a > r.length) && (a = r.length); for (var e = 0, n = Array(a); e < a; e++) n[e] = r[e]; return n; } function _typeof(o) { "@babel/helpers - typeof"; return _typeof = "function" == typeof Symbol && "symbol" == typeof Symbol.iterator ? function (o) { return typeof o; } : function (o) { return o && "function" == typeof Symbol && o.constructor === Symbol && o !== Symbol.prototype ? "symbol" : typeof o; }, _typeof(o); } function _classCallCheck(a, n) { if (!(a instanceof n)) throw new TypeError("Cannot call a class as a function"); } function _defineProperties(e, r) { for (var t = 0; t < r.length; t++) { var o = r[t]; o.enumerable = o.enumerable || !1, o.configurable = !0, "value" in o && (o.writable = !0), Object.defineProperty(e, _toPropertyKey(o.key), o); } } function _createClass(e, r, t) { return r && _defineProperties(e.prototype, r), t && _defineProperties(e, t), Object.defineProperty(e, "prototype", { writable: !1 }), e; } function _toPropertyKey(t) { var i = _toPrimitive(t, "string"); return "symbol" == _typeof(i) ? i : i + ""; } function _toPrimitive(t, r) { if ("object" != _typeof(t) || !t) return t; var e = t[Symbol.toPrimitive]; if (void 0 !== e) { var i = e.call(t, r || "default"); if ("object" != _typeof(i)) return i; throw new TypeError("@@toPrimitive must return a primitive value."); } return ("string" === r ? String : Number)(t); } /* * Copyright (c) 2020-2021 Huawei Device Co., Ltd. * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ var Manifest = exports.Manifest = { Validator: /*#__PURE__*/function () { function Validator() { _classCallCheck(this, Validator); } return _createClass(Validator, null, [{ key: "name", value: function name(_name) { if (!_name) return (0, _i18n.getI18nMessage)('validate.nameIsNotNull'); if ((0, _helpers.memorySizeOf)(_name) > 256) return (0, _i18n.getI18nMessage)('validate.nameLengthLess256'); var info = (0, _helpers.parseScopeName)(_name); if (info.scope) { if (!/^@[0-9a-z_]+$/g.test(info.scope)) return (0, _i18n.getI18nMessage)('validate.nameContain'); if (!/^@[0-9a-z]/g.test(info.scope)) return (0, _i18n.getI18nMessage)('validate.nameStartWith'); } if (!/^[0-9a-zA-Z-_.]+$/g.test(info.name)) return (0, _i18n.getI18nMessage)('validate.nameContain'); if (!/^[0-9a-zA-Z]/g.test(info.name)) return (0, _i18n.getI18nMessage)('validate.nameStartWith'); return true; } }, { key: "version", value: function version(_version) { if (_version === null || _version === undefined) return (0, _i18n.getI18nMessage)('validate.versionIsNotNull'); if (!_semver["default"].valid(_version)) return (0, _i18n.getI18nMessage)('validate.versionSemantic'); if ((0, _helpers.memorySizeOf)(_version) > 64) return (0, _i18n.getI18nMessage)('validate.versionLengthLess64'); return true; } }, { key: "nameVersion", value: function nameVersion(name, version) { if (name.length + version.length > 200) { return (0, _i18n.getI18nMessage)('validate.nameVersionLengthLess200'); } return true; } }, { key: "publishAs", value: function publishAs(_publishAs) { var _ref = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {}, permission = _ref.permission; if (['binary', 'chip-definition', 'code-segment', 'distribution', 'model', 'plugin', 'source', 'template'].indexOf(_publishAs) === -1) return (0, _i18n.getI18nMessage)('validate.publishAsType'); if (_publishAs === 'chip-definition') { var isValid = Manifest.Validator.permission(permission); if (isValid !== true) { return isValid; } if (permission.authServer !== 'devicePartner') { return (0, _i18n.getI18nMessage)('validate.authServerIsFault'); } } return true; } }, { key: "dirs", value: function dirs(_dirs) { if (_typeof(_dirs) !== 'object') return (0, _i18n.getI18nMessage)('validate.dirsInvalid'); for (var dir in _dirs) { var pattern = _dirs[dir]; if (typeof pattern === 'string' && pattern.startsWith('@')) { dir = dir.split(_path2["default"].sep).join(''); } if (/[~'?()*]/.test(dir) || encodeURI(dir) !== dir) return (0, _i18n.getI18nMessage)('validate.dirNameInvalid', { dir: dir }); if (typeof pattern !== 'string' && !Array.isArray(pattern)) return (0, _i18n.getI18nMessage)('validate.dirPatternInvalid', { dir: dir }); if (Array.isArray(pattern) && pattern.find(function (p) { return typeof p !== 'string'; })) return (0, _i18n.getI18nMessage)('validate.dirPatternInvalid', { dir: dir }); } return true; } }, { key: "scripts", value: function scripts(_scripts) { if (_scripts === null || _scripts === undefined) return (0, _i18n.getI18nMessage)('validate.scriptIsNotNull'); if (_typeof(_scripts) !== 'object') return (0, _i18n.getI18nMessage)('validate.scriptIsObject'); return true; } }, { key: "dependencies", value: function dependencies(_dependencies) { if (_dependencies === null || _dependencies === undefined) return (0, _i18n.getI18nMessage)('validate.dependenciesIsNotNull'); if (!(0, _helpers.isObject)(_dependencies)) return (0, _i18n.getI18nMessage)('validate.dependenciesIsObject'); for (var bundle in _dependencies) { var normalized = normalizeDependencyName(bundle); if (normalized.isTag) return true; if (Manifest.Validator.name(normalized.name) !== true) return (0, _i18n.getI18nMessage)('validate.dependencyInvalid', { bundle: bundle }); var version = (0, _helpers.isObject)(_dependencies[bundle]) ? _dependencies[bundle].version : _dependencies[bundle]; if (!_semver["default"].validRange(version)) return (0, _i18n.getI18nMessage)('validate.dependencyInvalidRange', { bundle: bundle }); } return true; } }, { key: "base", value: function base(_base) { if (_base === null || _base === undefined) return (0, _i18n.getI18nMessage)('validate.baseIsNotNull'); if (!(0, _helpers.isObject)(_base)) return (0, _i18n.getI18nMessage)('validate.baseIsObject'); if (Manifest.Validator.name(_base.name) !== true) return (0, _i18n.getI18nMessage)('validate.baseNameInvalid'); if (!_semver["default"].validRange(_base.version)) return (0, _i18n.getI18nMessage)('validate.baseRangeInvalid'); return true; } }, { key: "excludes", value: function excludes(_excludes) { if (!Array.isArray(_excludes)) return (0, _i18n.getI18nMessage)('validate.excludeNameArray'); if (!_excludes.every(function (name) { return typeof name === 'string' && Manifest.Validator.name(name) === true; })) return (0, _i18n.getI18nMessage)('validate.excludeNameArray'); return true; } }, { key: "envs", value: function envs(_envs) { if (!(0, _helpers.isObject)(_envs)) return (0, _i18n.getI18nMessage)('validate.envsIsObject'); return true; } }, { key: "description", value: function description(_description) { if (typeof _description !== 'string') return (0, _i18n.getI18nMessage)('validate.descriptionIsString'); if (_description.length > 500) return (0, _i18n.getI18nMessage)('validate.descriptionLengthLess500'); return true; } }, { key: "branch", value: function branch(_branch) { if (!_branch) return (0, _i18n.getI18nMessage)('validate.branchIsNotNull'); if (typeof _branch !== 'string') return (0, _i18n.getI18nMessage)('validate.branchIsString'); return true; } }, { key: "variant", value: function variant(_variant) { if (!_variant) return (0, _i18n.getI18nMessage)('validate.variantIsNotNull'); if (typeof _variant !== 'string') return (0, _i18n.getI18nMessage)('validate.variantIsString'); return true; } }, { key: "os", value: function os(_os) { if (!_os) return (0, _i18n.getI18nMessage)('validate.osIsNotNull'); if (typeof _os !== 'string') return (0, _i18n.getI18nMessage)('validate.osIsString'); if (['win', 'linux', 'mac', 'ohos'].indexOf(_os) === -1) return (0, _i18n.getI18nMessage)('validate.osType'); return true; } }, { key: "buildArch", value: function buildArch(_buildArch) { if (!_buildArch) return (0, _i18n.getI18nMessage)('validate.buildArchIsNotNull'); if (typeof _buildArch !== 'string') return (0, _i18n.getI18nMessage)('validate.buildArchIsString'); return true; } }, { key: "pub_deps", value: function pub_deps(_pub_deps) { return true; } }, { key: "rom", value: function rom(_rom) { if (typeof _rom === 'number') return true; if (typeof _rom === 'string') { if (_rom.match(/^\d{1,}(k|m|K|M|\d)$/)) { return true; } } return (0, _i18n.getI18nMessage)('validate.rom'); } }, { key: "ram", value: function ram(_ram) { if (typeof _ram === 'number') return true; if (typeof _ram === 'string') { if (_ram.match(/^\d{1,}(k|m|K|M|\d)$/)) { return true; } } return (0, _i18n.getI18nMessage)('validate.ram'); } }, { key: "ohos", value: function ohos(_ohos) { if (_typeof(_ohos) === 'object' && Object.keys(_ohos).includes('os') && Object.keys(_ohos).includes('board') && Object.keys(_ohos).includes('kernel')) { if (typeof _ohos.os !== 'string') { return (0, _i18n.getI18nMessage)('validate.ohosIsString'); } if (typeof _ohos.board !== 'string') { return (0, _i18n.getI18nMessage)('validate.board'); } if (typeof _ohos.kernel !== 'string') { return (0, _i18n.getI18nMessage)('validate.kernel'); } return true; } return (0, _i18n.getI18nMessage)('validate.ohos'); } }, { key: "author", value: function author(_author) { if (!_author) return (0, _i18n.getI18nMessage)('validate.authorIsNotNull'); if (!(0, _helpers.isObject)(_author)) { return (0, _i18n.getI18nMessage)('validate.authorIsObject'); } var validKeys = ['name', 'email', 'url', 'id']; for (var key in _author) { if (!validKeys.includes(key)) return (0, _i18n.getI18nMessage)('validate.author'); } return true; } }, { key: "contributors", value: function contributors(_contributors) { if (!_contributors) return (0, _i18n.getI18nMessage)('validate.contributorsIsNotNull'); if (!(_contributors instanceof Array) && !(0, _helpers.isObject)(_contributors)) { return (0, _i18n.getI18nMessage)('validate.contributorsIsArrayOrObject'); } if (_contributors instanceof Array) { var validKeys = ['name', 'email', 'url']; var _iterator = _createForOfIteratorHelper(_contributors), _step; try { for (_iterator.s(); !(_step = _iterator.n()).done;) { var contributor = _step.value; if (!(0, _helpers.isObject)(contributor)) return (0, _i18n.getI18nMessage)('validate.contributorsContent'); for (var key in contributor) { if (!validKeys.includes(key)) return (0, _i18n.getI18nMessage)('validate.contributorsContent'); } } } catch (err) { _iterator.e(err); } finally { _iterator.f(); } } return true; } }, { key: "keywords", value: function keywords(_keywords) { if (!(_keywords instanceof Array)) return (0, _i18n.getI18nMessage)('validate.keywordsIsArray'); if (_keywords.length > 20) return (0, _i18n.getI18nMessage)('validate.keywordsLengthLess20'); if ((0, _helpers.memorySizeOf)(_keywords) > 255) return (0, _i18n.getI18nMessage)('validate.keywordsLengthLess255'); var _iterator2 = _createForOfIteratorHelper(_keywords), _step2; try { for (_iterator2.s(); !(_step2 = _iterator2.n()).done;) { var word = _step2.value; if (typeof word !== 'string') return (0, _i18n.getI18nMessage)('validate.keywordIsString'); if (!/^[0-9A-Za-z-_\s]+$/g.test(word)) return (0, _i18n.getI18nMessage)('validate.keywordContent'); if (word.length > 100) return (0, _i18n.getI18nMessage)('validate.lengthLess', { key: 'keyword', length: 100 }); } } catch (err) { _iterator2.e(err); } finally { _iterator2.f(); } return true; } }, { key: "tags", value: function tags(_tags) { if (!(_tags instanceof Array)) return (0, _i18n.getI18nMessage)('validate.tagsIsArray'); if ((0, _helpers.memorySizeOf)(_tags) > 128) return (0, _i18n.getI18nMessage)('validate.tagsLengthLess128'); var _iterator3 = _createForOfIteratorHelper(_tags), _step3; try { for (_iterator3.s(); !(_step3 = _iterator3.n()).done;) { var tag = _step3.value; if (typeof tag !== 'string') return (0, _i18n.getI18nMessage)('validate.tagIsString'); if (tag.length > 100) return (0, _i18n.getI18nMessage)('validate.lengthLess', { key: 'tag', length: 100 }); } } catch (err) { _iterator3.e(err); } finally { _iterator3.f(); } return true; } }, { key: "homepage", value: function homepage(_homepage) { if (typeof _homepage !== 'string') return (0, _i18n.getI18nMessage)('validate.homepageIsString'); if (!/^https?:\/\//.test(_homepage)) return (0, _i18n.getI18nMessage)('validate.homepageStartWith'); return true; } }, { key: "repository", value: function repository(_repository) { if (typeof _repository !== 'string') return (0, _i18n.getI18nMessage)('validate.repositoryIsString'); if (!/^https?:\/\//.test(_repository)) return (0, _i18n.getI18nMessage)('validate.repositoryStartWith'); return true; } }, { key: "license", value: function license(_license) { if (typeof _license !== 'string') return (0, _i18n.getI18nMessage)('validate.licenseIsString'); if ((0, _helpers.memorySizeOf)(_license) > 256) return (0, _i18n.getI18nMessage)('validate.licenseLengthLess256'); return true; } }, { key: "noticeFile", value: function noticeFile(_noticeFile) { if (typeof _noticeFile !== 'string') return (0, _i18n.getI18nMessage)('validate.noticeFileIsString'); if (_noticeFile.length > 100) return (0, _i18n.getI18nMessage)('validate.noticeFileLengthLess100'); return true; } }, { key: "plugin", value: function plugin(_plugin) { return true; } }, { key: "isPrivate", value: function isPrivate(_isPrivate) { if (typeof _isPrivate !== 'boolean') return (0, _i18n.getI18nMessage)('validate.privateIsBoolean'); return true; } // 增加segment字段的校验 }, { key: "segment", value: function segment(_segment) { var keys = Object.keys(_segment); if (_typeof(_segment) === 'object' && keys.includes('destPath')) { if (keys.includes('insteadOfHook') && typeof _segment.insteadOfHook !== 'boolean') { return (0, _i18n.getI18nMessage)('validate.insteadOfHookIsBoolean'); } if (typeof _segment.destPath !== 'string') { return (0, _i18n.getI18nMessage)('validate.destPathIsString'); } return true; } return (0, _i18n.getI18nMessage)('validate.segmentContent'); } }, { key: "permission", value: function permission(_permission) { if (_typeof(_permission) === 'object' && Object.keys(_permission).includes('authServer')) { if (typeof _permission.authServer !== 'string') { return (0, _i18n.getI18nMessage)('validate.authServerIsString'); } return true; } return (0, _i18n.getI18nMessage)('validate.permission'); } }, { key: "readmePath", value: function readmePath(_readmePath) { if (!(0, _helpers.isObject)(_readmePath)) { return (0, _i18n.getI18nMessage)('validate.readmePathIsObject'); } return true; } }, { key: "licensePath", value: function licensePath(_licensePath) { if (typeof _licensePath !== 'string') { return (0, _i18n.getI18nMessage)('validate.licensePathIsString'); } return true; } }, { key: "chipDefinition", value: function chipDefinition(_chipDefinition) { if (_typeof(_chipDefinition) === 'object' && Object.keys(_chipDefinition).includes('baseInfo')) { var isValidBaseInfo = Manifest.Validator.baseInfo(_chipDefinition.baseInfo); if (isValidBaseInfo !== true) { return isValidBaseInfo; } return true; } return (0, _i18n.getI18nMessage)('validate.chipDefinition'); } }, { key: "baseInfo", value: function baseInfo(_baseInfo) { if (!(0, _helpers.isObject)(_baseInfo)) { return (0, _i18n.getI18nMessage)('validate.baseInfo'); } for (var key in _baseInfo) { if (typeof _baseInfo[key] !== 'string') return (0, _i18n.getI18nMessage)('validate.keyIsString', { key: key }); var callBack = Manifest.Validator[key]; if (callBack && typeof callBack === 'function') { var isValidKey = callBack(_baseInfo[key], _baseInfo); if (isValidKey !== true) { return isValidKey; } } } return true; } }, { key: "productName", value: function productName(_productName) { var length = 255; var key = 'productName'; if (!/^[a-zA-Z]+/g.test(_productName)) return (0, _i18n.getI18nMessage)('validate.productNameStartWith'); if (!/^[a-zA-Z_0-9]+$/g.test(_productName)) return (0, _i18n.getI18nMessage)('validate.productNameContain'); if ((0, _helpers.memorySizeOf)(_productName) > length) return (0, _i18n.getI18nMessage)('validate.lengthLess', { key: key, length: length }); return true; } }, { key: "productCompany", value: function productCompany(_productCompany) { var length = 200; var key = 'productCompany'; if ((0, _helpers.memorySizeOf)(_productCompany) > length) return (0, _i18n.getI18nMessage)('validate.lengthLess', { key: key, length: length }); return true; } }, { key: "boardName", value: function boardName(_boardName) { var length = 200; var key = 'boardName'; if ((0, _helpers.memorySizeOf)(_boardName) > length) return (0, _i18n.getI18nMessage)('validate.lengthLess', { key: key, length: length }); if (!/^[a-zA-Z0-9_.-]+$/g.test(_boardName)) return (0, _i18n.getI18nMessage)('validate.keyContain', { key: key }); return true; } }, { key: "boardCompany", value: function boardCompany(_boardCompany) { var length = 200; var key = 'boardCompany'; if ((0, _helpers.memorySizeOf)(_boardCompany) > length) return (0, _i18n.getI18nMessage)('validate.lengthLess', { key: key, length: length }); return true; } }, { key: "socName", value: function socName(_socName) { var length = 200; var key = 'socName'; if ((0, _helpers.memorySizeOf)(_socName) > length) return (0, _i18n.getI18nMessage)('validate.lengthLess', { key: key, length: length }); if (!/^[a-zA-Z0-9_.-]+$/g.test(_socName)) return (0, _i18n.getI18nMessage)('validate.keyContain', { key: key }); return true; } }, { key: "socCompany", value: function socCompany(_socCompany) { var length = 200; var key = 'socCompany'; if ((0, _helpers.memorySizeOf)(_socCompany) > length) return (0, _i18n.getI18nMessage)('validate.lengthLess', { key: key, length: length }); return true; } }, { key: "chipType", value: function chipType(_chipType) { var length = 32; var key = 'chipType'; if ((0, _helpers.memorySizeOf)(_chipType) > length) return (0, _i18n.getI18nMessage)('validate.lengthLess', { key: key, length: length }); return true; } }, { key: "cpuArc", value: function cpuArc(_cpuArc) { var length = 32; var key = 'cpuArc'; if ((0, _helpers.memorySizeOf)(_cpuArc) > length) return (0, _i18n.getI18nMessage)('validate.lengthLess', { key: key, length: length }); return true; } }, { key: "ohosVersion", value: function ohosVersion(_ohosVersion) { var length = 64; var key = 'ohosVersion'; if ((0, _helpers.memorySizeOf)(_ohosVersion) > length) return (0, _i18n.getI18nMessage)('validate.lengthLess', { key: key, length: length }); return true; } }, { key: "systemType", value: function systemType(_systemType) { var length = 32; var key = 'systemType'; if ((0, _helpers.memorySizeOf)(_systemType) > length) return (0, _i18n.getI18nMessage)('validate.lengthLess', { key: key, length: length }); return true; } }, { key: "kernel", value: function kernel(_kernel) { var length = 64; var key = 'kernel'; if ((0, _helpers.memorySizeOf)(_kernel) > length) return (0, _i18n.getI18nMessage)('validate.lengthLess', { key: key, length: length }); return true; } }, { key: "kernelVersion", value: function kernelVersion(_kernelVersion) { var length = 64; var key = 'kernelVersion'; if ((0, _helpers.memorySizeOf)(_kernelVersion) > length) return (0, _i18n.getI18nMessage)('validate.lengthLess', { key: key, length: length }); return true; } }, { key: "communicationType", value: function communicationType(_communicationType) { var length = 32; var key = 'communicationType'; if ((0, _helpers.memorySizeOf)(_communicationType) > length) return (0, _i18n.getI18nMessage)('validate.lengthLess', { key: key, length: length }); return true; } }]); }(), json: function json(_json, options, bundleDescriptor) { var isBinary = arguments.length > 3 && arguments[3] !== undefined ? arguments[3] : false; var bundleName = _json.name; function _js(name, validator, filter) { var result = validator(_json[name], _json); if (typeof result !== 'boolean') throw (0, _i18n.getI18nMessage)('manifest.error', { name: bundleName, message: result }); return filter ? filter(_json[name]) : _json[name]; } var manifest = { name: _js('name', Manifest.Validator.name), version: _js('version', Manifest.Validator.version, function (v) { return _semver["default"].parse(v); }) }; var nameVersionResult = Manifest.Validator.nameVersion(_json.name, _json.version); if (nameVersionResult !== true) { throw nameVersionResult; } if (_json.publishAs == 'binary') { _js('branch', Manifest.Validator.branch); _js('variant', Manifest.Validator.variant); _js('os', Manifest.Validator.os); _js('buildArch', Manifest.Validator.buildArch); } if (_json.publishAs) manifest.publishAs = _js('publishAs', Manifest.Validator.publishAs); if (_json.dirs && !Array.isArray(_json.dirs)) manifest.dirs = _js('dirs', Manifest.Validator.dirs); if (_json.scripts) manifest.scripts = _js('scripts', Manifest.Validator.scripts); if (_json.dependencies) manifest.dependencies = _js('dependencies', Manifest.Validator.dependencies); if (_json.devDependencies) manifest.devDependencies = _js('devDependencies', Manifest.Validator.dependencies); if (_json.base) manifest.base = _js('base', Manifest.Validator.base); if (_json.excludes) manifest.excludes = _js('excludes', Manifest.Validator.excludes); if (_json.envs && !Array.isArray(_json.envs)) manifest.envs = _js('envs', Manifest.Validator.envs); if (_json.description) manifest.description = _js('description', Manifest.Validator.description); if (_json.rom) manifest.rom = _js('rom', Manifest.Validator.rom); if (_json.ram) manifest.ram = _js('ram', Manifest.Validator.ram); if (_json.ohos) manifest.ohos = _js('ohos', Manifest.Validator.ohos); if (_json.author) manifest.author = _js('author', Manifest.Validator.author); if (_json.contributors) manifest.contributors = _js('contributors', Manifest.Validator.contributors); if (_json.keywords) manifest.keywords = _js('keywords', Manifest.Validator.keywords); if (_json.tags) manifest.tags = _js('tags', Manifest.Validator.tags); if (_json.homepage) manifest.homepage = _js('homepage', Manifest.Validator.homepage); if (_json.repository) manifest.repository = _js('repository', Manifest.Validator.repository); if (_json.license) manifest.license = _js('license', Manifest.Validator.license); if (_json.noticeFile) manifest.noticeFile = _js('noticeFile', Manifest.Validator.noticeFile); if (_json.plugin) manifest.plugin = _js('plugin', Manifest.Validator.plugin); if (_json["private"] !== undefined) manifest["private"] = _js('private', Manifest.Validator.isPrivate); if (_json.segment) manifest.segment = _js('segment', Manifest.Validator.segment); if (_json.permission) manifest.permission = _js('permission', Manifest.Validator.permission); if (_json.readmePath) manifest.readmePath = _js('readmePath', Manifest.Validator.readmePath); if (_json.licensePath) manifest.licensePath = _js('licensePath', Manifest.Validator.licensePath); if (_json.chipDefinition) manifest.chipDefinition = _js('chipDefinition', Manifest.Validator.chipDefinition); if (_json.branch) manifest.branch = _js('branch', Manifest.Validator.branch); if (_json.variant) manifest.variant = _js('variant', Manifest.Validator.variant); if (_json.os) manifest.os = _js('os', Manifest.Validator.os); if (_json.buildArch) manifest.buildArch = _js('buildArch', Manifest.Validator.buildArch); if (_json.pub_deps) manifest.pub_deps = _js('pub_deps', Manifest.Validator.pub_deps); // 处理安装具体组件时候会重复安装bundle.json所有依赖的问题 if (isBinary) manifest.isBinary = isBinary; if (bundleDescriptor) { var _filterSearchInfo = (0, _common.filterSearchInfo)(bundleDescriptor), bundleDesc = _filterSearchInfo.key; var osIndex = (0, _common.getOsIndex)(bundleDesc); var bundleKey = osIndex > -1 ? bundleDesc.substring(0, osIndex - 1) : bundleDesc; var value; // pub_dep二进制包才会存在,需要判断前置属性 if (manifest.pub_deps && manifest.pub_deps[bundleKey]) { value = manifest.pub_deps[bundleKey]; manifest.pub_deps = {}; manifest.pub_deps[bundleKey] = value; } else { manifest.pub_deps = {}; } if (manifest.dependencies && manifest.dependencies[bundleKey]) { value = manifest.dependencies[bundleKey]; manifest.dependencies = {}; manifest.dependencies[bundleKey] = value; } else { manifest.dependencies = {}; } } return new BundleManifest(manifest, options); }, /** * 根据提供的bundleJson地址,解析bundlejson * @param {String} dir 需要解析的bundlejson地址 * @param {String} bundleDescriptor 组件描述 * @param {Boolean} isBinary 是否为新的二进制包 * @returns {Manifest} */ fromPath: function fromPath(dir, bundleDescriptor, isBinary) { function _fp(func, err) { try { return func(); } catch (e) { if (err) { var error = err(e); if (error) throw error; } } } var content = _fp(function () { return _fs["default"].readFileSync(_path2["default"].join(dir, 'bundle.json')); }, function (e) { return (0, _i18n.getI18nMessage)('manifest.readJsonError', { dir: dir, message: e.message }); }); var json = _fp(function () { return JSON.parse(content); }, function (e) { return (0, _i18n.getI18nMessage)('manifest.malformedJsonError', { message: e.message }); }); var manifest = _fp(function () { return Manifest.json(json, {}, bundleDescriptor, isBinary); }, function (e) { return (0, _i18n.getI18nMessage)('manifest.illegalJsonError', { error: e }); }); return manifest; } }; var _manifest = /*#__PURE__*/new WeakMap(); var _path = /*#__PURE__*/new WeakMap(); var _dependencies2 = /*#__PURE__*/new WeakMap(); var _devDependencies = /*#__PURE__*/new WeakMap(); var _pub_deps2 = /*#__PURE__*/new WeakMap(); var _download = /*#__PURE__*/new WeakMap(); var BundleManifest = /*#__PURE__*/function () { function BundleManifest(manifest) { var _ref2 = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {}, download = _ref2.download; _classCallCheck(this, BundleManifest); _classPrivateFieldInitSpec(this, _manifest, void 0); _classPrivateFieldInitSpec(this, _path, void 0); _classPrivateFieldInitSpec(this, _dependencies2, []); _classPrivateFieldInitSpec(this, _devDependencies, []); _classPrivateFieldInitSpec(this, _pub_deps2, []); _classPrivateFieldInitSpec(this, _download, void 0); _classPrivateFieldSet(_manifest, this, manifest); _classPrivateFieldSet(_download, this, download); if (manifest.dependencies) { _classPrivateFieldSet(_dependencies2, this, _classPrivateFieldGet(_dependencies2, this).concat(parseDependencies(manifest.dependencies))); } if (manifest.pub_deps) { _classPrivateFieldSet(_pub_deps2, this, _classPrivateFieldGet(_pub_deps2, this).concat(parseDependencies(manifest.pub_deps))); } if (manifest.devDependencies) { _classPrivateFieldSet(_devDependencies, this, _classPrivateFieldGet(_devDependencies, this).concat(parseDependencies(manifest.devDependencies))); } if (manifest.base) { _classPrivateFieldGet(_dependencies2, this).push(new _dependency.Dependency(manifest.base.name, { version: manifest.base.version })); } } return _createClass(BundleManifest, [{ key: "name", get: function get() { return _classPrivateFieldGet(_manifest, this).name; } }, { key: "id", get: function get() { var info = (0, _helpers.parseScopeName)(_classPrivateFieldGet(_manifest, this).name); return "".concat(info.scope ? "".concat(info.scope, "-") : '').concat(info.name, "-").concat(_classPrivateFieldGet(_manifest, this).publishAs === 'binary' && _classPrivateFieldGet(_manifest, this).os && _classPrivateFieldGet(_manifest, this).buildArch ? "".concat(_classPrivateFieldGet(_manifest, this).os, "-").concat(_classPrivateFieldGet(_manifest, this).buildArch, "-") : '').concat(_classPrivateFieldGet(_manifest, this).version.version); } }, { key: "version", get: function get() { return _classPrivateFieldGet(_manifest, this).version; } }, { key: "publishAs", get: function get() { return _classPrivateFieldGet(_manifest, this).publishAs; } }, { key: "dependencies", get: function get() { return _classPrivateFieldGet(_dependencies2, this); } }, { key: "devDependencies", get: function get() { return _classPrivateFieldGet(_devDependencies, this); } }, { key: "base", get: function get() { return _classPrivateFieldGet(_manifest, this).base; } }, { key: "excludes", get: function get() { return _classPrivateFieldGet(_manifest, this).excludes; } }, { key: "envs", get: function get() { return _classPrivateFieldGet(_manifest, this).envs; } }, { key: "isBinary", get: function get() { return _classPrivateFieldGet(_manifest, this).isBinary; } }, { key: "isRemote", get: function get() { return !!isRemote; } }, { key: "isPrivate", get: function get() { return _classPrivateFieldGet(_manifest, this)["private"]; } }, { key: "url", get: function get() { if (_classPrivateFieldGet(_download, this)) { if (this.isPrivate) { var parseAddr = _url["default"].parse(_classPrivateFieldGet(_download, this).addr); if (parseAddr.protocol) { return "".concat(_classPrivateFieldGet(_download, this).addr); } else { return "".concat((0, _helpers.getRegistryHost)(_classPrivateFieldGet(_manifest, this).name)).concat(_classPrivateFieldGet(_download, this).addr); } } return _classPrivateFieldGet(_download, this).addr; } return ''; } }, { key: "checksum", get: function get() { return _classPrivateFieldGet(_download, this) && _classPrivateFieldGet(_download, this).checksum; } }, { key: "noticeFile", get: function get() { return _classPrivateFieldGet(_manifest, this).noticeFile || 'NOTICE'; } }, { key: "license", get: function get() { return _classPrivateFieldGet(_manifest, this).license || ''; } }, { key: "path", get: function get() { return _classPrivateFieldGet(_path, this); }, set: function set(manifestPath) { _classPrivateFieldSet(_path, this, manifestPath); } // 增加segment字段 }, { key: "plugin", get: function get() { return _classPrivateFieldGet(_manifest, this).plugin; } }, { key: "segment", get: function get() { return _classPrivateFieldGet(_manifest, this).segment; } // 增加branch字段。 }, { key: "branch", get: function get() { return _classPrivateFieldGet(_manifest, this).branch; } // 增加variant字段。 }, { key: "variant", get: function get() { return _classPrivateFieldGet(_manifest, this).variant; } // 增加os字段 }, { key: "os", get: function get() { return _classPrivateFieldGet(_manifest, this).os; } // 增加buildArch字段 }, { key: "buildArch", get: function get() { return _classPrivateFieldGet(_manifest, this).buildArch; } // 增加pub_deps字段 }, { key: "pub_deps", get: function get() { return _classPrivateFieldGet(_pub_deps2, this); } }, { key: "chipDefinition", get: function get() { return _classPrivateFieldGet(_manifest, this).chipDefinition; } }, { key: "readmePath", get: function get() { return _classPrivateFieldGet(_manifest, this).readmePath; } }, { key: "licensePath", get: function get() { return _classPrivateFieldGet(_manifest, this).licensePath; } }, { key: "isSnapshot", value: function isSnapshot() { var prereleaseList = _semver["default"].prerelease(_classPrivateFieldGet(_manifest, this).version); return !!(prereleaseList && prereleaseList.length && prereleaseList[0].toString().toUpperCase() === 'SNAPSHOT'); } }, { key: "dirs", value: function dirs(name) { if (name) { return _classPrivateFieldGet(_manifest, this).dirs && _classPrivateFieldGet(_manifest, this).dirs[name]; } return _classPrivateFieldGet(_manifest, this).dirs; } }, { key: "scripts", value: function scripts(name) { return _classPrivateFieldGet(_manifest, this).scripts && _classPrivateFieldGet(_manifest, this).scripts[name]; } }, { key: "json", value: function json() { var innerUse = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : false; var baseName = _classPrivateFieldGet(_manifest, this).base && _classPrivateFieldGet(_manifest, this).base.name; var dependenciesJson = {}; var _iterator4 = _createForOfIteratorHelper(this.dependencies), _step4; try { for (_iterator4.s(); !(_step4 = _iterator4.n()).done;) { var dep = _step4.value; if (dep.name !== baseName) { dependenciesJson = Object.assign(dependenciesJson, dep.toJson()); } } } catch (err) { _iterator4.e(err); } finally { _iterator4.f(); } var devDependenciesJson = {}; var _iterator5 = _createForOfIteratorHelper(this.devDependencies), _step5; try { for (_iterator5.s(); !(_step5 = _iterator5.n()).done;) { var _dep = _step5.value; if (_dep.name !== baseName) { devDependenciesJson = Object.assign(devDependenciesJson, _dep.toJson()); } } } catch (err) { _iterator5.e(err); } finally { _iterator5.f(); } var json = _objectSpread(_objectSpread({}, _classPrivateFieldGet(_manifest, this)), {}, { version: _classPrivateFieldGet(_manifest, this).version.version }); json.dependencies = (0, _helpers.isEmptyObject)(dependenciesJson) ? undefined : dependenciesJson; json.devDependencies = (0, _helpers.isEmptyObject)(devDependenciesJson) ? undefined : devDependenciesJson; // 如果download的时候需要用到别的字段,需要在此处补充!因为传给子线程的是这个JSON而不是原生的BundleManifest对象 json.name = this.name; json.url = this.url; json.checksum = this.checksum; if (innerUse) { json.id = this.id; json.scripts = _classPrivateFieldGet(_manifest, this).scripts || {}; } return json; } }, { key: "addDependencies", value: function addDependencies() { var dependencies = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : []; var type = arguments.length > 1 ? arguments[1] : undefined; this.updateDependencies(dependencies, type); } }, { key: "updateDependencies", value: function updateDependencies() { var dependencies = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : []; var type = arguments.length > 1 ? arguments[1] : undefined; if (dependencies.length > 0) { if (type === 'dev') { _classPrivateFieldSet(_devDependencies, this, mergeDependencies(_classPrivateFieldGet(_devDependencies, this), dependencies)); } else { _classPrivateFieldSet(_dependencies2, this, mergeDependencies(_classPrivateFieldGet(_dependencies2, this), dependencies)); } } } }, { key: "removeDependencies", value: function removeDependencies() { var names = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : []; var type = arguments.length > 1 ? arguments[1] : undefined; if (names.length === 0) { return; } var dependencies = type === 'dev' ? _classPrivateFieldGet(_devDependencies, this) : _classPrivateFieldGet(_dependencies2, this); var _iterator6 = _createForOfIteratorHelper(names), _step6; try { var _loop = function _loop() { var name = _step6.value; var index = dependencies.findIndex(function (d) { return d.name === name; }); if (index >= 0) { dependencies.splice(index, 1); } }; for (_iterator6.s(); !(_step6 = _iterator6.n()).done;) { _loop(); } } catch (err) { _iterator6.e(err); } finally { _iterator6.f(); } } }, { key: "removeBase", value: function removeBase(base) { if (_classPrivateFieldGet(_manifest, this).base && base && _classPrivateFieldGet(_manifest, this).base.name === base.name) { delete _classPrivateFieldGet(_manifest, this).base; } } }, { key: "updateBase", value: function updateBase(base) { _classPrivateFieldGet(_manifest, this).base = base; } }, { key: "getCompositeDependencies", value: function getCompositeDependencies(rootManifest) { // 1. 依赖包的devDependencies不会被安装 // 2. 所有的distribution的devDependencies都会被安装 if (this.name === (rootManifest && rootManifest.name) || this.publishAs === 'distribution') { return this.dependencies.concat(this.devDependencies); } return this.dependencies; } }]); }(); function parseDependencies(dependencies) { var result = []; var _loop2 = function _loop2(name) { var normalized = normalizeDependencyName(name); if (normalized.isTag) { Object.keys(dependencies[name]).forEach(function (key) { return result.push(new _dependency.Dependency(key, dependencies[name][key], name)); }); } else { result.push(new _dependency.Dependency(normalized.name, dependencies[name], undefined, normalized.isOptional)); } }; for (var name in dependencies) { _loop2(name); } return result; } function mergeDependencies(oldDeps, newDeps) { var merged = _toConsumableArray(oldDeps); var _iterator7 = _createForOfIteratorHelper(newDeps), _step7; try { var _loop3 = function _loop3() { var dep = _step7.value; var index = merged.findIndex(function (d) { return d.name === dep.name; }); if (index >= 0) { merged[index] = _dependency.Dependency.merge(merged[index], dep); } else { merged.push(dep); } }; for (_iterator7.s(); !(_step7 = _iterator7.n()).done;) { _loop3(); } } catch (err) { _iterator7.e(err); } finally { _iterator7.f(); } return merged; } function normalizeDependencyName(name) { if (name.match(/^#/)) { return { isTag: true, name: name }; } var matchOptional = name.match(/^\?([\S\s]*)/); if (matchOptional) { return { isOptional: true, name: matchOptional[1] }; } return { name: name }; }