feat(dees-editor): integrate Monaco version management and update CDN references
This commit is contained in:
		@@ -10,7 +10,8 @@
 | 
			
		||||
    "test": "tstest test/ --web --verbose --timeout 30 --logfile",
 | 
			
		||||
    "build": "tsbuild tsfolders --allowimplicitany && tsbundle element --production --bundler esbuild",
 | 
			
		||||
    "watch": "tswatch element",
 | 
			
		||||
    "buildDocs": "tsdoc"
 | 
			
		||||
    "buildDocs": "tsdoc",
 | 
			
		||||
    "postinstall": "node scripts/update-monaco-version.cjs"
 | 
			
		||||
  },
 | 
			
		||||
  "author": "Lossless GmbH",
 | 
			
		||||
  "license": "MIT",
 | 
			
		||||
 
 | 
			
		||||
							
								
								
									
										
											BIN
										
									
								
								readme.plan.md
									
									
									
									
									
								
							
							
						
						
									
										
											BIN
										
									
								
								readme.plan.md
									
									
									
									
									
								
							
										
											Binary file not shown.
										
									
								
							
							
								
								
									
										44
									
								
								scripts/update-monaco-version.cjs
									
									
									
									
									
										Executable file
									
								
							
							
						
						
									
										44
									
								
								scripts/update-monaco-version.cjs
									
									
									
									
									
										Executable file
									
								
							@@ -0,0 +1,44 @@
 | 
			
		||||
#!/usr/bin/env node
 | 
			
		||||
const fs = require('fs');
 | 
			
		||||
const path = require('path');
 | 
			
		||||
 | 
			
		||||
const projectRoot = path.resolve(__dirname, '..');
 | 
			
		||||
 | 
			
		||||
