var _interopRequireDefault=require("@babel/runtime/helpers/interopRequireDefault");Object.defineProperty(exports,"__esModule",{value:true});exports.default=exports.getLocalRenativePlugin=exports.parsePlugins=exports.getMergedPlugin=exports.copyTemplatePluginsSync=exports.overrideTemplatePlugins=exports.loadPluginTemplates=exports.configurePlugins=exports.rnvPluginUpdate=exports.rnvPluginAdd=exports.rnvPluginList=void 0;var _toConsumableArray2=_interopRequireDefault(require("@babel/runtime/helpers/toConsumableArray"));var _regenerator=_interopRequireDefault(require("@babel/runtime/regenerator"));var _chalk=_interopRequireDefault(require("chalk"));
var _inquirer=_interopRequireDefault(require("inquirer"));
var _fs=_interopRequireDefault(require("fs"));
var _path=_interopRequireDefault(require("path"));
var _ora=_interopRequireDefault(require("ora"));
var _fileutils=require("../systemTools/fileutils");






var _common=require("../common");
var _configParser=require("../configTools/configParser");

var _constants=require("../constants");
var _logger=require("../systemTools/logger");








var _buildHooks=require("../projectTools/buildHooks");
var _resolve=require("../resolve");

var rnvPluginList=function rnvPluginList(c){return new Promise(function(resolve){
(0,_logger.logTask)('_runList');

var o=_getPluginList(c);


(0,_logger.logToSummary)("Plugins:\n\n"+o.asString);

resolve();
});};exports.rnvPluginList=rnvPluginList;

var _getPluginList=function _getPluginList(c){var isUpdate=arguments.length>1&&arguments[1]!==undefined?arguments[1]:false;
var output={
asString:'',
asArray:[],
plugins:[],
allPlugins:{}};


var i=1;

Object.keys(c.files.rnv.pluginTemplates.configs).forEach(function(pk){
var plugins=c.files.rnv.pluginTemplates.configs[pk].pluginTemplates;
Object.keys(plugins).forEach(function(k){
var p=plugins[k];

var platforms='';
_constants.SUPPORTED_PLATFORMS.forEach(function(v){
if(p[v])platforms+=v+", ";
});
if(platforms.length){
platforms=platforms.slice(0,platforms.length-2);
}
var installedPlugin=c.buildConfig&&
c.buildConfig.plugins&&
c.buildConfig.plugins[k];
var installedString=installedPlugin?
_chalk.default.yellow('installed'):
_chalk.default.green('not installed');
if(isUpdate&&installedPlugin){
output.plugins.push(k);
var versionString;
if(installedPlugin.version!==p.version){
versionString="("+_chalk.default.yellow(
installedPlugin.version)+") => ("+
_chalk.default.green(p.version)+")";
}else{
versionString="("+_chalk.default.green(installedPlugin.version)+")";
}
output.asString+=" ["+i+"]> "+_chalk.default.bold(
k)+" "+
versionString+"\n";
output.asArray.push({
name:k+" "+versionString,
value:k});

output.allPlugins[k]=p;
i++;
}else if(!isUpdate){
output.plugins.push(k);
output.asString+=" ["+i+"]> "+_chalk.default.bold(k)+" ("+_chalk.default.grey(
p.version)+") ["+
platforms+"] - "+installedString+"\n";
output.asArray.push({
name:k+" ("+_chalk.default.grey(
p.version)+") ["+
platforms+"] - "+installedString,
value:k});

output.allPlugins[k]=p;

i++;
}
output.asArray.sort(function(a,b){
var aStr=a.name.toLowerCase();
var bStr=b.name.toLowerCase();
var com=0;
if(aStr>bStr){
com=1;
}else if(aStr<bStr){
com=-1;
}
return com;
});
});
});

return output;
};

