validate-deps.mjs (1447B)
1 /** 2 * @license 3 * Copyright 2025 Google Inc. 4 * SPDX-License-Identifier: Apache-2.0 5 */ 6 7 import puppeteerPackageJson from '../packages/puppeteer/package.json' with {type: 'json'}; 8 import puppeteerCorePackageJson from '../packages/puppeteer-core/package.json' with {type: 'json'}; 9 10 const syncDeps = ['chromium-bidi', 'devtools-protocol', 'typed-query-selector']; 11 const syncDevDeps = ['@types/node']; 12 13 const areDepsSynced = ({ 14 depsToCheck, 15 firstPackage, 16 secondPackage, 17 depsType = 'dependencies', 18 }) => { 19 let noError = true; 20 for (const dep of depsToCheck) { 21 if (!firstPackage[depsType][dep]) { 22 console.log(`Dependency ${dep} does not exit in ${firstPackage['name']}`); 23 noError = false; 24 } 25 if (!secondPackage[depsType][dep]) { 26 console.log( 27 `Dependency ${dep} does not exit in ${secondPackage['name']}`, 28 ); 29 noError = false; 30 } 31 32 if (firstPackage[depsType][dep] !== secondPackage[depsType][dep]) { 33 console.log(`Dependency ${dep} not synced.`); 34 noError = false; 35 } 36 } 37 38 return noError; 39 }; 40 41 const resultDeps = areDepsSynced({ 42 depsToCheck: syncDeps, 43 firstPackage: puppeteerCorePackageJson, 44 secondPackage: puppeteerPackageJson, 45 }); 46 const resultDevDeps = areDepsSynced({ 47 depsToCheck: syncDevDeps, 48 firstPackage: puppeteerCorePackageJson, 49 secondPackage: puppeteerPackageJson, 50 depsType: 'devDependencies', 51 }); 52 53 process.exit(resultDeps && resultDevDeps ? 0 : 1);