aws-cdk-lib
Version:
Version 2 of the AWS Cloud Development Kit library
4 lines (3 loc) • 2.56 kB
JavaScript
;const fs=require("fs"),path=require("path"),jsii_reflect=require("jsii-reflect"),packageJson=require("./package.json"),dependencies=packageJson.dependencies||{},peerDependencies=packageJson.peerDependencies||{};async function main(){const constructLibrariesRoot=path.resolve(".."),constructLibrariesDirs=fs.readdirSync(constructLibrariesRoot);let errors=!1;const typeSystem=new jsii_reflect.TypeSystem,cfnType2L1Class={};await typeSystem.load(path.resolve(constructLibrariesRoot,"core"),{validate:!1});const cfnResourceClass=typeSystem.findClass("@aws-cdk/core.CfnResource");for(const constructLibraryDir of constructLibrariesDirs){const absConstructLibraryDir=path.resolve(constructLibrariesRoot,constructLibraryDir);if(!fs.statSync(absConstructLibraryDir).isDirectory())continue;const libraryPackageJson=require(path.join(absConstructLibraryDir,"package.json")),libraryDependencyVersion=dependencies[libraryPackageJson.name];if(libraryPackageJson.maturity==="deprecated"){libraryDependencyVersion&&(console.error(`Incorrect dependency on deprecated package: ${libraryPackageJson.name}`),errors=!0,delete dependencies[libraryPackageJson.name],delete peerDependencies[libraryPackageJson.name]);continue}if(!(libraryPackageJson["cdk-build"]||{}).cloudformation)continue;const libraryVersion=libraryPackageJson.version;libraryDependencyVersion?libraryDependencyVersion!==libraryVersion&&(console.error(`Incorrect dependency version for package ${libraryPackageJson.name}: expecting '${libraryVersion}', got: '${libraryDependencyVersion}'`),errors=!0):(console.error(`Missing dependency on package: ${libraryPackageJson.name}`),errors=!0),dependencies[libraryPackageJson.name]=libraryVersion,peerDependencies[libraryPackageJson.name]=libraryVersion;const assembly=await typeSystem.load(absConstructLibraryDir,{validate:!1});for(let i=0;i<assembly.classes.length;i++){const classs=assembly.classes[i];if(classs.extends(cfnResourceClass)&&(classs.spec.properties||[]).find(p=>p.name==="CFN_RESOURCE_TYPE_NAME")){const[moduleName,...className]=classs.fqn.split("."),jsClassFromModule=require(moduleName)[className.join(".")];cfnType2L1Class[jsClassFromModule.CFN_RESOURCE_TYPE_NAME]=classs.fqn}}}fs.writeFileSync(path.join(__dirname,"package.json"),JSON.stringify(packageJson,void 0,2)+`
`),fs.writeFileSync(path.join(__dirname,"cfn-types-2-classes.json"),JSON.stringify(cfnType2L1Class,void 0,2)+`
`),errors&&(console.error("errors found. updated package.json"),process.exit(1))}(async()=>{try{await main()}catch(e){console.error(e),process.exit(1)}})();