From 416fa2da2a9e297cc618e090410d91a22118a418 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Lo=C3=AFc=20Mangeonjean?= Date: Wed, 24 May 2023 16:59:17 +0200 Subject: [PATCH 1/3] fix: force specific monaco-editor version --- package-lock.json | 2 +- package.json | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/package-lock.json b/package-lock.json index c160fb4c..da465cca 100644 --- a/package-lock.json +++ b/package-lock.json @@ -54,7 +54,7 @@ "zx": "^7.2.1" }, "peerDependencies": { - "monaco-editor": "~0.37.1", + "monaco-editor": "0.37.1", "vscode-oniguruma": "^1.7.0", "vscode-textmate": "^9.0.0", "yauzl": "^2.10.0" diff --git a/package.json b/package.json index 7c0ca38b..d50025ed 100644 --- a/package.json +++ b/package.json @@ -223,7 +223,7 @@ "zx": "^7.2.1" }, "peerDependencies": { - "monaco-editor": "~0.37.1", + "monaco-editor": "0.37.1", "vscode-oniguruma": "^1.7.0", "vscode-textmate": "^9.0.0", "yauzl": "^2.10.0" From c0301e34559868f72cbdcffba2e6f736e8f3d6cf Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Lo=C3=AFc=20Mangeonjean?= Date: Wed, 24 May 2023 17:00:41 +0200 Subject: [PATCH 2/3] fix: check monaco version before treemending --- src/monaco-treemending.ts | 15 ++++++++++++++- 1 file changed, 14 insertions(+), 1 deletion(-) diff --git a/src/monaco-treemending.ts b/src/monaco-treemending.ts index d7d8295b..66737b5a 100644 --- a/src/monaco-treemending.ts +++ b/src/monaco-treemending.ts @@ -5,9 +5,22 @@ import { createRequire } from 'node:module' const require = createRequire(import.meta.url) async function run () { + const ownPackageJson = JSON.parse((await fs.readFile(require.resolve('../package.json'))).toString('utf-8')) + const expectedMonacoVersion = ownPackageJson.peerDependencies['monaco-editor'] + const patchContent = await fs.readFile(require.resolve('../monaco-editor-treemending.patch')) - const monacoDirectory = path.resolve(path.dirname(require.resolve('monaco-editor/monaco.d.ts', { paths: [process.cwd()] })), 'esm') + const monacoDirectory = path.dirname(require.resolve('monaco-editor/monaco.d.ts', { paths: [process.cwd()] })) + const monacoEsmDirectory = path.resolve(monacoDirectory, 'esm') + const monacoPackageJsonFile = path.resolve(monacoDirectory, 'package.json') + + const monacoPackageJson = JSON.parse((await fs.readFile(monacoPackageJsonFile)).toString('utf-8')) + const monacoVersion = monacoPackageJson.version + + if (expectedMonacoVersion !== monacoVersion) { + console.error(`Wrong monaco-editor version: expecting ${expectedMonacoVersion}, got ${monacoVersion}`) + process.exit(1) + } function getMonacoFile (diff: ParsedDiff) { return path.resolve(monacoDirectory, diff.oldFileName!.slice('a/'.length)) From 30cda382c37f08fcfe92a9b38a907399a6dcb894 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Lo=C3=AFc=20Mangeonjean?= Date: Wed, 24 May 2023 17:01:11 +0200 Subject: [PATCH 3/3] fix: do not try to apply treemending patch twice --- src/monaco-treemending.ts | 23 +++++++++++++++++++---- 1 file changed, 19 insertions(+), 4 deletions(-) diff --git a/src/monaco-treemending.ts b/src/monaco-treemending.ts index 66737b5a..0f0f7243 100644 --- a/src/monaco-treemending.ts +++ b/src/monaco-treemending.ts @@ -22,8 +22,15 @@ async function run () { process.exit(1) } + const alreadyPatched: boolean = monacoPackageJson.treemended ?? false + if (alreadyPatched) { + // eslint-disable-next-line no-console + console.info('Monaco-editor has already been tree-mended, ignoring') + process.exit(0) + } + function getMonacoFile (diff: ParsedDiff) { - return path.resolve(monacoDirectory, diff.oldFileName!.slice('a/'.length)) + return path.resolve(monacoEsmDirectory, diff.oldFileName!.slice('a/'.length)) } await new Promise((resolve, reject) => { @@ -59,11 +66,19 @@ async function run () { } }) }) -} -run().then(() => { + // Mark monaco as treemended + await fs.writeFile(monacoPackageJsonFile, JSON.stringify({ + ...monacoPackageJson, + treemended: true + }, null, 2)) + // eslint-disable-next-line no-console console.info('Monaco-editor was tree-mended') -}, err => { + process.exit(0) +} + +run().catch(err => { console.error(err) + process.exit(1) })