var rnvPluginAdd=function rnvPluginAdd(c){var selPluginKey,o,selPlugin,selectedPlugins,installMessage,_await$inquirer$promp,plugin,questionPlugins,pluginKeys,i,pluginKey,_plugin,pluginProps,finalProps,i2,_await$inquirer$promp2,propValue,spinner;return _regenerator.default.async(function rnvPluginAdd$(_context){while(1){switch(_context.prev=_context.next){case 0:
(0,_logger.logTask)('rnvPluginAdd');

selPluginKey=c.program.rawArgs[4];

o=_getPluginList(c);

selPlugin=selPluginKey&&o.allPlugins[selPluginKey];
selectedPlugins={};
installMessage=[];if(

selPlugin){_context.next=15;break;}_context.next=9;return _regenerator.default.awrap(
_inquirer.default.prompt({
name:'plugin',
type:'rawlist',
message:'Select the plugins you want to add',
choices:o.asArray,
pageSize:50}));case 9:_await$inquirer$promp=_context.sent;plugin=_await$inquirer$promp.plugin;


selectedPlugins[plugin]=o.allPlugins[plugin];
installMessage.push(
_chalk.default.white(plugin)+" v("+_chalk.default.green(
o.allPlugins[plugin].version)+")");_context.next=17;break;case 15:



selectedPlugins[selPluginKey]=selPlugin;
installMessage.push(
_chalk.default.white(selPluginKey)+" v("+_chalk.default.green(selPlugin.version)+")");case 17:



questionPlugins={};

Object.keys(selectedPlugins).forEach(function(key){

var plugin=selectedPlugins[key];
if(plugin.props)questionPlugins[key]=plugin;

c.files.project.config.plugins[key]='source:rnv';


_checkAndAddDependantPlugins(c,selectedPlugins[key]);
});

pluginKeys=Object.keys(questionPlugins);
i=0;case 21:if(!(i<pluginKeys.length)){_context.next=41;break;}
pluginKey=pluginKeys[i];
_plugin=questionPlugins[pluginKey];
pluginProps=Object.keys(_plugin.props);
finalProps={};
i2=0;case 27:if(!(i2<pluginProps.length)){_context.next=36;break;}_context.next=30;return _regenerator.default.awrap(
_inquirer.default.prompt({
name:'propValue',
type:'input',
message:pluginKey+": Add value for "+pluginProps[i2]+" (You can do this later in ./renative.json file)"}));case 30:_await$inquirer$promp2=_context.sent;propValue=_await$inquirer$promp2.propValue;

finalProps[pluginProps[i2]]=propValue;case 33:i2++;_context.next=27;break;case 36:

c.files.project.config.plugins[pluginKey]={};
c.files.project.config.plugins[pluginKey].props=finalProps;case 38:i++;_context.next=21;break;case 41:


spinner=(0,_ora.default)("Installing: "+installMessage.join(', ')).start();

(0,_fileutils.writeFileSync)(c.paths.project.config,c.files.project.config);
spinner.succeed('All plugins installed!');
(0,_logger.logSuccess)('Plugins installed successfully!');case 45:case"end":return _context.stop();}}},null,null,null,Promise);};exports.rnvPluginAdd=rnvPluginAdd;


var _checkAndAddDependantPlugins=function _checkAndAddDependantPlugins(c,plugin){
(0,_logger.logTask)('_checkAndAddDependantPlugins');
if(plugin.dependsOn){
plugin.dependsOn.forEach(function(v){
Object.keys(c.files.rnv.pluginTemplates.configs).forEach(function(p){
var templatePlugins=c.files.rnv.pluginTemplates.configs[p].pluginTemplates;
if(templatePlugins[v]){
(0,_logger.logDebug)("Added dependant plugin "+v);
c.buildConfig.plugins[v]=templatePlugins[v];
}
});
});
}
};

var rnvPluginUpdate=function rnvPluginUpdate(c){var o,_await$inquirer$promp3,confirm,plugins;return _regenerator.default.async(function rnvPluginUpdate$(_context2){while(1){switch(_context2.prev=_context2.next){case 0:
(0,_logger.logTask)('rnvPluginUpdate');

o=_getPluginList(c,true);_context2.next=4;return _regenerator.default.awrap(



_inquirer.default.prompt({
name:'confirm',
type:'confirm',
message:'Above installed plugins will be updated with RNV'}));case 4:_await$inquirer$promp3=_context2.sent;confirm=_await$inquirer$promp3.confirm;


if(confirm){
plugins=c.buildConfig.plugins;
Object.keys(plugins).forEach(function(key){

c.files.project.config.plugins[key]=o.json[key];
});

(0,_fileutils.writeFileSync)(c.paths.project.config,c.files.project.config);

(0,_logger.logSuccess)('Plugins updated successfully!');
}case 7:case"end":return _context2.stop();}}},null,null,null,Promise);};exports.rnvPluginUpdate=rnvPluginUpdate;


