Skip to content
Closed
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
3 changes: 3 additions & 0 deletions .gitmodules
Original file line number Diff line number Diff line change
@@ -0,0 +1,3 @@
[submodule "packages/crmscript-language-server"]
path = packages/crmscript-language-server
url = https://github.com/SuperOffice/crmscript-language-server
16 changes: 16 additions & 0 deletions .vscode/launch.json
Original file line number Diff line number Diff line change
Expand Up @@ -88,5 +88,21 @@
"preLaunchTask": "npm: build:vscode-tsfso",
"autoAttachChildProcesses": true
},
{
"name": "crmscript-language-server",
"type": "extensionHost",
"request": "launch",
"args": [
"--extensionDevelopmentPath=${workspaceFolder}/packages/crmscript-language-server/vscode-extension",
"--disable-extensions",
"--folder-uri=${workspaceRoot}/packages/crmscript-language-server/test-workspace"
],
"outFiles": [
"${workspaceFolder}/packages/crmscript-language-server/dist/src/**/*.js",
"${workspaceFolder}/packages/crmscript-language-server/vscode-extension/out/*.js"
],
"preLaunchTask": "npm: build:crmscript-language-server",
"autoAttachChildProcesses": true
}
]
}
4 changes: 3 additions & 1 deletion package.json
Original file line number Diff line number Diff line change
Expand Up @@ -5,11 +5,13 @@
"build:vscode-tsfso": "npm run build --prefix ./packages/superofficedx-vscode-tsfso",
"build:vscode-crmscript": "npm run build --prefix ./packages/superofficedx-vscode-crmscript",
"build:langium-crmscript": "npm run langium:generate --prefix ./packages/langium-crmscript",
"build:crmscript-language-server": "npm run build --prefix ./packages/crmscript-language-server && npm run build --prefix ./packages/crmscript-language-server/vscode-extension",
"test": "vitest",
"test:watch": "vitest --watch",
"test:coverage": "vitest --coverage",
"test:core": "npm run test --prefix ./packages/superofficedx-vscode-core",
"test:core-coverage": "npm run test:coverage --prefix ./packages/superofficedx-vscode-core"
"test:core-coverage": "npm run test:coverage --prefix ./packages/superofficedx-vscode-core",
"lint": "pnpm eslint ."
},
"devDependencies": {
"@eslint/js": "^9.37.0",
Expand Down
1 change: 1 addition & 0 deletions packages/crmscript-language-server
Original file line number Diff line number Diff line change
Expand Up @@ -8,7 +8,7 @@ import { isBooleanType, isEnumMemberType, TypeDescription, typeToString } from '
/**
* Register custom validation checks.
*/
export function registerValidationChecks(services: CrmscriptServices) {
export function registerValidationChecks(services: CrmscriptServices): void {
const registry = services.validation.ValidationRegistry;
const validator = services.validation.CrmscriptValidator;
const checks: ValidationChecks<CrmscriptAstType> = {
Expand Down Expand Up @@ -56,7 +56,7 @@ export class CrmscriptValidator {
}
}

checkConstructorCallType(call: ConstructorCall, accept: ValidationAcceptor) {
checkConstructorCallType(call: ConstructorCall, accept: ValidationAcceptor): void {
const typeDecl = call.type?.ref;
if (!typeDecl || !isClass(typeDecl)) return;

Expand All @@ -75,7 +75,7 @@ export class CrmscriptValidator {
}
}

checkMemberCallParameters(memberCall: MemberCall, accept: ValidationAcceptor) {
checkMemberCallParameters(memberCall: MemberCall, accept: ValidationAcceptor): void {

const methodMember = memberCall.element?.ref as MethodMember;
if (!methodMember) return;
Expand Down Expand Up @@ -163,7 +163,7 @@ export class CrmscriptValidator {
}

checkUniqueVariableName(grammar: Grammar, accept: ValidationAcceptor): void {
const extractor = (grammar: Grammar) => stream(grammar.types);
const extractor = (grammar: Grammar): Stream<NamedAstNode> => stream(grammar.types);
this.checkUniqueName(grammar, accept, extractor, 'type');
}

Expand Down
16 changes: 8 additions & 8 deletions packages/language-server/src/languagePlugin.ts
Original file line number Diff line number Diff line change
Expand Up @@ -12,23 +12,23 @@ import { LanguageService, LanguageType } from './languageService.js';

export function getLanguagePlugin(): LanguagePlugin<URI, TsfsoVirtualCode> {
return {
getLanguageId(uri) {
getLanguageId(uri): string | undefined {
if (uri.path.endsWith('.tsfso')) {
return 'tsfso';
}
},

createVirtualCode(uri, languageId, snapshot) {
createVirtualCode(uri, languageId, snapshot): TsfsoVirtualCode | undefined {
if (languageId === 'tsfso') {
return new TsfsoVirtualCode(uri, snapshot, languageId);
}
},
typescript: {
extraFileExtensions: [{ extension: 'tsfso', isMixedContent: true, scriptKind: ts.ScriptKind.TS }],
getServiceScript() {
getServiceScript(): TypeScriptExtraServiceScript | undefined {
return undefined;
},
getExtraServiceScripts(fileName, root) {
getExtraServiceScripts(fileName, root): TypeScriptExtraServiceScript[] {
const scripts: TypeScriptExtraServiceScript[] = [];
for (const code of forEachEmbeddedCode(root)) {
if (code.languageId === 'javascript') {
Expand All @@ -50,7 +50,7 @@ export function getLanguagePlugin(): LanguagePlugin<URI, TsfsoVirtualCode> {
}
return scripts;
},
resolveLanguageServiceHost(host) {
resolveLanguageServiceHost(host): ts.LanguageServiceHost {
const baseCompilationSettings = host.getCompilationSettings();
// Set compiler options
const newSettings = {
Expand All @@ -63,7 +63,7 @@ export function getLanguagePlugin(): LanguagePlugin<URI, TsfsoVirtualCode> {
return {
...host,
getCompilationSettings: () => newSettings,
getScriptFileNames: () => {
getScriptFileNames: (): string[] => {
const fileNames = host.getScriptFileNames();
const addedFileNames: string[] = [];
addedFileNames.push(
Expand Down Expand Up @@ -95,12 +95,12 @@ class TsfsoVirtualCode implements VirtualCode {
this.onSnapshotUpdated();
}

public update(newSnapshot: ts.IScriptSnapshot) {
public update(newSnapshot: ts.IScriptSnapshot): void {
this.snapshot = newSnapshot;
this.onSnapshotUpdated();
}

private onSnapshotUpdated() {
private onSnapshotUpdated(): void {
this.mappings = [
{
sourceOffsets: [0],
Expand Down
2 changes: 1 addition & 1 deletion packages/language-server/src/typescriptPlugin.ts
Original file line number Diff line number Diff line change
Expand Up @@ -11,7 +11,7 @@ export const create = (ts: typeof import('typescript')): LanguageServicePlugin[]
const typeScriptPlugin = plugin.create(context);
return {
...typeScriptPlugin,
async provideDiagnostics(document, token) {
async provideDiagnostics(document, token): Promise<import('@volar/language-server').Diagnostic[] | null> {
const diagnostics = await typeScriptPlugin.provideDiagnostics?.(document, token);
if (!diagnostics) return null;

Expand Down
148 changes: 74 additions & 74 deletions packages/superofficedx-vscode-crmscript/package.json
Original file line number Diff line number Diff line change
@@ -1,77 +1,77 @@
{
"name": "superofficedx-vscode-crmscript",
"publisher": "superoffice",
"displayName": "TypeScript for SuperOffice",
"description": "",
"qna": "https://github.com/SuperOffice/language-tools/issues",
"bugs": {
"url": "https://github.com/SuperOffice/language-tools/issues"
},
"version": "0.0.1",
"repository": {
"type": "git",
"url": "https://github.com/SuperOffice/language-tools.git"
},
"engines": {
"vscode": "^1.95.0"
},
"categories": [
"Other"
],
"activationEvents": [],
"main": "./out/superofficedx-vscode-crmscript/src/main.cjs",
"contributes": {
"languages": [
{
"id": "crmscript",
"extensions": [
".crmscript"
],
"configuration": "./syntaxes/crmscript-language-configuration.json",
"icon": {
"light": "/resources/logo.svg",
"dark": "/resources/logo.svg"
}
},
{
"id": "crmscript-definition",
"extensions": [
".crmscript-definition"
],
"configuration": "./syntaxes/crmscript-language-configuration.json",
"icon": {
"light": "/resources/logo.svg",
"dark": "/resources/logo.svg"
}
}
"name": "superofficedx-vscode-crmscript",
"publisher": "superoffice",
"displayName": "TypeScript for SuperOffice",
"description": "",
"qna": "https://github.com/SuperOffice/language-tools/issues",
"bugs": {
"url": "https://github.com/SuperOffice/language-tools/issues"
},
"version": "0.0.1",
"repository": {
"type": "git",
"url": "https://github.com/SuperOffice/language-tools.git"
},
"engines": {
"vscode": "^1.95.0"
},
"categories": [
"Other"
],
"grammars": [
{
"language": "crmscript",
"scopeName": "source.crmscript",
"path": "./syntaxes/crmscript.tmLanguage.json"
},
{
"language": "crmscript-definition",
"scopeName": "source.crmscript-definition",
"path": "./syntaxes/crmscript-definition.tmLanguage.json"
}
]
},
"scripts": {
"preinstall": "npx only-allow pnpm",
"vscode:prepublish": "npm run compile",
"compile": "tsc -p ./",
"watch": "tsc -watch -p ./",
"pretest": "npm run compile && npm run lint",
"lint": "eslint src --ext ts",
"test": "node ./out/test/runTest.js",
"build": "node ./scripts/esbuild.mjs"
},
"dependencies": {
"vscode-languageclient": "~9.0.1"
},
"devDependencies": {
"esbuild": "*"
}
"activationEvents": [],
"main": "./out/superofficedx-vscode-crmscript/src/main.cjs",
"contributes": {
"languages": [
{
"id": "crmscript",
"extensions": [
".crmscript"
],
"configuration": "./syntaxes/crmscript-language-configuration.json",
"icon": {
"light": "/resources/logo.svg",
"dark": "/resources/logo.svg"
}
},
{
"id": "crmscript-definition",
"extensions": [
".crmscript-definition"
],
"configuration": "./syntaxes/crmscript-language-configuration.json",
"icon": {
"light": "/resources/logo.svg",
"dark": "/resources/logo.svg"
}
}
],
"grammars": [
{
"language": "crmscript",
"scopeName": "source.crmscript",
"path": "./syntaxes/crmscript.tmLanguage.json"
},
{
"language": "crmscript-definition",
"scopeName": "source.crmscript-definition",
"path": "./syntaxes/crmscript-definition.tmLanguage.json"
}
]
},
"scripts": {
"preinstall": "npx only-allow pnpm",
"vscode:prepublish": "npm run compile",
"compile": "tsc -p ./",
"watch": "tsc -watch -p ./",
"pretest": "npm run compile && npm run lint",
"lint": "eslint src --ext ts",
"test": "node ./out/test/runTest.js",
"build": "node ./scripts/esbuild.mjs"
},
"dependencies": {
"vscode-languageclient": "~9.0.1"
},
"devDependencies": {
"esbuild": "*"
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -3,7 +3,7 @@ import { builtins } from '../../langium-crmscript/src/language/builtin/builtins.

export class DslLibraryFileSystemProvider implements vscode.FileSystemProvider {

static register(context: vscode.ExtensionContext) {
static register(context: vscode.ExtensionContext): void {
context.subscriptions.push(
vscode.workspace.registerFileSystemProvider('builtins', new DslLibraryFileSystemProvider(), {
isReadonly: true,
Expand All @@ -30,29 +30,29 @@ export class DslLibraryFileSystemProvider implements vscode.FileSystemProvider {
private readonly didChangeFile = new vscode.EventEmitter<vscode.FileChangeEvent[]>();
onDidChangeFile = this.didChangeFile.event;

watch() {
watch(): vscode.Disposable {
return {
dispose: () => { }
dispose: (): void => { }
};
}

readDirectory(): [] {
throw vscode.FileSystemError.NoPermissions();
}

createDirectory() {
createDirectory(): void {
throw vscode.FileSystemError.NoPermissions();
}

writeFile() {
writeFile(): void {
throw vscode.FileSystemError.NoPermissions();
}

delete() {
delete(): void {
throw vscode.FileSystemError.NoPermissions();
}

rename() {
rename(): void {
throw vscode.FileSystemError.NoPermissions();
}
}
2 changes: 1 addition & 1 deletion packages/superofficedx-vscode-crmscript/src/main.ts
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
import type { LanguageClientOptions, ServerOptions} from 'vscode-languageclient/node.js';
import type { LanguageClientOptions, ServerOptions } from 'vscode-languageclient/node.js';
import type * as vscode from 'vscode';
import * as path from 'node:path';
import { LanguageClient, TransportKind } from 'vscode-languageclient/node.js';
Expand Down
14 changes: 7 additions & 7 deletions packages/superofficedx-vscode-tsfso/src/extension.ts
Original file line number Diff line number Diff line change
@@ -1,16 +1,16 @@
import * as vscode from 'vscode';
import { startLanguageFeatures } from './languageFeatures';

import { createLabsInfo } from '@volar/vscode';
import { createLabsInfo, LabsInfo } from '@volar/vscode';
import * as serverProtocol from '@volar/language-server/protocol';

export async function activate(context: vscode.ExtensionContext) {
const languageClient = await startLanguageFeatures(context);
export async function activate(context: vscode.ExtensionContext): Promise<LabsInfo> {
const languageClient = await startLanguageFeatures(context);

//Volar labs
const labsInfo = createLabsInfo(serverProtocol);
labsInfo.addLanguageClient(languageClient);
return labsInfo.extensionExports;
const labsInfo = createLabsInfo(serverProtocol);
labsInfo.addLanguageClient(languageClient);
return labsInfo.extensionExports;
}

export function deactivate() {}
export function deactivate(): void { }
Loading