function resolveMonacoPackageJson() {
 | 
			
		||||
  try {
 | 
			
		||||
    const resolvedPath = require.resolve('monaco-editor/package.json', {
 | 
			
		||||
      paths: [projectRoot],
 | 
			
		||||
    });
 | 
			
		||||
    return resolvedPath;
 | 
			
		||||
  } catch (error) {
 | 
			
		||||
    console.error('[dees-editor] Unable to resolve monaco-editor/package.json');
 | 
			
		||||
    throw error;
 | 
			
		||||
  }
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
function getMonacoVersion() {
 | 
			
		||||
  const monacoPackagePath = resolveMonacoPackageJson();
 | 
			
		||||
  const monacoPackage = require(monacoPackagePath);
 | 
			
		||||
  if (!monacoPackage.version) {
 | 
			
		||||
    throw new Error('[dees-editor] monaco-editor/package.json does not expose a version field');
 | 
			
		||||
  }
 | 
			
		||||
  return monacoPackage.version;
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
function writeVersionModule(version) {
 | 
			
		||||
  const targetDir = path.join(projectRoot, 'ts_web', 'elements', 'dees-editor');
 | 
			
		||||
  fs.mkdirSync(targetDir, { recursive: true });
 | 
			
		||||
  const targetFile = path.join(targetDir, 'version.ts');
 | 
			
		||||
  const fileContent = `// Auto-generated by scripts/update-monaco-version.cjs\nexport const MONACO_VERSION = '${version}';\n`;
 | 
			
		||||
  fs.writeFileSync(targetFile, fileContent, 'utf8');
 | 
			
		||||
  console.log(`[dees-editor] Wrote ${path.relative(projectRoot, targetFile)} with monaco-editor@${version}`);
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
try {
 | 
			
		||||
  const version = getMonacoVersion();
 | 
			
		||||
  writeVersionModule(version);
 | 
			
		||||
} catch (error) {
 | 
			
		||||
  console.error('[dees-editor] Failed to update Monaco version module.');
 | 
			
		||||
  console.error(error instanceof Error ? error.message : error);
 | 
			
		||||
  process.exitCode = 1;
 | 
			
		||||
}
 | 
			
		||||
@@ -8,6 +8,7 @@ import {
 | 
			
		||||
  cssManager,
 | 
			
		||||
} from '@design.estate/dees-element';
 | 
			
		||||
import * as domtools from '@design.estate/dees-domtools';
 | 
			
		||||
import { MONACO_VERSION } from './version.js';
 | 
			
		||||
 | 
			
		||||
import type * as monaco from 'monaco-editor';
 | 
			
		||||
 | 
			
		||||
@@ -80,10 +81,11 @@ export class DeesEditor extends DeesElement {
 | 
			
		||||
  ): Promise<void> {
 | 
			
		||||
    super.firstUpdated(_changedProperties);
 | 
			
		||||
    const container = this.shadowRoot.getElementById('container');
 | 
			
		||||
    const monacoCdnBase = `https://cdn.jsdelivr.net/npm/monaco-editor@${MONACO_VERSION}`;
 | 
			
		||||
 | 
			
		||||
    if (!DeesEditor.monacoDeferred) {
 | 
			
		||||
      DeesEditor.monacoDeferred = domtools.plugins.smartpromise.defer();
 | 
			
		||||
      const scriptUrl = `https://cdn.jsdelivr.net/npm/monaco-editor/min/vs/loader.js`;
 | 
			
		||||
      const scriptUrl = `${monacoCdnBase}/min/vs/loader.js`;
 | 
			
		||||
      const script = document.createElement('script');
 | 
			
		||||
      script.src = scriptUrl;
 | 
			
		||||
      script.onload = () => {
 | 
			
		||||
@@ -94,7 +96,7 @@ export class DeesEditor extends DeesElement {
 | 
			
		||||
    await DeesEditor.monacoDeferred.promise;
 | 
			
		||||
 | 
			
		||||
    (window as any).require.config({
 | 
			
		||||
      paths: { vs: 'https://cdn.jsdelivr.net/npm/monaco-editor/min/vs' },
 | 
			
		||||
      paths: { vs: `${monacoCdnBase}/min/vs` },
 | 
			
		||||
    });
 | 
			
		||||
    (window as any).require(['vs/editor/editor.main'], async () => {
 | 
			
		||||
      const editor = ((window as any).monaco.editor as typeof monaco.editor).create(container, {
 | 
			
		||||
@@ -109,7 +111,7 @@ export class DeesEditor extends DeesElement {
 | 
			
		||||
      this.editorDeferred.resolve(editor);
 | 
			
		||||
    });
 | 
			
		||||
    const css = await (
 | 
			
		||||
      await fetch('https://cdn.jsdelivr.net/npm/monaco-editor/min/vs/editor/editor.main.css')
 | 
			
		||||
      await fetch(`${monacoCdnBase}/min/vs/editor/editor.main.css`)
 | 
			
		||||
    ).text();
 | 
			
		||||
    const styleElement = document.createElement('style');
 | 
			
		||||
    styleElement.textContent = css;
 | 
			
		||||
 
 | 
			
		||||
							
								
								
									
										2
									
								
								ts_web/elements/dees-editor/version.ts
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										2
									
								
								ts_web/elements/dees-editor/version.ts
									
									
									
									
									
										Normal file
									
								
							@@ -0,0 +1,2 @@
 | 
			
		||||
// Auto-generated by scripts/update-monaco-version.cjs
 | 
			
		||||
export const MONACO_VERSION = '0.52.2';
 | 
			
		||||
@@ -19,7 +19,7 @@ export * from './dees-contextmenu.js';
 | 
			
		||||
export * from './dees-dataview-codebox.js';
 | 
			
		||||
export * from './dees-dataview-statusobject.js';
 | 
			
		||||
export * from './dees-dashboardgrid/index.js';
 | 
			
		||||
export * from './dees-editor.js';
 | 
			
		||||
export * from './dees-editor/dees-editor.js';
 | 
			
		||||
export * from './dees-editor-markdown.js';
 | 
			
		||||
export * from './dees-editor-markdownoutlet.js';
 | 
			
		||||
export * from './dees-form-submit.js';
 | 
			
		||||
 
 | 
			
		||||
		Reference in New Issue
	
	Block a user