var getMergedPlugin=function getMergedPlugin(c,key,plugins){var _c$files$rnv$pluginTe,_c$files$rnv$pluginTe2,_c$files$rnv$pluginTe3;var noMerge=arguments.length>3&&arguments[3]!==undefined?arguments[3]:false;
var plugin=plugins[key];


var rnvPlugin=(_c$files$rnv$pluginTe=c.files.rnv.pluginTemplates.configs)==null?void 0:(_c$files$rnv$pluginTe2=_c$files$rnv$pluginTe.rnv)==null?void 0:(_c$files$rnv$pluginTe3=_c$files$rnv$pluginTe2.pluginTemplates)==null?void 0:_c$files$rnv$pluginTe3[key];
if(rnvPlugin)rnvPlugin.source='rnv';

var origPlugin;
if(typeof plugin==='string'||plugin instanceof String){
if(plugin.startsWith('source:')){var _c$files$rnv$pluginTe4,_c$files$rnv$pluginTe5;
var scope=plugin.split(':').pop();

origPlugin=(_c$files$rnv$pluginTe4=c.files.rnv.pluginTemplates.configs[scope])==null?void 0:(_c$files$rnv$pluginTe5=_c$files$rnv$pluginTe4.pluginTemplates)==null?void 0:_c$files$rnv$pluginTe5[key];

if(origPlugin){var _origPlugin;
origPlugin.source=scope;
if(rnvPlugin&&!((_origPlugin=origPlugin)==null?void 0:_origPlugin.skipMerge)){
origPlugin=_getMergedPlugin(
c,
rnvPlugin,
origPlugin,
true,
true);

}
return origPlugin;
}
(0,_logger.logWarning)("Plugin "+
key+" is not recognized plugin in "+plugin+" scope");

return null;
}
return{
version:plugin,
source:'rnv'};

}

if(plugin){
if(plugin.source){var _c$files$rnv$pluginTe6,_c$files$rnv$pluginTe7,_origPlugin2;
origPlugin=(_c$files$rnv$pluginTe6=c.files.rnv.pluginTemplates.configs[plugin.source])==null?void 0:(_c$files$rnv$pluginTe7=_c$files$rnv$pluginTe6.pluginTemplates)==null?void 0:_c$files$rnv$pluginTe7[key];
if(rnvPlugin&&!((_origPlugin2=origPlugin)==null?void 0:_origPlugin2.skipMerge)){
origPlugin=_getMergedPlugin(
c,
rnvPlugin,
origPlugin,
true,
true);

}
}else{
origPlugin=rnvPlugin;
}
}

if(origPlugin){
var mergedPlugin=_getMergedPlugin(
c,
origPlugin,
plugin,
true,
true);

return mergedPlugin;
}

return plugin;
};exports.getMergedPlugin=getMergedPlugin;

var _getMergedPlugin=function _getMergedPlugin(c,obj1,obj2){var _c$buildConfig;
var configPropsInject={};
_constants.INJECTABLE_CONFIG_PROPS.forEach(function(v){
configPropsInject[v]=(0,_common.getConfigProp)(c,c.platform,v);
});
var obj=(0,_fileutils.sanitizeDynamicProps)(
(0,_fileutils.mergeObjects)(c,obj1,obj2,true,true),(_c$buildConfig=
c.buildConfig)==null?void 0:_c$buildConfig._refs);

var plugin=(0,_fileutils.sanitizeDynamicProps)(obj,obj.props,configPropsInject);
return plugin;
};

