@lark-project/cli
Version:
飞书项目插件开发工具
74 lines (73 loc) • 2.12 kB
JavaScript
;
Object.defineProperty(exports, "__esModule", { value: true });
exports.isValidPluginResource = exports.isValidPluginVersion = exports.isValidPluginId = exports.isValidDirectoryName = exports.isValidURL = void 0;
const url_1 = require("url");
const REG_DIRECTORY_NAME = /^[a-zA-Z0-9_-]+$/; // 目录名称只能包含字母、数字、下划线和连字符
const REG_PLUGIN_ID = /^MII_[0-9A-Z]{16}$/; // 以 MII_ 开头,16位大写字母或数字,适配马来迁移
const REG_PLUGIN_VERSION = /^([0-9]|[1-9]\d*).([0-9]|[1-9]\d*).([0-9]|[1-9]\d*)$/;
function isString(val) {
return typeof val === 'string' || val instanceof String;
}
/**
* 是否是合法的 URL
* @param url
* @returns boolean
*/
function isValidURL(url) {
if (!isString(url)) {
return false;
}
try {
new url_1.URL(url);
return true;
}
catch (e) {
return false;
}
}
exports.isValidURL = isValidURL;
/**
* 是否是合法的目录名称
* @param name
* @returns
*/
function isValidDirectoryName(name) {
return isString(name) ? REG_DIRECTORY_NAME.test(name) : false;
}
exports.isValidDirectoryName = isValidDirectoryName;
/**
* 是否是合法的插件 id
* @param pluginId
* @returns boolean
*/
function isValidPluginId(pluginId) {
return isString(pluginId) ? REG_PLUGIN_ID.test(pluginId) : false;
}
exports.isValidPluginId = isValidPluginId;
/**
* 是否是合法的插件版本号,x.y.z
* @param version 版本号
* @returns boolean
*/
function isValidPluginVersion(version) {
return isString(version) ? REG_PLUGIN_VERSION.test(version) : false;
}
exports.isValidPluginVersion = isValidPluginVersion;
/**
* 是否是合法的插件资源配置项
* @param resource
* @returns
*/
function isValidPluginResource(resource) {
if (typeof resource !== 'object') {
return false;
}
if (!('id' in resource) || !isString(resource.id)) {
return false;
}
if (!('entry' in resource) || !isString(resource.entry)) {
return false;
}
return true;
}
exports.isValidPluginResource = isValidPluginResource;