@likec4/language-server 1.54.0 → 1.55.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/_chunks/LikeC4FileSystem.mjs +2 -2
- package/dist/_chunks/module.d.mts +13 -42
- package/dist/_chunks/module.mjs +20 -20
- package/dist/_chunks/utils.mjs +1 -1
- package/dist/browser/index.d.mts +2 -2
- package/dist/browser/index.mjs +1 -1
- package/dist/browser/worker.mjs +1 -1
- package/dist/filesystem/index.d.mts +1 -1
- package/dist/filesystem/index.mjs +1 -1
- package/dist/index.d.mts +2 -2
- package/dist/index.mjs +1 -1
- package/dist/module.d.mts +2 -2
- package/dist/module.mjs +1 -1
- package/package.json +15 -27
- package/src/test/index.ts +1 -0
- package/src/test/testServices.ts +258 -0
- package/dist/_chunks/mcp.mjs +0 -1154
- package/dist/_chunks/noop.mjs +0 -1
- package/dist/_chunks/noop2.mjs +0 -1
- package/dist/mcp/index.d.mts +0 -3
- package/dist/mcp/index.mjs +0 -1
- package/mcp/package.json +0 -4
|
@@ -1,3 +1,3 @@
|
|
|
1
|
-
import{t as e}from"./icons.mjs";import{isLikeC4Builtin as t}from"../likec4lib.mjs";import{
|
|
1
|
+
import{t as e}from"./icons.mjs";import{isLikeC4Builtin as t}from"../likec4lib.mjs";import{c as n,ci as r,n as i,o as a,oi as o,s}from"./utils.mjs";import{isLikeC4Config as c,loadConfig as l}from"@likec4/config/node";import{fdir as u}from"fdir";import{SimpleCache as d,URI as f,UriUtils as p}from"langium";import{NodeFileSystemProvider as m}from"langium/node";import{mkdirSync as h,statSync as g}from"node:fs";import{unlink as _,writeFile as v}from"node:fs/promises";import{basename as y,dirname as b}from"node:path";import{objectHash as x,onNextTick as S}from"@likec4/core/utils";import C from"chokidar";import w from"p-queue";import{exact as T}from"@likec4/core";import E from"json5";import D from"p-limit";import{indexBy as O,prop as k}from"remeda";import{Position as A,Range as j}from"vscode-languageserver-types";const M=o.getChild(`manual-layouts`),N=`.likec4.snap`,isManualLayoutFile=e=>e.endsWith(N);function fileName(e){return`${e}${N}`}function viewIdFromURI(e){let t=p.basename(e);return isManualLayoutFile(t)?t.slice(0,-12):null}function getManualLayoutsOutDir(e){return p.resolvePath(e.folderUri,e.config.manualLayouts?.outDir??`.likec4`)}const P={manualLayouts:e=>new DefaultLikeC4ManualLayouts(e)},F=`file://./`;var DefaultLikeC4ManualLayouts=class{cache;listeners=[];#e=D(1);constructor(e){this.services=e,this.cache=new d,S(()=>{e.workspace.ProjectsManager.onProjectsUpdate(()=>{this.clearCaches()})})}async handleFileSystemUpdate(e){let t=e.update??e.delete,n=viewIdFromURI(t)??void 0,r=this.services.workspace.ProjectsManager.ownerProjectId(t);if(this.cache.delete(r),`delete`in e){this.triggerUpdate(T({removed:t,projectId:r,viewId:n}));return}let i=this.services.workspace.ProjectsManager.getProject(r);if(!n){let e=await this.readSnapshot(t,i);e?n=e.id:(M.error(`File ${t} does not exist or is not a valid manual layout file`),n=`index`)}this.triggerUpdate({updated:t,projectId:r,viewId:n})}onManualLayoutUpdate(e){return this.listeners.push(e),{dispose:()=>{let t=this.listeners.indexOf(e);t!==-1&&this.listeners.splice(t,1)}}}async readManualLayouts(e){let t=M.getChild(e.id),n=this.services.workspace.FileSystemProvider,r=getManualLayoutsOutDir(e),i=[];try{let a=await n.scanDirectory(r,isManualLayoutFile);if(a.length===0)return null;for(let r of a)try{let t=await n.readFile(r.uri),a=E.parse(t),o=this.resolveIconPathsAfterRead(a,e.folderUri);i.push({...o,_layout:`manual`})}catch(e){t.warn(`Failed to read view snapshot ${r.uri.fsPath}`,{err:e})}i.length&&t.trace`read manual layouts for ${e.id}, found ${i.length}`}catch(n){t.warn(`Failed to read manual layouts for ${e.folderUri.fsPath}`,{err:n})}if(i.length===0)return null;let a=O(i,k(`id`));return{hash:x(a),views:a}}async readSnapshot(e,t){let n=this.services.workspace.FileSystemProvider;try{let r=await n.readFile(e),i=E.parse(r);if(!t){let n=this.services.workspace.ProjectsManager.ownerProjectId(e);t=this.services.workspace.ProjectsManager.getProject(n)}return{...this.resolveIconPathsAfterRead(i,t.folderUri),_layout:`manual`}}catch(t){return M.warn(`Failed to read view snapshot ${e.fsPath}`,{err:t}),null}}async read(e){return await this.#e(async()=>{let t=this.cache.get(e.id);if(t!==void 0)return t;let n=await this.readManualLayouts(e);return this.cache.set(e.id,n),n})}async write(e,t){this.cache.delete(e.id);let n=M.getChild(e.id),r=getManualLayoutsOutDir(e),i=p.joinPath(r,fileName(t.id));if(`manualLayout`in t){let{manualLayout:e,...n}=t;t=n}let a=E.stringify(this.normalizeIconPathsForWrite(t,e.folderUri),{space:2,quote:`'`}),o={uri:i.toString(),range:j.create(A.create(0,0),A.create(a.split(`
|
|
2
2
|
`).length-1,1))};n.debug`write snapshot of ${t.id} in project ${e.id} to ${i.fsPath}`;let s=this.services.workspace.FileSystemProvider;try{await s.writeFile(i,a+`
|
|
3
|
-
`),this.triggerUpdate({updated:i,projectId:e.id,viewId:t.id})}catch(e){n.warn(`Failed to write snapshot ${t.id} to ${i.fsPath}`,{err:e})}return o}async remove(e,t){this.cache.delete(e.id);let n=M.getChild(e.id),r=getManualLayoutsOutDir(e),i=p.joinPath(r,fileName(t));n.debug`delete snapshot of ${t} in project ${e.id}. File: ${i.fsPath}`;let a={uri:i.toString(),range:j.create(0,0,0,0)};try{if(!await this.services.workspace.FileSystemProvider.deleteFile(i))return n.warn`Snapshot ${t} did not exist at ${i.fsPath}`,null;this.triggerUpdate({removed:i,projectId:e.id,viewId:t})}catch(e){n.warn(`Failed to delete snapshot ${t} from ${i.fsPath}`,{err:e})}return a}clearCaches(){M.trace`clear caches`,this.cache.clear()}triggerUpdate(e){for(let t of this.listeners)i(()=>t(e))}normalizeIconPathsForWrite(e,t){let n=e.nodes.map(e=>{if(!e.icon||typeof e.icon!=`string`)return e;if(e.icon.startsWith(`file://`)){let n=f.parse(e.icon),r=p.relative(t,n);return r.startsWith(`..`)?e:{...e,icon:`${F}${r}`}}return e});return{...e,nodes:n}}resolveIconPathsAfterRead(e,t){let n=e.nodes.map(e=>{if(!e.icon||typeof e.icon!=`string`)return e;if(e.icon.startsWith(F)){let n=e.icon.substring(9),r=p.joinPath(t,n);return{...e,icon:r.toString()}}return e});return{...e,nodes:n}}};const I=o.getChild(`chokidar`),L={fileSystemWatcher:e=>new ChokidarFileSystemWatcher(e)},isAnyLikeC4File=e=>{let t=y(e);return
|
|
3
|
+
`),this.triggerUpdate({updated:i,projectId:e.id,viewId:t.id})}catch(e){n.warn(`Failed to write snapshot ${t.id} to ${i.fsPath}`,{err:e})}return o}async remove(e,t){this.cache.delete(e.id);let n=M.getChild(e.id),r=getManualLayoutsOutDir(e),i=p.joinPath(r,fileName(t));n.debug`delete snapshot of ${t} in project ${e.id}. File: ${i.fsPath}`;let a={uri:i.toString(),range:j.create(0,0,0,0)};try{if(!await this.services.workspace.FileSystemProvider.deleteFile(i))return n.warn`Snapshot ${t} did not exist at ${i.fsPath}`,null;this.triggerUpdate({removed:i,projectId:e.id,viewId:t})}catch(e){n.warn(`Failed to delete snapshot ${t} from ${i.fsPath}`,{err:e})}return a}clearCaches(){M.trace`clear caches`,this.cache.clear()}triggerUpdate(e){for(let t of this.listeners)i(()=>t(e))}normalizeIconPathsForWrite(e,t){let n=e.nodes.map(e=>{if(!e.icon||typeof e.icon!=`string`)return e;if(e.icon.startsWith(`file://`)){let n=f.parse(e.icon),r=p.relative(t,n);return r.startsWith(`..`)?e:{...e,icon:`${F}${r}`}}return e});return{...e,nodes:n}}resolveIconPathsAfterRead(e,t){let n=e.nodes.map(e=>{if(!e.icon||typeof e.icon!=`string`)return e;if(e.icon.startsWith(F)){let n=e.icon.substring(9),r=p.joinPath(t,n);return{...e,icon:r.toString()}}return e});return{...e,nodes:n}}};const I=o.getChild(`chokidar`),L={fileSystemWatcher:e=>new ChokidarFileSystemWatcher(e)},isAnyLikeC4File=e=>{let t=y(e);return n(t)||c(t)||isManualLayoutFile(t)};var ChokidarFileSystemWatcher=class{watcher;queue=new w({concurrency:1,timeout:5e3});constructor(e){this.services=e}watch(e){if(this.watcher){I.debug`add watching folder: ${e}`,this.watcher.add(e);return}this.watcher=this.createWatcher(e)}async dispose(){if(this.watcher){let e=this.watcher;this.watcher=void 0,await e.close()}}createWatcher(e){I.debug`create watcher for folder: ${e}`;let t=C.watch(e,{ignored:[e=>e.includes(`node_modules`)||e.includes(`.git`),(e,t)=>!!t?.isFile()&&!isAnyLikeC4File(e)],followSymlinks:!0,ignoreInitial:!0}),onAddOrChange=(e,t)=>{t?.isDirectory()||this.enqueueFileOp(`addOrChange: `+e,async()=>{await this.onAddOrChange(e)})};return t.on(`add`,onAddOrChange).on(`change`,onAddOrChange).on(`unlink`,(e,t)=>{t?.isDirectory()||this.enqueueFileOp(`remove: `+e,async()=>{await this.onRemove(e)})}).on(`unlinkDir`,e=>{this.enqueueFileOp(`removeDir: `+e,async()=>{await this.onRemoveDir(e)})}),t}enqueueFileOp(e,t){this.queue.add(async()=>{try{await t()}catch(t){I.warn(`Failed on {fileop}`,{fileop:e,error:t})}}).catch(t=>{I.error(`Error on {fileop}`,{fileop:e,error:t})})}async onAddOrChange(e){let t=this.services.workspace,r=y(e),i=f.file(e);switch(!0){case c(r):I.debug`project file changed: ${e}`,t.ManualLayouts.clearCaches(),await t.ProjectsManager.registerConfigFile(i);break;case n(r):I.debug`file changed: ${e}`,await t.DocumentBuilder.update([i],[]);break;case isManualLayoutFile(r):I.debug`manual layout file changed: ${e}`,t.ManualLayouts.clearCaches(),await t.ManualLayouts.handleFileSystemUpdate({update:i});break;default:I.warn`Unknown file change: ${e}`}}async onRemove(e){let t=this.services.workspace,r=y(e),i=f.file(e);switch(!0){case c(r):I.debug`project file removed: ${e}`,t.ManualLayouts.clearCaches(),await t.ProjectsManager.reloadProjects();break;case n(r):I.debug`file removed: ${e}`,await t.DocumentBuilder.update([],[i]);break;case isManualLayoutFile(r):I.debug`manual layout file removed: ${e}`,await t.ManualLayouts.handleFileSystemUpdate({delete:i});break;default:I.warn`Unknown file removal: ${e}`}}async onRemoveDir(e){I.debug`directory removed: ${e}`;let t=this.services.workspace;t.ProjectsManager.findOverlaped(e).length>0&&(t.ManualLayouts.clearCaches(),await t.ProjectsManager.reloadProjects())}};const R=o.getChild(`filesystem`);function isLikeC4ConfigFile(e,t=!1){return!t&&c(y(e))}function isLikeC4File(e,t=!1){return!t&&n(y(e))}const WithFileSystem=(e=!0)=>({fileSystemProvider:()=>new SymLinkTraversingFileSystemProvider,...e?L:r});var SymLinkTraversingFileSystemProvider=class extends m{async readFile(n){if(t(n))return Promise.resolve(e);try{return await super.readFile(n)}catch(e){return R.warn(`Failed to read file ${n.fsPath}`,{error:e}),``}}async readDirectory(e,t){let n=t?.recursive??!0,r=t?.maxDepth??1/0,i=[];try{let t=new u().withSymlinks({resolvePaths:!1}).exclude(s).withFullPaths().filter(isLikeC4File);n?r!==1/0&&(t=t.withMaxDepth(r)):t=t.withMaxDepth(1);let a=await t.crawl(e.fsPath).withPromise();for(let e of a)i.push({isFile:!0,isDirectory:!1,uri:f.file(e)})}catch(t){R.warn(`Failed to read directory ${e.fsPath}`,{error:t})}return i.sort(a)}async scanProjectFiles(e){return await this.scanDirectory(e,isLikeC4ConfigFile)}async scanDirectory(e,t){let n=[];try{let r=await new u().withSymlinks({resolvePaths:!1}).exclude(s).withFullPaths().filter(t).crawl(e.fsPath).withPromise();for(let e of r)n.push({isFile:!0,isDirectory:!1,uri:f.file(e)})}catch(t){R.warn(`Failed to scan directory {path}`,{path:e.fsPath,error:t})}return n}async loadProjectConfig(e){return await l(e)}async writeFile(e,t){let n=b(e.fsPath),r=g(n,{throwIfNoEntry:!1});if(r?.isFile())throw Error(`Cannot create directory ${n} because a file with the same name exists.`);return r||(R.debug(`creating directory {path}`,{path:n}),h(n,{recursive:!0})),R.debug(`writing file {path}`,{path:e.fsPath}),await v(e.fsPath,t,{encoding:`utf-8`})}async deleteFile(e){try{let t=e.fsPath,n=g(t,{throwIfNoEntry:!1});return n?.isFile()||n?.isSymbolicLink()?(await _(t),R.debug(`deleted file {path}`,{path:t}),!0):(R.warn(`deleteFile failed: {path} does not exist, or is not a file`,{path:t}),!1)}catch(t){R.warn(`Failed to delete file ${e.fsPath}`,{error:t})}return!1}};export{L as n,P as r,WithFileSystem as t};
|
|
@@ -16,10 +16,8 @@ import { CancellationToken, CodeLens, CodeLensParams, Connection, DocumentHighli
|
|
|
16
16
|
import { CodeAction, CodeActionParams, Command } from "vscode-languageserver-protocol";
|
|
17
17
|
import { Fqn as Fqn$1, GuardedBy, LayoutedView as LayoutedView$1, ProjectId as ProjectId$1, ViewId as ViewId$1 } from "@likec4/core/types";
|
|
18
18
|
import { CancellationToken as CancellationToken$1 } from "vscode-jsonrpc";
|
|
19
|
-
import { McpServer } from "@modelcontextprotocol/sdk/server/mcp.js";
|
|
20
19
|
import * as type_fest0 from "type-fest";
|
|
21
20
|
import { ConditionalPick, MergeExclusive, Simplify, Tagged, ValueOf, Writable } from "type-fest";
|
|
22
|
-
import { ServerOptions } from "@modelcontextprotocol/sdk/server/index.js";
|
|
23
21
|
|
|
24
22
|
//#region src/documentation/documentation-provider.d.ts
|
|
25
23
|
/**
|
|
@@ -93,6 +91,11 @@ declare class ProjectsManager {
|
|
|
93
91
|
*/
|
|
94
92
|
static readonly DefaultProjectId: ProjectId$1;
|
|
95
93
|
constructor(services: LikeC4SharedServices);
|
|
94
|
+
/**
|
|
95
|
+
* Updates the workspace-level exclude patterns from VS Code settings.
|
|
96
|
+
* Called during initial server startup; dynamic changes restart the server.
|
|
97
|
+
*/
|
|
98
|
+
setWorkspaceExcludePatterns(patterns: string[] | undefined): void;
|
|
96
99
|
/**
|
|
97
100
|
* Returns:
|
|
98
101
|
* - configured default project ID if set
|
|
@@ -343,22 +346,6 @@ declare class LikeC4Formatter extends AbstractFormatter {
|
|
|
343
346
|
private onConfigurationUpdate;
|
|
344
347
|
}
|
|
345
348
|
//#endregion
|
|
346
|
-
//#region src/mcp/types.d.ts
|
|
347
|
-
interface LikeC4MCPServer {
|
|
348
|
-
readonly mcp: McpServer;
|
|
349
|
-
readonly isStarted: boolean;
|
|
350
|
-
readonly port: number;
|
|
351
|
-
start(port?: number): Promise<void>;
|
|
352
|
-
stop(): Promise<void>;
|
|
353
|
-
}
|
|
354
|
-
interface LikeC4MCPServerFactory {
|
|
355
|
-
create(options?: ServerOptions): McpServer;
|
|
356
|
-
}
|
|
357
|
-
interface LikeC4MCPServerModuleContext {
|
|
358
|
-
mcpServer: (services: LikeC4Services) => LikeC4MCPServer;
|
|
359
|
-
mcpServerFactory: (services: LikeC4Services) => LikeC4MCPServerFactory;
|
|
360
|
-
}
|
|
361
|
-
//#endregion
|
|
362
349
|
//#region src/generated/ast.d.ts
|
|
363
350
|
type AnyProperty = DynamicViewProperty | ElementProperty | NavigateToProperty | NotationProperty | NotesProperty | RelationProperty | RelationshipStyleProperty | StringProperty | StyleProperty | ViewProperty;
|
|
364
351
|
declare const AnyProperty = "AnyProperty";
|
|
@@ -399,7 +386,7 @@ type FqnReferenceable = Element | ExtendDeployment | ExtendElement | Referenceab
|
|
|
399
386
|
declare const FqnReferenceable = "FqnReferenceable";
|
|
400
387
|
type IconId = string;
|
|
401
388
|
type IconPositionValue = 'bottom' | 'left' | 'right' | 'top';
|
|
402
|
-
type Id = 'deployment' | 'element' | 'group' | 'instance' | 'model' | 'node' | ArrowType | DynamicViewDisplayVariantValue | ElementShape | IconPositionValue | LineOptions | Participant | RankValue | SizeValue | ThemeColor | string;
|
|
389
|
+
type Id = 'deployment' | 'element' | 'group' | 'instance' | 'model' | 'node' | 'relationship' | ArrowType | DynamicViewDisplayVariantValue | ElementShape | IconPositionValue | LineOptions | Participant | RankValue | SizeValue | ThemeColor | string;
|
|
403
390
|
type LikeC4View = DeploymentView | DynamicView | ElementView;
|
|
404
391
|
declare const LikeC4View = "LikeC4View";
|
|
405
392
|
type LineOptions = 'dashed' | 'dotted' | 'solid';
|
|
@@ -1894,6 +1881,11 @@ declare class LikeC4WorkspaceManager extends DefaultWorkspaceManager {
|
|
|
1894
1881
|
* First load all project config files, then load all documents in the workspace.
|
|
1895
1882
|
*/
|
|
1896
1883
|
protected performStartup(folders: WorkspaceFolder[]): Promise<LangiumDocument[]>;
|
|
1884
|
+
/**
|
|
1885
|
+
* Read workspace exclude patterns from configuration before workspace scan.
|
|
1886
|
+
* Uses a timeout fallback for third-party IDEs that may not support workspace/configuration.
|
|
1887
|
+
*/
|
|
1888
|
+
private readExcludeConfig;
|
|
1897
1889
|
/**
|
|
1898
1890
|
* Load all additional documents that shall be visible in the context of the given workspace
|
|
1899
1891
|
* folders and add them to the collector. This can be used to include built-in libraries of
|
|
@@ -2221,14 +2213,6 @@ declare class LikeC4ModelLocator {
|
|
|
2221
2213
|
}): Location | null;
|
|
2222
2214
|
}
|
|
2223
2215
|
//#endregion
|
|
2224
|
-
//#region src/mcp/noop.d.ts
|
|
2225
|
-
declare const NoMCPServer: LikeC4MCPServerModuleContext;
|
|
2226
|
-
//#endregion
|
|
2227
|
-
//#region src/mcp/server/WithMCPServer.d.ts
|
|
2228
|
-
declare function WithMCPServer(type?: 'stdio' | 'sse' | {
|
|
2229
|
-
port: number;
|
|
2230
|
-
}): LikeC4MCPServerModuleContext;
|
|
2231
|
-
//#endregion
|
|
2232
2216
|
//#region src/views/LikeC4Views.d.ts
|
|
2233
2217
|
type GraphvizOut = {
|
|
2234
2218
|
readonly dot: string;
|
|
@@ -2359,13 +2343,6 @@ interface StartLanguageServerOptions {
|
|
|
2359
2343
|
* @default true
|
|
2360
2344
|
*/
|
|
2361
2345
|
enableWatcher?: boolean;
|
|
2362
|
-
/**
|
|
2363
|
-
* Whether to enable the MCP server.
|
|
2364
|
-
* @default 'sse'
|
|
2365
|
-
*/
|
|
2366
|
-
enableMCP?: false | 'stdio' | 'sse' | {
|
|
2367
|
-
port: number;
|
|
2368
|
-
};
|
|
2369
2346
|
/**
|
|
2370
2347
|
* Whether to enable manual layouts, stored in json5 files.
|
|
2371
2348
|
* @default true
|
|
@@ -3141,7 +3118,6 @@ interface LikeC4LanguageServices {
|
|
|
3141
3118
|
readonly workspaceUri: URI;
|
|
3142
3119
|
readonly projectsManager: ProjectsManager;
|
|
3143
3120
|
readonly editor: LikeC4ModelChanges;
|
|
3144
|
-
readonly mcpServer: LikeC4MCPServer | null;
|
|
3145
3121
|
/**
|
|
3146
3122
|
* Returns all projects with relevant documents
|
|
3147
3123
|
*/
|
|
@@ -3417,10 +3393,6 @@ interface LikeC4AddedServices {
|
|
|
3417
3393
|
DocumentValidator: LikeC4DocumentValidator;
|
|
3418
3394
|
};
|
|
3419
3395
|
Rpc: Rpc;
|
|
3420
|
-
mcp: {
|
|
3421
|
-
Server: LikeC4MCPServer;
|
|
3422
|
-
ServerFactory: LikeC4MCPServerFactory;
|
|
3423
|
-
};
|
|
3424
3396
|
likec4: {
|
|
3425
3397
|
LanguageServices: LikeC4LanguageServices;
|
|
3426
3398
|
Views: LikeC4Views;
|
|
@@ -3456,7 +3428,7 @@ interface LikeC4AddedServices {
|
|
|
3456
3428
|
};
|
|
3457
3429
|
}
|
|
3458
3430
|
type LikeC4Services = LangiumServices & LikeC4AddedServices;
|
|
3459
|
-
type LikeC4ServicesContext =
|
|
3431
|
+
type LikeC4ServicesContext = LikeC4ViewsModuleContext;
|
|
3460
3432
|
/**
|
|
3461
3433
|
* Most probably you don't need to use this function directly.
|
|
3462
3434
|
* Use {@link createLanguageServices} instead.
|
|
@@ -3471,7 +3443,6 @@ type LanguageServicesContext = LikeC4SharedModuleContext & LikeC4ServicesContext
|
|
|
3471
3443
|
* const { shared, likec4 } = createLanguageServices({
|
|
3472
3444
|
* ...WithFileSystem(enableWatcher = true),
|
|
3473
3445
|
* ...WithLikeC4ManualLayouts(),
|
|
3474
|
-
* ...NoMcpServer(),
|
|
3475
3446
|
* });
|
|
3476
3447
|
* ```
|
|
3477
3448
|
*
|
|
@@ -3509,4 +3480,4 @@ declare function createLanguageServices<I1, I2, I3, I extends I1 & I2 & I3 & Lik
|
|
|
3509
3480
|
*/
|
|
3510
3481
|
declare function createSharedServices(context?: Partial<LanguageServicesContext>): LikeC4SharedServices;
|
|
3511
3482
|
//#endregion
|
|
3512
|
-
export {
|
|
3483
|
+
export { NoFileSystem as A, ManualLayoutsSnapshot as B, LikeC4ModelBuilder as C, WithLikeC4ManualLayouts as D, LangiumDocuments as E, FileSystemProvider$1 as F, ProjectData as H, FileSystemWatcher as I, FileSystemWatcherModuleContext as L, NoLikeC4ManualLayouts as M, FileNode as N, WithChokidarWatcher as O, FileSystemModuleContext as P, LikeC4ManualLayouts as R, ViewLocateResult as S, LikeC4WorkspaceManager as T, ProjectsManager as U, Project as V, LikeC4ViewsModuleContext as _, LikeC4SharedModuleContext as a, LikeC4Views as b, createLikeC4Module as c, LikeC4LanguageServices as d, DocumentParser as f, configureLanguageServerLogger as g, ConfigureLanguageServerLoggerOptions as h, LikeC4ServicesContext as i, NoFileSystemWatcher as j, WithFileSystem as k, createSharedServices as l, startLanguageServer$1 as m, LikeC4AddedServices as n, LikeC4SharedServices as o, LikeC4ModelParser as p, LikeC4Services as r, createLanguageServices as s, LanguageServicesContext as t, FormatOptions as u, WithGraphviz as v, FqnIndex as w, LikeC4ModelLocator as x, WithWasmGraphviz as y, LikeC4ManualLayoutsModuleContext as z };
|