Skip to content

Commit

Permalink
WIP: Fix build and examples
Browse files Browse the repository at this point in the history
  • Loading branch information
kaisalmen committed Jul 26, 2023
1 parent a5bb672 commit c1abe0f
Show file tree
Hide file tree
Showing 8 changed files with 218 additions and 154 deletions.
258 changes: 134 additions & 124 deletions package-lock.json

Large diffs are not rendered by default.

4 changes: 2 additions & 2 deletions packages/client/package.json
Original file line number Diff line number Diff line change
Expand Up @@ -49,13 +49,13 @@
],
"dependencies": {
"monaco-editor": "~0.40.0",
"vscode": "npm:@codingame/monaco-vscode-api@1.80.0-next.3",
"vscode": "npm:@codingame/monaco-vscode-api@1.80.0-next.5",
"vscode-jsonrpc": "~8.1.0",
"vscode-languageclient": "~8.1.0"
},
"peerDependencies": {
"monaco-editor": "~0.40.0",
"vscode": "npm:@codingame/monaco-vscode-api@1.80.0-next.3"
"vscode": "npm:@codingame/monaco-vscode-api@1.80.0-next.5"
},
"peerDependenciesMeta": {
"monaco-editor": {
Expand Down
45 changes: 39 additions & 6 deletions packages/client/src/monaco-vscode-api-services.ts
Original file line number Diff line number Diff line change
Expand Up @@ -15,6 +15,7 @@ interface MonacoEnvironmentEnhanced extends Environment {

export type InitializeServiceConfig = {
enableFilesService?: boolean;
enableExtensionsService?: boolean;
enableDialogService?: boolean;
enableNotificationService?: boolean;
enableModelService?: boolean;
Expand All @@ -34,13 +35,19 @@ export type InitializeServiceConfig = {
enableDebugService?: boolean;
enablePreferencesService?: boolean;
enableSnippetsService?: boolean;
enableQuickaccessService?: boolean;
configureQuickaccessService?: {
isKeybindingConfigurationVisible: boolean,
shouldUseGlobalPicker: boolean
};
enableOutputService?: boolean;
configureTerminalServiceConfig?: {
backendImpl: SimpleTerminalBackend | ITerminalBackend
}
enableSearchService?: boolean;
enableMarkersService?: boolean;
enableAccessibilityService?: boolean;
enableEnvironmentService?: boolean;
enableLayoutService?: boolean;
userServices?: editor.IEditorOverrideServices;
debugLogging?: boolean;
logLevel?: LogLevel
Expand Down Expand Up @@ -88,6 +95,9 @@ const importAllServices = async (config?: InitializeServiceConfig) => {
if (lc.enableFilesService === true) {
addService('files', import('vscode/service-override/files'));
}
if (lc.enableExtensionsService === true) {
addService('extensions', import('vscode/service-override/extensions'));
}
if (lc.enableModelService === true) {
addService('model', import('vscode/service-override/model'));
}
Expand Down Expand Up @@ -131,7 +141,7 @@ const importAllServices = async (config?: InitializeServiceConfig) => {
if (lc.enableSnippetsService === true) {
addService('snippets', import('vscode/service-override/snippets'));
}
if (lc.enableQuickaccessService === true) {
if (lc.configureQuickaccessService !== undefined) {
addService('quickaccess', import('vscode/service-override/quickaccess'));
}
if (lc.enableOutputService === true) {
Expand All @@ -146,11 +156,24 @@ const importAllServices = async (config?: InitializeServiceConfig) => {
if (lc.enableMarkersService === true) {
addService('markers', import('vscode/service-override/markers'));
}
if (lc.enableAccessibilityService === true) {
addService('accessibility', import('vscode/service-override/accessibility'));
}
if (lc.enableEnvironmentService === true) {
addService('environment', import('vscode/service-override/environment'));
}
if (lc.enableLayoutService === true) {
addService('layout', import('vscode/service-override/layout'));
}

const reportServiceLoading = (origin: string, services: editor.IEditorOverrideServices, debugLogging: boolean) => {
const reportServiceLoading = (services: editor.IEditorOverrideServices, debugLogging: boolean, origin?: string) => {
for (const serviceName of Object.keys(services)) {
if (debugLogging) {
console.log(`Loading ${origin} service: ${serviceName}`);
if (origin) {
console.log(`Loading ${origin} service: ${serviceName}`);
} else {
console.log(`Loading service: ${serviceName}`);
}
}
}
};
Expand All @@ -166,14 +189,19 @@ const importAllServices = async (config?: InitializeServiceConfig) => {
const overrideServices: editor.IEditorOverrideServices = {};
if (userServices) {
mergeServices(userServices, overrideServices);
reportServiceLoading('user', userServices, lc.debugLogging === true);
reportServiceLoading(userServices, lc.debugLogging === true, 'user');
}

// files service is required
if (!serviceNames.includes('files') && !Object.keys(overrideServices).includes('fileService')) {
throw new Error('"files" service was not configured, but it is mandatory. Please add it to the "initServices" config.');
}

// files service is required
if (!serviceNames.includes('extensions') && !Object.keys(overrideServices).includes('extensionService')) {
throw new Error('"extensions" service was not configured, but it is mandatory. Please add it to the "initServices" config.');
}

// theme requires textmate
if ((serviceNames.includes('theme') || Object.keys(overrideServices).includes('themeService')) &&
!(serviceNames.includes('textmate') || Object.keys(overrideServices).includes('textMateTokenizationFeature'))) {
Expand Down Expand Up @@ -216,12 +244,17 @@ const importAllServices = async (config?: InitializeServiceConfig) => {
if (lc.configureTerminalServiceConfig?.backendImpl) {
services = loadedImport.default(lc.configureTerminalServiceConfig.backendImpl);
}
} else if (serviceName === 'quickaccess') {
services = loadedImport.default({
isKeybindingConfigurationVisible: lc.configureQuickaccessService?.isKeybindingConfigurationVisible,
shouldUseGlobalPicker: lc.configureQuickaccessService?.shouldUseGlobalPicker
});
} else {
services = loadedImport.default();
}

mergeServices(services, overrideServices);
reportServiceLoading('user', services, lc.debugLogging === true);
reportServiceLoading(services, lc.debugLogging === true);

count++;
}
Expand Down
11 changes: 8 additions & 3 deletions packages/examples/main/src/common.ts
Original file line number Diff line number Diff line change
Expand Up @@ -4,7 +4,6 @@
* ------------------------------------------------------------------------------------------ */

import 'monaco-editor/esm/vs/editor/editor.all.js';
import 'monaco-editor/esm/vs/editor/standalone/browser/accessibilityHelp/accessibilityHelp.js';
import 'monaco-editor/esm/vs/editor/standalone/browser/iPadShowKeyboard/iPadShowKeyboard.js';
import { editor, languages, Uri } from 'monaco-editor/esm/vs/editor/editor.api.js';
import { createConfiguredEditor, createModelReference, IReference, ITextFileEditorModel } from 'vscode/monaco';
Expand Down Expand Up @@ -81,16 +80,22 @@ export const createJsonEditor = async (config: {
if (config.init === true) {
await initServices({
enableFilesService: true,
enableExtensionsService: true,
enableThemeService: true,
enableTextmateService: true,
enableModelService: true,
configureEditorOrViewsServiceConfig: {
enableViewsService: false,
useDefaultOpenEditorFunction: true
},
enableLanguagesService: true,
enableKeybindingsService: true,
enableQuickaccessService: true,
enableLanguagesService: true,
configureQuickaccessService: {
isKeybindingConfigurationVisible: true,
shouldUseGlobalPicker: true
},
enableOutputService: true,
enableAccessibilityService: true,
debugLogging: true
});
}
Expand Down
24 changes: 11 additions & 13 deletions packages/examples/main/src/langium/main.ts
Original file line number Diff line number Diff line change
Expand Up @@ -4,15 +4,14 @@
* ------------------------------------------------------------------------------------------ */

import 'monaco-editor/esm/vs/editor/editor.all.js';
import 'monaco-editor/esm/vs/editor/standalone/browser/accessibilityHelp/accessibilityHelp.js';
import 'monaco-editor/esm/vs/editor/standalone/browser/iPadShowKeyboard/iPadShowKeyboard.js';
import { editor, Uri } from 'monaco-editor/esm/vs/editor/editor.api.js';

import { MonacoLanguageClient, initServices } from 'monaco-languageclient';
import { BrowserMessageReader, BrowserMessageWriter } from 'vscode-languageserver-protocol/browser.js';
import { CloseAction, ErrorAction, MessageTransports } from 'vscode-languageclient';
import { createConfiguredEditor } from 'vscode/monaco';
import { registerExtension } from 'vscode/extensions';
import { ExtensionHostKind, registerExtension } from 'vscode/extensions';
import { updateUserConfiguration } from 'vscode/service-override/configuration';
import getFileServiceOverride from 'vscode/service-override/files';
import { LogLevel } from 'vscode/services';
Expand Down Expand Up @@ -60,17 +59,11 @@ const setup = async () => {
}]
}
};
const { registerFile: registerExtensionFile } = registerExtension(extension);
const { registerFileUrl } = registerExtension(extension, ExtensionHostKind.LocalProcess);
// const api = await getApi();

registerExtensionFile('/statemachine-configuration.json', async () => {
const statemachineLanguageConfig = new URL('../../../node_modules/langium-statemachine-dsl/language-configuration.json', window.location.href).href;
return (await fetch(statemachineLanguageConfig)).text();
});

registerExtensionFile('/statemachine-grammar.json', async () => {
const statemachineTmUrl = new URL('../../../node_modules/langium-statemachine-dsl/syntaxes/statemachine.tmLanguage.json', window.location.href).href;
return (await fetch(statemachineTmUrl)).text();
});
registerFileUrl('/statemachine-configuration.json', new URL('../../../node_modules/langium-statemachine-dsl/language-configuration.json', window.location.href).href);
registerFileUrl('/statemachine-grammar.json', new URL('../../../node_modules/langium-statemachine-dsl/syntaxes/statemachine.tmLanguage.json', window.location.href).href);

updateUserConfiguration(`{
"editor.fontSize": 14,
Expand Down Expand Up @@ -127,6 +120,7 @@ try {
// This should demonstrate that you can chose to not use the built-in loading mechanism,
// but do it manually, see below
enableFilesService: false,
enableExtensionsService: true,
enableThemeService: true,
enableTextmateService: true,
enableModelService: true,
Expand All @@ -145,10 +139,14 @@ try {
enableNotificationService: true,
enablePreferencesService: true,
enableSnippetsService: true,
enableQuickaccessService: true,
configureQuickaccessService: {
isKeybindingConfigurationVisible: true,
shouldUseGlobalPicker: true
},
enableOutputService: true,
enableSearchService: true,
enableMarkersService: false,
enableAccessibilityService: true,
userServices: {
// manually add the files service
...getFileServiceOverride()
Expand Down
5 changes: 1 addition & 4 deletions packages/examples/main/src/react/app.tsx
Original file line number Diff line number Diff line change
Expand Up @@ -2,12 +2,9 @@
* Copyright (c) 2018-2022 TypeFox GmbH (http://www.typefox.io). All rights reserved.
* Licensed under the MIT License. See License.txt in the project root for license information.
* ------------------------------------------------------------------------------------------ */
import 'monaco-editor/esm/vs/editor/editor.all.js';
import 'monaco-editor/esm/vs/editor/standalone/browser/accessibilityHelp/accessibilityHelp.js';
import 'monaco-editor/esm/vs/editor/standalone/browser/iPadShowKeyboard/iPadShowKeyboard.js';
import { createJsonEditor, createUrl, createWebSocket } from '../common.js';
import { editor } from 'monaco-editor/esm/vs/editor/editor.api.js';
import React, { createRef, useEffect, useMemo, useRef } from 'react';
import { createJsonEditor, createUrl, createWebSocket } from '../common.js';

import { buildWorkerDefinition } from 'monaco-editor-workers';
buildWorkerDefinition('../../../node_modules/monaco-editor-workers/dist/workers/', new URL('', window.location.href).href, false);
Expand Down
2 changes: 1 addition & 1 deletion packages/verify/pnpm/package.json
Original file line number Diff line number Diff line change
Expand Up @@ -5,7 +5,7 @@
"dependencies": {
"monaco-languageclient": "6.3.0-next.0",
"monaco-editor": "~0.40.0",
"vscode": "npm:@codingame/monaco-vscode-api@~1.80.0-next.3"
"vscode": "npm:@codingame/monaco-vscode-api@~1.80.0-next.5"
},
"devDependencies": {
"shx": "~0.3.4"
Expand Down
23 changes: 22 additions & 1 deletion vite.config.ts
Original file line number Diff line number Diff line change
@@ -1,6 +1,7 @@
/* eslint-disable header/header */
import { defineConfig } from 'vite';
import { resolve } from 'path';
import { readFileSync } from 'fs';

export default defineConfig(() => {
const config = {
Expand All @@ -23,7 +24,27 @@ export default defineConfig(() => {
port: 8080,
origin: 'http://localhost:8080'
},
assetsInclude: ['**/*.wasm']
assetsInclude: ['**/*.wasm'],
optimizeDeps: {
esbuildOptions: {
plugins: [
// copied from "https://github.com/CodinGame/monaco-vscode-api/blob/run-ext-host-in-worker/demo/vite.config.ts"
{
name: 'import.meta.url',
setup({ onLoad }) {
// Help vite that bundles/move files without touching `import.meta.url` which breaks asset urls
onLoad({ filter: /default-extensions\/.*\.js/, namespace: 'file' }, args => {
let code = readFileSync(args.path, 'utf8');
code = code.replace(
/\bimport\.meta\.url\b/g,
`new URL('/@fs/${args.path}', window.location.origin)`
);
return { contents: code };
});
}
}]
}
}
};
return config;
});

0 comments on commit c1abe0f

Please sign in to comment.