var configurePlugins=function configurePlugins(c){return new Promise(function(resolve,reject){
(0,_logger.logTask)('configurePlugins');

if(!c.files.project.package.dependencies){
c.files.project.package.dependencies={};
}

var hasPackageChanged=false;

Object.keys(c.buildConfig.plugins).forEach(function(k){var
dependencies=c.files.project.package.dependencies;var
devDependencies=c.files.project.package.devDependencies;
var plugin=getMergedPlugin(c,k,c.buildConfig.plugins);

if(!plugin){
(0,_logger.logWarning)("Plugin with name "+
_chalk.default.white(
k)+" does not exists in ReNative source:rnv scope. you need to define it manually here: "+
_chalk.default.white(
c.paths.project.builds.config));


}else if(dependencies&&dependencies[k]){
if(
plugin['no-active']!==true&&
plugin['no-npm']!==true&&
dependencies[k]!==plugin.version)
{
if(k==='renative'&&c.runtime.isWrapper){
(0,_logger.logWarning)(
"You're in ReNative wrapper mode. plugin renative will stay as local dep!");

}else{
(0,_logger.logWarning)("Version mismatch of dependency "+
_chalk.default.white(
k)+" between:\n"+

_chalk.default.white(c.paths.project.package)+": v("+_chalk.default.red(dependencies[k])+") and\n"+
_chalk.default.white(c.paths.project.builds.config)+": v("+_chalk.default.green(
plugin.version)+").\npackage.json will be overriden");




hasPackageChanged=true;
dependencies[k]=plugin.version;
}
}
}else if(devDependencies&&devDependencies[k]){
if(
plugin['no-active']!==true&&
plugin['no-npm']!==true&&
devDependencies[k]!==plugin.version)
{
(0,_logger.logWarning)("Version mismatch of devDependency "+
_chalk.default.white(
k)+" between package.json: v("+
_chalk.default.red(
devDependencies[k])+") and plugins.json: v("+
_chalk.default.red(
plugin.version)+"). package.json will be overriden");


hasPackageChanged=true;
devDependencies[k]=plugin.version;
}
}else if(
plugin['no-active']!==true&&
plugin['no-npm']!==true)
{

if(plugin.version){
(0,_logger.logWarning)("Missing dependency "+
_chalk.default.white(k)+" v("+_chalk.default.red(
plugin.version)+") in package.json. package.json will be overriden");



hasPackageChanged=true;
dependencies[k]=plugin.version;
}
}

if(plugin&&plugin.npm){
Object.keys(plugin.npm).forEach(function(npmKey){
var npmDep=plugin.npm[npmKey];
if(!dependencies[npmKey]){
(0,_logger.logWarning)("Plugin "+
_chalk.default.white(
k)+" requires npm dependency "+
_chalk.default.white(
npmKey)+" .Adding missing npm dependency to you package.json");


dependencies[npmKey]=npmDep;
hasPackageChanged=true;
}else if(dependencies[npmKey]!==npmDep){
(0,_logger.logWarning)("Plugin "+
_chalk.default.white(
k)+" dependency mismatch ("+
_chalk.default.red(
dependencies[npmKey])+") => ("+
_chalk.default.green(
npmDep)+") .updating npm dependency in your package.json");


dependencies[npmKey]=npmDep;
hasPackageChanged=true;
}
});
}
});

(0,_logger.logTask)("configurePlugins:"+hasPackageChanged,_chalk.default.grey);
(0,_configParser.versionCheck)(c).
then(function(){
if(hasPackageChanged&&!c.runtime.skipPackageUpdate){
(0,_fileutils.writeFileSync)(
c.paths.project.package,
c.files.project.package);

c._requiresNpmInstall=true;
}
resolve();
}).
catch(function(e){return reject(e);});
});};exports.configurePlugins=configurePlugins;

var parsePlugins=function parsePlugins(c,platform,pluginCallback,ignorePlatformObjectCheck){
(0,_logger.logTask)("parsePlugins:"+platform);
if(c.buildConfig){
var includedPlugins=(0,_common.getConfigProp)(
c,
platform,
'includedPlugins',
[]);

var excludedPlugins=(0,_common.getConfigProp)(
c,
platform,
'excludedPlugins',
[]);

if(includedPlugins){var
plugins=c.buildConfig.plugins;
if(plugins){
Object.keys(plugins).forEach(function(key){
if(
(includedPlugins.includes('*')||
includedPlugins.includes(key))&&
!excludedPlugins.includes(key))
{
var plugin=getMergedPlugin(c,key,plugins);
if(plugin){
var pluginPlat=plugin[platform];
if(ignorePlatformObjectCheck){
pluginCallback(plugin,pluginPlat,key);
}else if(pluginPlat){
if(
plugin['no-active']!==true&&
plugin.enabled!==false&&
pluginPlat.enabled!==false)
{
if(plugin.deprecated){
(0,_logger.logWarning)(plugin.deprecated);
}
if(pluginCallback){
pluginCallback(plugin,pluginPlat,key);
}
}else{
(0,_logger.logWarning)("Plugin "+
key+" is marked disabled. skipping.");

}
}
}
}
});
}else{
(0,_logger.logError)("You have no plugins defined in "+
_chalk.default.white(
c.paths.project.builds.config));


}
}else{
(0,_logger.logWarning)("You haven't included any "+
_chalk.default.white(
'{ common: { includedPlugins: [] }}')+" in your "+
_chalk.default.white(
c.paths.appConfig.config)+". Your app might not work correctly");


}
}
};exports.parsePlugins=parsePlugins;

