完成世界书、骰子、apiconfig页面处理
This commit is contained in:
+124
@@ -0,0 +1,124 @@
|
||||
/******************************************************************************
|
||||
* Copyright 2021 TypeFox GmbH
|
||||
* This program and the accompanying materials are made available under the
|
||||
* terms of the MIT License, which is available in the project root.
|
||||
******************************************************************************/
|
||||
|
||||
import type { Module } from './dependency-injection.js';
|
||||
import type { LangiumDefaultCoreServices, LangiumDefaultSharedCoreServices, LangiumCoreServices, LangiumSharedCoreServices } from './services.js';
|
||||
import type { FileSystemProvider } from './workspace/file-system-provider.js';
|
||||
import { createGrammarConfig } from './languages/grammar-config.js';
|
||||
import { createCompletionParser } from './parser/completion-parser-builder.js';
|
||||
import { createLangiumParser } from './parser/langium-parser-builder.js';
|
||||
import { DefaultTokenBuilder } from './parser/token-builder.js';
|
||||
import { DefaultValueConverter } from './parser/value-converter.js';
|
||||
import { DefaultLinker } from './references/linker.js';
|
||||
import { DefaultNameProvider } from './references/name-provider.js';
|
||||
import { DefaultReferences } from './references/references.js';
|
||||
import { DefaultScopeComputation } from './references/scope-computation.js';
|
||||
import { DefaultScopeProvider } from './references/scope-provider.js';
|
||||
import { DefaultJsonSerializer } from './serializer/json-serializer.js';
|
||||
import { DefaultServiceRegistry } from './service-registry.js';
|
||||
import { DefaultDocumentValidator } from './validation/document-validator.js';
|
||||
import { ValidationRegistry } from './validation/validation-registry.js';
|
||||
import { DefaultAstNodeDescriptionProvider, DefaultReferenceDescriptionProvider } from './workspace/ast-descriptions.js';
|
||||
import { DefaultAstNodeLocator } from './workspace/ast-node-locator.js';
|
||||
import { DefaultConfigurationProvider } from './workspace/configuration.js';
|
||||
import { DefaultDocumentBuilder } from './workspace/document-builder.js';
|
||||
import { DefaultLangiumDocumentFactory, DefaultLangiumDocuments } from './workspace/documents.js';
|
||||
import { DefaultIndexManager } from './workspace/index-manager.js';
|
||||
import { DefaultWorkspaceManager } from './workspace/workspace-manager.js';
|
||||
import { DefaultLexer, DefaultLexerErrorMessageProvider } from './parser/lexer.js';
|
||||
import { JSDocDocumentationProvider } from './documentation/documentation-provider.js';
|
||||
import { DefaultCommentProvider } from './documentation/comment-provider.js';
|
||||
import { LangiumParserErrorMessageProvider } from './parser/langium-parser.js';
|
||||
import { DefaultAsyncParser } from './parser/async-parser.js';
|
||||
import { DefaultWorkspaceLock } from './workspace/workspace-lock.js';
|
||||
import { DefaultHydrator } from './serializer/hydrator.js';
|
||||
|
||||
/**
|
||||
* Context required for creating the default language-specific dependency injection module.
|
||||
*/
|
||||
export interface DefaultCoreModuleContext {
|
||||
shared: LangiumSharedCoreServices;
|
||||
}
|
||||
|
||||
/**
|
||||
* Creates a dependency injection module configuring the default core services.
|
||||
* This is a set of services that are dedicated to a specific language.
|
||||
*/
|
||||
export function createDefaultCoreModule(context: DefaultCoreModuleContext): Module<LangiumCoreServices, LangiumDefaultCoreServices> {
|
||||
return {
|
||||
documentation: {
|
||||
CommentProvider: (services) => new DefaultCommentProvider(services),
|
||||
DocumentationProvider: (services) => new JSDocDocumentationProvider(services)
|
||||
},
|
||||
parser: {
|
||||
AsyncParser: (services) => new DefaultAsyncParser(services),
|
||||
GrammarConfig: (services) => createGrammarConfig(services),
|
||||
LangiumParser: (services) => createLangiumParser(services),
|
||||
CompletionParser: (services) => createCompletionParser(services),
|
||||
ValueConverter: () => new DefaultValueConverter(),
|
||||
TokenBuilder: () => new DefaultTokenBuilder(),
|
||||
Lexer: (services) => new DefaultLexer(services),
|
||||
ParserErrorMessageProvider: () => new LangiumParserErrorMessageProvider(),
|
||||
LexerErrorMessageProvider: () => new DefaultLexerErrorMessageProvider()
|
||||
},
|
||||
workspace: {
|
||||
AstNodeLocator: () => new DefaultAstNodeLocator(),
|
||||
AstNodeDescriptionProvider: (services) => new DefaultAstNodeDescriptionProvider(services),
|
||||
ReferenceDescriptionProvider: (services) => new DefaultReferenceDescriptionProvider(services)
|
||||
},
|
||||
references: {
|
||||
Linker: (services) => new DefaultLinker(services),
|
||||
NameProvider: () => new DefaultNameProvider(),
|
||||
ScopeProvider: (services) => new DefaultScopeProvider(services),
|
||||
ScopeComputation: (services) => new DefaultScopeComputation(services),
|
||||
References: (services) => new DefaultReferences(services)
|
||||
},
|
||||
serializer: {
|
||||
Hydrator: (services) => new DefaultHydrator(services),
|
||||
JsonSerializer: (services) => new DefaultJsonSerializer(services)
|
||||
},
|
||||
validation: {
|
||||
DocumentValidator: (services) => new DefaultDocumentValidator(services),
|
||||
ValidationRegistry: (services) => new ValidationRegistry(services)
|
||||
},
|
||||
shared: () => context.shared
|
||||
};
|
||||
}
|
||||
|
||||
/**
|
||||
* Context required for creating the default shared dependency injection module.
|
||||
*/
|
||||
export interface DefaultSharedCoreModuleContext {
|
||||
/**
|
||||
* Factory function to create a {@link FileSystemProvider}.
|
||||
*
|
||||
* Langium exposes an `EmptyFileSystem` and `NodeFileSystem`, exported through `langium/node`.
|
||||
* When running Langium as part of a vscode language server or a Node.js app, using the `NodeFileSystem` is recommended,
|
||||
* the `EmptyFileSystem` in every other use case.
|
||||
*/
|
||||
fileSystemProvider: (services: LangiumSharedCoreServices) => FileSystemProvider;
|
||||
}
|
||||
|
||||
/**
|
||||
* Creates a dependency injection module configuring the default shared core services.
|
||||
* This is the set of services that are shared between multiple languages.
|
||||
*/
|
||||
export function createDefaultSharedCoreModule(context: DefaultSharedCoreModuleContext): Module<LangiumSharedCoreServices, LangiumDefaultSharedCoreServices> {
|
||||
return {
|
||||
ServiceRegistry: (services) => new DefaultServiceRegistry(services),
|
||||
workspace: {
|
||||
LangiumDocuments: (services) => new DefaultLangiumDocuments(services),
|
||||
LangiumDocumentFactory: (services) => new DefaultLangiumDocumentFactory(services),
|
||||
DocumentBuilder: (services) => new DefaultDocumentBuilder(services),
|
||||
IndexManager: (services) => new DefaultIndexManager(services),
|
||||
WorkspaceManager: (services) => new DefaultWorkspaceManager(services),
|
||||
FileSystemProvider: (services) => context.fileSystemProvider(services),
|
||||
WorkspaceLock: () => new DefaultWorkspaceLock(),
|
||||
ConfigurationProvider: (services) => new DefaultConfigurationProvider(services),
|
||||
},
|
||||
profilers: {}
|
||||
};
|
||||
}
|
||||
Reference in New Issue
Block a user