62 lines
2.0 KiB
TypeScript
62 lines
2.0 KiB
TypeScript
/**
|
|
* @license
|
|
* Copyright 2025 Google LLC
|
|
* SPDX-License-Identifier: Apache-2.0
|
|
*/
|
|
|
|
import {readFileSync, writeFileSync} from 'node:fs';
|
|
import {rm} from 'node:fs/promises';
|
|
import {resolve} from 'node:path';
|
|
|
|
const projectRoot = process.cwd();
|
|
|
|
const filesToRemove = [
|
|
'node_modules/chrome-devtools-frontend/package.json',
|
|
'node_modules/chrome-devtools-frontend/front_end/models/trace/lantern/testing',
|
|
'node_modules/chrome-devtools-frontend/front_end/third_party/intl-messageformat/package/package.json',
|
|
];
|
|
|
|
/**
|
|
* Removes the conflicting global HTMLElementEventMap declaration from
|
|
* @paulirish/trace_engine/models/trace/ModelImpl.d.ts to avoid TS2717 error
|
|
* when both chrome-devtools-frontend and @paulirish/trace_engine declare
|
|
* the same property.
|
|
*/
|
|
function removeConflictingGlobalDeclaration(): void {
|
|
const filePath = resolve(
|
|
projectRoot,
|
|
'node_modules/@paulirish/trace_engine/models/trace/ModelImpl.d.ts',
|
|
);
|
|
console.log(
|
|
'Removing conflicting global declaration from @paulirish/trace_engine...',
|
|
);
|
|
const content = readFileSync(filePath, 'utf-8');
|
|
// Remove the declare global block using regex
|
|
// Matches: declare global { ... interface HTMLElementEventMap { ... } ... }
|
|
const newContent = content.replace(
|
|
/declare global\s*\{\s*interface HTMLElementEventMap\s*\{[^}]*\[ModelUpdateEvent\.eventName\]:\s*ModelUpdateEvent;\s*\}\s*\}/s,
|
|
'',
|
|
);
|
|
writeFileSync(filePath, newContent, 'utf-8');
|
|
console.log('Successfully removed conflicting global declaration.');
|
|
}
|
|
|
|
async function main() {
|
|
console.log('Running prepare script to clean up chrome-devtools-frontend...');
|
|
for (const file of filesToRemove) {
|
|
const fullPath = resolve(projectRoot, file);
|
|
console.log(`Removing: ${file}`);
|
|
try {
|
|
await rm(fullPath, {recursive: true, force: true});
|
|
} catch (error) {
|
|
console.error(`Failed to remove ${file}:`, error);
|
|
process.exit(1);
|
|
}
|
|
}
|
|
console.log('Clean up of chrome-devtools-frontend complete.');
|
|
|
|
removeConflictingGlobalDeclaration();
|
|
}
|
|
|
|
void main();
|