var loadPluginTemplates=function loadPluginTemplates(c){var _c$files$project$conf,_c$files$project$conf2;
(0,_logger.logTask)('loadPluginTemplates');
c.files.rnv.pluginTemplates.config=(0,_fileutils.readObjectSync)(
c.paths.rnv.pluginTemplates.config);


c.files.rnv.pluginTemplates.configs={
rnv:c.files.rnv.pluginTemplates.config};


c.paths.rnv.pluginTemplates.dirs={rnv:c.paths.rnv.pluginTemplates.dir};

var customPluginTemplates=(_c$files$project$conf=c.files.project.config)==null?void 0:(_c$files$project$conf2=_c$files$project$conf.paths)==null?void 0:_c$files$project$conf2.pluginTemplates;
if(customPluginTemplates){
Object.keys(customPluginTemplates).forEach(function(k){
var val=customPluginTemplates[k];
if(val.npm){var _c$files$project$pack,_c$files$project$pack2;
var npmDep=((_c$files$project$pack=c.files.project.package)==null?void 0:_c$files$project$pack.dependencies[val.npm])||((_c$files$project$pack2=
c.files.project.package)==null?void 0:_c$files$project$pack2.devDependencies[val.npm]);

if(npmDep){
var ptPath;
if(npmDep.startsWith('file:')){
ptPath=_path.default.join(
c.paths.project.dir,
npmDep.replace('file:',''),
val.path||'');

}else{

ptPath=(0,_resolve.doResolve)(val.npm)+"/"+val.path;
}

var ptConfig=_path.default.join(
ptPath,
_constants.RENATIVE_CONFIG_PLUGINS_NAME);

c.paths.rnv.pluginTemplates.dirs[k]=ptPath;
if(_fs.default.existsSync(ptConfig)){
c.files.rnv.pluginTemplates.configs[k]=(0,_fileutils.readObjectSync)(
ptConfig);

}
}
}
});
}
};exports.loadPluginTemplates=loadPluginTemplates;

























var _overridePlugin=function _overridePlugin(c,pluginsPath,dir){
var source=_path.default.resolve(pluginsPath,dir,'overrides');
var dest=(0,_resolve.doResolve)(dir,false);
if(!dest)return;

var plugin=getMergedPlugin(c,dir,c.buildConfig.plugins);
var flavourSource;
if(plugin){
flavourSource=_path.default.resolve(
pluginsPath,
dir,"overrides@"+
plugin.version);

}

if(flavourSource&&_fs.default.existsSync(flavourSource)){
(0,_fileutils.copyFolderContentsRecursiveSync)(flavourSource,dest,false);
}else if(_fs.default.existsSync(source)){
(0,_fileutils.copyFolderContentsRecursiveSync)(source,dest,false);



}else{
(0,_logger.logDebug)("Your plugin configuration has no override path "+
_chalk.default.white(
source)+". skipping folder override action");


}

var overridePath=_path.default.resolve(pluginsPath,dir,'overrides.json');
var overrideConfig=(0,_fileutils.readObjectSync)(
_path.default.resolve(pluginsPath,dir,'overrides.json'));

if(overrideConfig==null?void 0:overrideConfig.overrides){
Object.keys(overrideConfig.overrides).forEach(function(k){
var override=overrideConfig.overrides[k];
var ovDir=_path.default.join(dest,k);
if(_fs.default.existsSync(ovDir)){
if(_fs.default.lstatSync(ovDir).isDirectory()){
(0,_logger.logWarning)(
'overrides.json: Directories not supported yet. specify path to actual file');

}else{
var fileToFix=_fs.default.readFileSync(ovDir).toString();
Object.keys(override).forEach(function(fk){
var regEx=new RegExp(fk,'g');
var count=(fileToFix.match(regEx)||[]).length;
if(!count){
(0,_logger.logWarning)("No Match found in "+_chalk.default.red(
ovDir)+" for expression: "+
_chalk.default.red(fk)+".\nConsider update or removal of "+
_chalk.default.white(overridePath));
}else{
fileToFix=fileToFix.replace(regEx,override[fk]);
}
});
_fs.default.writeFileSync(ovDir,fileToFix);
}
}
});
}
};


