UNPKG

zenstack

Version:

FullStack enhancement for Prisma ORM: seamless integration from database to UI

104 lines 5.66 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); exports.ZModelModule = void 0; exports.createSharedModule = createSharedModule; exports.createZModelServices = createZModelServices; const module_1 = require("@zenstackhq/language/module"); const langium_1 = require("langium"); const vscode_languageserver_1 = require("vscode-languageserver"); const vscode_languageserver_textdocument_1 = require("vscode-languageserver-textdocument"); const zmodel_validator_1 = require("./validator/zmodel-validator"); const zmodel_code_action_1 = require("./zmodel-code-action"); const zmodel_completion_provider_1 = require("./zmodel-completion-provider"); const zmodel_definition_1 = require("./zmodel-definition"); const zmodel_documentation_provider_1 = require("./zmodel-documentation-provider"); const zmodel_formatter_1 = require("./zmodel-formatter"); const zmodel_highlight_1 = require("./zmodel-highlight"); const zmodel_hover_1 = require("./zmodel-hover"); const zmodel_linker_1 = require("./zmodel-linker"); const zmodel_scope_1 = require("./zmodel-scope"); const zmodel_semantic_1 = require("./zmodel-semantic"); const zmodel_workspace_manager_1 = require("./zmodel-workspace-manager"); /** * Dependency injection module that overrides Langium default services and contributes the * declared custom services. The Langium defaults can be partially specified to override only * selected services, while the custom services must be fully specified. */ exports.ZModelModule = { references: { ScopeComputation: (services) => new zmodel_scope_1.ZModelScopeComputation(services), Linker: (services) => new zmodel_linker_1.ZModelLinker(services), ScopeProvider: (services) => new zmodel_scope_1.ZModelScopeProvider(services), }, validation: { ValidationRegistry: (services) => new zmodel_validator_1.ZModelValidationRegistry(services), ZModelValidator: (services) => new zmodel_validator_1.ZModelValidator(services), }, lsp: { Formatter: (services) => new zmodel_formatter_1.ZModelFormatter(services), CodeActionProvider: (services) => new zmodel_code_action_1.ZModelCodeActionProvider(services), DefinitionProvider: (services) => new zmodel_definition_1.ZModelDefinitionProvider(services), SemanticTokenProvider: (services) => new zmodel_semantic_1.ZModelSemanticTokenProvider(services), CompletionProvider: (services) => new zmodel_completion_provider_1.ZModelCompletionProvider(services), HoverProvider: (services) => new zmodel_hover_1.ZModelHoverProvider(services), DocumentHighlightProvider: (services) => new zmodel_highlight_1.ZModelHighlightProvider(services), }, parser: { GrammarConfig: (services) => createGrammarConfig(services), }, documentation: { DocumentationProvider: (services) => new zmodel_documentation_provider_1.ZModelDocumentationProvider(services), }, }; // this duplicates createDefaultSharedModule except that a custom WorkspaceManager is used // TODO: avoid this duplication function createSharedModule(context) { return { ServiceRegistry: () => new langium_1.DefaultServiceRegistry(), lsp: { Connection: () => context.connection, LanguageServer: (services) => new langium_1.DefaultLanguageServer(services), WorkspaceSymbolProvider: (services) => new langium_1.DefaultWorkspaceSymbolProvider(services), NodeKindProvider: () => new langium_1.DefaultNodeKindProvider(), FuzzyMatcher: () => new langium_1.DefaultFuzzyMatcher(), }, workspace: { LangiumDocuments: (services) => new langium_1.DefaultLangiumDocuments(services), LangiumDocumentFactory: (services) => new langium_1.DefaultLangiumDocumentFactory(services), DocumentBuilder: (services) => new langium_1.DefaultDocumentBuilder(services), TextDocuments: () => new vscode_languageserver_1.TextDocuments(vscode_languageserver_textdocument_1.TextDocument), IndexManager: (services) => new langium_1.DefaultIndexManager(services), WorkspaceManager: (services) => new zmodel_workspace_manager_1.ZModelWorkspaceManager(services), FileSystemProvider: (services) => context.fileSystemProvider(services), MutexLock: () => new langium_1.MutexLock(), ConfigurationProvider: (services) => new langium_1.DefaultConfigurationProvider(services), }, }; } /** * Create the full set of services required by Langium. * * First inject the shared services by merging two modules: * - Langium default shared services * - Services generated by langium-cli * * Then inject the language-specific services by merging three modules: * - Langium default language-specific services * - Services generated by langium-cli * - Services specified in this file * * @param context Optional module context with the LSP connection * @returns An object wrapping the shared services and the language-specific services */ function createZModelServices(context) { const shared = (0, langium_1.inject)(createSharedModule(context), module_1.ZModelGeneratedSharedModule); const ZModel = (0, langium_1.inject)((0, langium_1.createDefaultModule)({ shared }), module_1.ZModelGeneratedModule, exports.ZModelModule); shared.ServiceRegistry.register(ZModel); return { shared, ZModel }; } function createGrammarConfig(services) { const config = (0, langium_1.createGrammarConfig)(services); config.nameRegexp = /^[@\w\p{L}]$/u; return config; } //# sourceMappingURL=zmodel-module.js.map