diff --git a/scripts/ci/build-monaco-editor-pkg.ts b/scripts/ci/build-monaco-editor-pkg.ts index ae6fb853..59e31d4e 100644 --- a/scripts/ci/build-monaco-editor-pkg.ts +++ b/scripts/ci/build-monaco-editor-pkg.ts @@ -46,8 +46,26 @@ async function prepareMonacoEditorRelease(monacoEditorCoreVersion: string) { const packageJson = JSON.parse( await readFile(monacoEditorPackageJsonPath, { encoding: 'utf-8' }) ) as PackageJson; + packageJson.version = monacoEditorCoreVersion; packageJson.devDependencies['monaco-editor-core'] = monacoEditorCoreVersion; + + const monacoEditorCorePackageJson = JSON.parse( + await readFile(monacoEditorCorePackageJsonPath, { encoding: 'utf-8' }) + ) as PackageJson; + + if (monacoEditorCorePackageJson.dependencies) { + if (!packageJson.dependencies) { + packageJson.dependencies = {}; + } + + objectMergeThrowIfSet( + packageJson.dependencies, + monacoEditorCorePackageJson.dependencies, + 'dependencies' + ); + } + await writeJsonFile(monacoEditorPackageJsonPath, packageJson); }); @@ -81,4 +99,19 @@ async function prepareMonacoEditorRelease(monacoEditorCoreVersion: string) { }); } +function objectMergeThrowIfSet( + target: Record, + source: Record, + fieldName: string +): void { + for (const [key, value] of Object.entries(source)) { + if (key in target) { + throw new Error( + `Cannot merge ${fieldName}: property '${key}' already exists in target with value '${target[key]}', would be overridden with '${value}'` + ); + } + target[key] = value; + } +} + prepareMonacoEditorReleaseStableOrNightly(); diff --git a/scripts/lib/index.ts b/scripts/lib/index.ts index 9f1c8b71..894aa3af 100644 --- a/scripts/lib/index.ts +++ b/scripts/lib/index.ts @@ -92,4 +92,5 @@ export interface PackageJson { vscodeCommitId?: string; monacoCommitId?: string; devDependencies: Record; + dependencies?: Record; }