var overrideTemplatePlugins=function overrideTemplatePlugins(c){var rnvPluginsDirs,appPluginDirs,appBasePluginDir;return _regenerator.default.async(function overrideTemplatePlugins$(_context3){while(1){switch(_context3.prev=_context3.next){case 0:
(0,_logger.logTask)('overrideTemplatePlugins');

rnvPluginsDirs=c.paths.rnv.pluginTemplates.dirs;
appPluginDirs=c.paths.appConfig.pluginDirs;
appBasePluginDir=c.paths.project.projectConfig.pluginsDir;

parsePlugins(c,c.platform,function(plugin,pluginPlat,key){
var pluginOverridePath=rnvPluginsDirs[plugin.source];
if(pluginOverridePath){
_overridePlugin(c,pluginOverridePath,key);
}
if(appBasePluginDir){
_overridePlugin(c,appBasePluginDir,key);
}
if(appPluginDirs){
for(var k=0;k<appPluginDirs.length;k++){
_overridePlugin(c,appPluginDirs[k],key);
}
}
},true);return _context3.abrupt("return",
true);case 6:case"end":return _context3.stop();}}},null,null,null,Promise);};exports.overrideTemplatePlugins=overrideTemplatePlugins;


var copyTemplatePluginsSync=function copyTemplatePluginsSync(c,platform){
(0,_logger.logTask)("copyTemplatePluginsSync:"+platform);

var destPath=_path.default.join((0,_common.getAppFolder)(c,platform));
parsePlugins(c,platform,function(plugin,pluginPlat,key){
var objectInject=(0,_toConsumableArray2.default)(c.runtime.configPropsInject);
if(plugin.props){
Object.keys(plugin.props).forEach(function(v){
objectInject.push({
pattern:"{{props."+v+"}}",
override:plugin.props[v]});

});
}

var sourcePathRnvPlugin=(0,_common.getBuildsFolder)(
c,
platform,
_path.default.join(c.paths.rnv.pluginTemplates.dir,key));

(0,_fileutils.copyFolderContentsRecursiveSync)(sourcePathRnvPlugin,destPath,true,false,false,objectInject);


var sourcePath3=(0,_common.getBuildsFolder)(
c,
platform,
_path.default.join(c.paths.project.projectConfig.dir,"plugins/"+key));

(0,_fileutils.copyFolderContentsRecursiveSync)(sourcePath3,destPath,true,false,false,objectInject);


var sourcePath3sec=(0,_common.getBuildsFolder)(
c,
platform,
_path.default.join(
c.paths.workspace.project.projectConfig.dir,"plugins/"+
key));


(0,_fileutils.copyFolderContentsRecursiveSync)(sourcePath3sec,destPath,true,false,false,objectInject);


var sourcePath2=(0,_common.getBuildsFolder)(
c,
platform,
_path.default.join(c.paths.appConfig.dir,"plugins/"+key));

(0,_fileutils.copyFolderContentsRecursiveSync)(sourcePath2,destPath,true,false,false,objectInject);


var sourcePath2sec=(0,_common.getBuildsFolder)(
c,
platform,
_path.default.join(c.paths.workspace.appConfig.dir,"plugins/"+key));

(0,_fileutils.copyFolderContentsRecursiveSync)(sourcePath2sec,destPath,true,false,false,objectInject);
});
};exports.copyTemplatePluginsSync=copyTemplatePluginsSync;

var getLocalRenativePlugin=function getLocalRenativePlugin(){return{
version:'file:../packages/renative',
webpack:{
modulePaths:[],
moduleAliases:{
renative:{
projectPath:'packages/renative'}}}};};exports.getLocalRenativePlugin=getLocalRenativePlugin;var _default=







{getMergedPlugin:getMergedPlugin,parsePlugins:parsePlugins,getLocalRenativePlugin:getLocalRenativePlugin};exports.default=_default;
//# sourceMappingURL=index.js.map