@likec4/language-server 1.49.0 → 1.50.0

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.
Files changed (41) hide show
  1. package/dist/_chunks/ConfigurableLayouter.mjs +1 -1
  2. package/dist/_chunks/LikeC4FileSystem.mjs +3 -3
  3. package/dist/_chunks/WithMCPServer.mjs +686 -13
  4. package/dist/_chunks/common-exports.mjs +0 -0
  5. package/dist/_chunks/libs/@msgpack/msgpack.mjs +1 -1
  6. package/dist/_chunks/libs/eventemitter3.mjs +1 -1
  7. package/dist/_chunks/libs/fast-equals.mjs +1 -1
  8. package/dist/_chunks/libs/p-queue.mjs +1 -1
  9. package/dist/_chunks/libs/picomatch.mjs +1 -1
  10. package/dist/_chunks/libs/pretty-ms.mjs +1 -1
  11. package/dist/_chunks/libs/remeda.mjs +2 -1
  12. package/dist/_chunks/libs/ufo.mjs +1 -1
  13. package/dist/_chunks/likec4lib.mjs +2 -0
  14. package/dist/_chunks/{index.d.mts → module.d.mts} +247 -7
  15. package/dist/_chunks/module.mjs +34 -0
  16. package/dist/_chunks/noop.mjs +1 -0
  17. package/dist/_chunks/protocol.d.mts +315 -0
  18. package/dist/_chunks/rolldown-runtime.mjs +1 -1
  19. package/dist/_chunks/utils.mjs +1 -1
  20. package/dist/_chunks/workspace.mjs +1 -0
  21. package/dist/browser/index.d.mts +7 -2
  22. package/dist/browser/index.mjs +1 -1
  23. package/dist/browser/worker.mjs +1 -1
  24. package/dist/bundled.d.mts +2 -2
  25. package/dist/bundled.mjs +1 -1
  26. package/dist/filesystem/index.d.mts +3 -2
  27. package/dist/filesystem/index.mjs +1 -1
  28. package/dist/index.d.mts +2 -38
  29. package/dist/index.mjs +1 -1
  30. package/dist/likec4lib.mjs +1 -1
  31. package/dist/mcp/index.d.mts +3 -2
  32. package/dist/mcp/index.mjs +1 -1
  33. package/dist/module.d.mts +2 -125
  34. package/dist/module.mjs +1 -1
  35. package/dist/protocol.d.mts +1 -314
  36. package/dist/protocol.mjs +1 -1
  37. package/package.json +15 -15
  38. package/dist/_chunks/LikeC4Views.mjs +0 -34
  39. package/dist/_chunks/ProjectsManager.mjs +0 -1
  40. package/dist/_chunks/icons.mjs +0 -2
  41. package/dist/_chunks/logger.mjs +0 -1
@@ -0,0 +1 @@
1
+ import{n as e}from"./rolldown-runtime.mjs";import{a as t,i as n,n as r,r as i}from"./likec4lib.mjs";import{B as a,Bt as o,Ct as s,Er as c,I as ee,J as te,N as ne,Tr as l,Tt as re,U as ie,X as ae,at as oe,cn as u,en as se,ln as ce,mt as le,n as ue,nr as de,nt as d,o as fe,sn as pe,ut as me,yt as f}from"./utils.mjs";import{B as p,I as m,S as h,U as g,V as he,b as _,g as ge,i as _e,k as ve,n as ye,o as v,p as y,z as b}from"./libs/remeda.mjs";import{t as x}from"./libs/picomatch.mjs";import{a as S,d as C,i as w,o as T,r as E,s as D,t as O,u as k}from"./libs/ufo.mjs";import{AstUtils as A,DefaultAstNodeDescriptionProvider as j,DefaultIndexManager as M,DefaultLangiumDocuments as N,DefaultWorkspaceManager as P,Disposable as F,URI as I,UriUtils as L,isOperationCancelled as R,stream as z}from"langium";import{DefaultMap as B,compareNaturalHierarchically as V,invariant as H,isString as U,nonNullable as W,nonexhaustive as G}from"@likec4/core/utils";import{loggable as K,wrapError as be}from"@likec4/log";import{invariant as q}from"@likec4/core";import{LikeC4ProjectConfigOps as J}from"@likec4/config";import{URI as Y}from"vscode-uri";const X=Symbol.for(`idattr`),xe={writeId(e,t){return e[X]=t,e},readId(e){return e[X]}},Se={writeId(e,t){return _(t)?e[X]=void 0:e[X]=t,e},readId(e){return e[X]}};function isLikeC4LangiumDocument(e){return e?.textDocument.languageId===fe.languageId}function parseMarkdownAsString(e){return e?.markdown||e?.text}function parseAstPercent(e){let t=parseFloat(e);return isNaN(t)?100:he(t,{min:0,max:100})}function parseAstOpacityProperty({value:e}){return parseAstPercent(e)}function parseAstSizeValue({value:e}){switch(e){case`xs`:case`sm`:case`md`:case`lg`:case`xl`:return e;case`xsmall`:return`xs`;case`small`:return`sm`;case`medium`:return`md`;case`large`:return`lg`;case`xlarge`:return`xl`;default:G(e)}}function parseAstIconPositionValue({value:e}){switch(e){case`left`:case`right`:case`top`:case`bottom`:return e;default:G(e)}}function toRelationshipStyle(e,t){let n={};if(!e||e.length===0)return n;for(let r of e)if(t(r))switch(!0){case ee(r):{let e=toColor(r);ge(e)&&(n.color=e);break}case se(r):n.line=r.value;break;case ne(r):switch(r.key){case`head`:n.head=r.value;break;case`tail`:n.tail=r.value;break;default:G(r)}break;default:G(r)}return n}function toColor(e){return e?.themeColor??e?.customColor?.$refText}function toAutoLayout(e){let t=e.rankSep,n=e.nodeSep,r;switch(e.direction){case`TopBottom`:r=`TB`;break;case`BottomTop`:r=`BT`;break;case`LeftRight`:r=`LR`;break;case`RightLeft`:r=`RL`;break;default:G(e.direction)}return{direction:r,...n&&{nodeSep:n},...t&&{rankSep:t}}}function toAstViewLayoutDirection(e){switch(e){case`TB`:return`TopBottom`;case`BT`:return`BottomTop`;case`LR`:return`LeftRight`;case`RL`:return`RightLeft`;default:G(e)}}function getViewRulePredicateContainer(e){return A.getContainerOfType(e,e=>de(e)||ae(e)||oe(e))}const _isModel=e=>pe(e)||me(e)||re(e)||f(e)||d(e)||le(e),_isDeployment=e=>u(e)||te(e)||ie(e)||s(e)||a(e);function isFqnRefInsideGlobals(e){for(;;){if(_isDeployment(e)||_isModel(e))return!1;if(o(e)||ce(e))return!0;if(e.$container)e=e.$container;else return!1}}function isFqnRefInsideModel(e){for(;;){if(_isDeployment(e))return!1;if(_isModel(e))return!0;if(e.$container)e=e.$container;else return!1}}function isFqnRefInsideDeployment(e){for(;;){if(_isModel(e))return!1;if(_isDeployment(e))return!0;if(e.$container)e=e.$container;else return!1}}const Ce={mcpServer:()=>new NoopLikeC4MCPServer,mcpServerFactory:()=>new NoopLikeC4MCPServerFactory};var NoopLikeC4MCPServer=class{get mcp(){throw Error(`NoopLikeC4MCPServer does not have a McpServer`)}get isStarted(){return!1}get port(){return NaN}start(){return Promise.resolve()}stop(){return Promise.resolve()}},NoopLikeC4MCPServerFactory=class{create(e){throw Error(`NoopLikeC4MCPServerFactory`)}},AstNodeDescriptionProvider=class extends j{constructor(e){super(e),this.services=e}createDescription(e,t,n){n??=A.getDocument(e);let r=super.createDescription(e,t,n);return i(n.uri)||(n.likec4ProjectId??=this.services.shared.workspace.ProjectsManager.ownerProjectId(n),r.likec4ProjectId=n.likec4ProjectId),r}},IndexManager=class extends M{constructor(e){super(e),this.services=e}async updateContent(e,t){e.likec4ProjectId=this.services.workspace.ProjectsManager.ownerProjectId(e),await super.updateContent(e,t)}projectElements(e,t,n){let r=this.services.workspace.ProjectsManager;return z(this.symbolIndex.keys()).filter(t=>n&&!n.has(t)?!1:r.isIncluded(e,t)).flatMap(e=>this.getFileDescriptions(e,t))}};const we=V(`/`),ensureOrder=(e,t)=>we(e.uri.path,t.uri.path),isLikeC4UserDocument=e=>isLikeC4LangiumDocument(e)&&n(e);var LangiumDocuments=class extends N{constructor(e){super(e),this.services=e}get projectsManager(){return this.services.workspace.ProjectsManager}addDocument(e){let t=e.uri.toString();if(this.documentMap.has(t))throw Error(`A document with the URI '${t}' is already present.`);let n=[...this.documentMap.values(),e].sort(ensureOrder);this.documentMap.clear();for(let e of n)this.documentMap.set(e.uri.toString(),e);isLikeC4UserDocument(e)&&(e.likec4ProjectId=this.projectsManager.ownerProjectId(e))}getDocument(e){let t=super.getDocument(e);return isLikeC4UserDocument(t)&&(t.likec4ProjectId=this.projectsManager.ownerProjectId(t)),t}get userDocuments(){return z(this.documentMap.values()).filter(e=>isLikeC4UserDocument(e)&&!this.projectsManager.isExcluded(e))}get all(){return z(this.documentMap.values()).map(e=>(isLikeC4UserDocument(e)&&(e.likec4ProjectId=this.projectsManager.ownerProjectId(e)),e))}projectDocuments(e){let t=this.services.workspace.ProjectsManager;return z(this.documentMap.values()).filter(n=>isLikeC4UserDocument(n)&&t.isIncluded(e,n)?(n.likec4ProjectId=e,!0):!1)}groupedByProject(){let e=this.services.workspace.ProjectsManager;return p(this.userDocuments.toArray(),y(t=>(t.likec4ProjectId=e.ownerProjectId(t),t)),ve(v(`likec4ProjectId`)))}resetProjectIds(){let e=[];for(let t of this.documentMap.values())delete t.likec4ProjectId,isLikeC4UserDocument(t)&&!this.projectsManager.isExcluded(t)&&e.push(t.uri);return e}},Z=e(x(),1);const Q=c.getChild(`projects`);function isLangiumDocument(e){return typeof e==`object`&&`uri`in e&&`textDocument`in e}function normalizeUri(e){return isLangiumDocument(e)?e.uri.toString():typeof e==`string`?E(e)?e:I.file(e).toString():e.toString()}const Te=V(`/`,!0),compareUri=(e,t)=>Te(C(e.path),C(t.path));function isParentFolderFor(e){return t=>e.startsWith(U(t)?t:t.folder)}function _overlaps(e,t){let n=U(e)?e:e.folder,r=U(t)?t:t.folder;return n.startsWith(r)||r.startsWith(n)}function overlaps(...e){return g(_overlaps,e)}function _includes(e,t){return t.startsWith(e.folder)||e.includePaths?.some(isParentFolderFor(t))?!_excludes(e,t):!1}function _excludes(e,t){return e.exclude?.(k(t))??!1}function includes(...e){return g(_includes,e)}function excludes(...e){return g(_excludes,e)}function ProjectFolder(e){return e=normalizeUri(e),D(e)}const $={id:`default`,config:{name:`default`,exclude:[`**/node_modules/**`]},exclude:(0,Z.default)(`**/node_modules/**`,{dot:!0}),includeConfig:{paths:[],maxDepth:3,fileThreshold:30}};function isExcludedByDefault(e){return $.exclude(k(e))}function parseRegisterOptions(e){if(`configUri`in e){H(!h(e.configUri),`configUri is emptyish`);let t=I.isUri(e.configUri)?e.configUri:I.parse(normalizeUri(e.configUri)),n=ProjectFolder(L.dirname(t));return{configUri:t,folder:n,folderUri:I.parse(n)}}H(!h(e.folderUri),`folderUri is emptyish`);let t=ProjectFolder(e.folderUri),n=I.parse(t);return{configUri:L.joinPath(n,`likec4.config.json`),folder:t,folderUri:n}}var Ee=class ProjectsManager{static DefaultProjectId=$.id;#e=[];#t=void 0;#n=void 0;#r=[];#i=new B(e=>{if(e===ProjectsManager.DefaultProjectId){let t=this.getWorkspaceFolder(),n=L.joinPath(t,`.likec4rc`),r=ProjectFolder(t);return{id:e,config:$.config,folder:r,folderUri:I.parse(r),configUri:n,exclude:$.exclude,includeConfig:$.includeConfig}}return W(this.#r.find(t=>t.id===e),`Project ${e} not found`)});#a=new B(e=>{let t=normalizeUri(e),n=this.#o.get(t);return n?excludes(n,t)?!this.#r.some(includes(t)):!1:isExcludedByDefault(t)});#o=new B(e=>{let t=isParentFolderFor(e);return this.#r.find(t)??this.#r.find(includes(e))??null});constructor(e){this.services=e,Q.debug`created`}get defaultProjectId(){if(this.#t)return this.#t;if(!(this.#r.length>1))return b(this.#r,1)?this.#r[0].id:ProjectsManager.DefaultProjectId}set defaultProjectId(e){if(e!==this.#t){if(this.#n=void 0,!e||e===ProjectsManager.DefaultProjectId){Q.debug`reset default project ID`,this.#t=void 0;return}H(this.#r.find(t=>t.id===e),`Project "${e}" not found`),Q.debug`set default project ID to ${e}`,this.#t=e}}get default(){if(!this.#n){let e=this.defaultProjectId??ProjectsManager.DefaultProjectId;this.#n=this.#i.get(e)}return this.#n}get all(){if(b(this.#r,1)){let e=[...y(this.#r,v(`id`)),$.id];if(this.#t){let t=e.findIndex(e=>e===this.#t);t>0&&(e.splice(t,1),e.unshift(this.#t))}return e}return[$.id]}getProject(e){let t=typeof e==`string`?e:e.likec4ProjectId||this.ownerProjectId(e);return this.#i.get(t)}findOverlaped(e){let t=overlaps(ProjectFolder(e));return this.#r.filter(e=>t(e)||!!e.includePaths&&!!m(e.includePaths,t))}ensureProjectId(e){return e===ProjectsManager.DefaultProjectId?this.defaultProjectId??ProjectsManager.DefaultProjectId:e?(H(this.#r.some(t=>e===t.id),`Project ID ${e} is not registered`),e):W(this.defaultProjectId,()=>`Specify exact project, known: [${y(this.#r,v(`id`)).join(`, `)}]`)}ensureProject(e){return e=this.ensureProjectId(e),this.getProject(e)}hasMultipleProjects(){return this.#r.length>1}isExcluded(...e){let t=e.length===1?e[0]:e[1];return isLangiumDocument(t)&&i(t)?!0:e.length===1?this.#a.get(normalizeUri(t)):excludes(this.#i.get(e[0]),normalizeUri(t))}isIncluded(e,t){let n=normalizeUri(t);return b(this.#r,1)?e===ProjectsManager.DefaultProjectId?!this.#o.get(n)&&!isExcludedByDefault(n):includes(this.#i.get(e),normalizeUri(t)):!isExcludedByDefault(n)}async registerConfigFile(e,t){if(isExcludedByDefault(normalizeUri(e)))throw Error(`Failed to register project config, path ${e.fsPath} is excluded by: ${$.config.exclude.map(e=>`"${e}"`).join(`, `)}`);try{let n=await this.services.workspace.FileSystemProvider.loadProjectConfig(e);return await this.registerProject({config:n,configUri:e},t)}catch(t){if(!R(t))throw be(t,`Failed to register project config ${e.fsPath}:\n`);return Promise.reject(t)}}async registerProject(e,t){let n=J.validate(e.config),{configUri:r,folder:i,folderUri:a}=parseRegisterOptions(e),o=J.normalizeInclude(n.include),s=this.#r.find(e=>e.folder===i);return s?(s.config.name!==n.name&&(s.id=this.uniqueProjectId(n.name),Q.info`re-register ${s.id}`),s.config=n,s.folder=i,s.folderUri=a,s.configUri=r,s.includeConfig=o):(s={id:this.uniqueProjectId(n.name),config:n,folder:i,configUri:r,folderUri:a,includeConfig:o},this.#r=p([...this.#r,s],_e((e,t)=>compareUri(e.folderUri,t.folderUri))),Q.info`register ${s.id}`),this.updateIncludesExcludes(s),this.resetCaches(),this.#s?s:(this.notifyListeners(),await this.rebuildProject(s.id,t).catch(e=>R(e)?Promise.reject(e):(Q.warn(`Failed to rebuild project {projectId} after config change`,{projectId:s.id,error:e}),Promise.resolve())),s)}ownerProjectId(e){return this.#o.get(normalizeUri(e))?.id??this.#t??ProjectsManager.DefaultProjectId}#s=null;async reloadProjects(e){return this.#s?(Q.debug`reload projects is already in progress, waiting`,await this.#s.catch(()=>{})):(Q.debug`schedule reload projects`,this.#s=Promise.resolve().then(()=>this._reloadProjects(e)).catch(e=>(R(e)||Q.warn(`Failed to reload projects`,{error:e}),Promise.reject(e))).finally(()=>{this.#s=null,this.notifyListeners()}),await this.#s)}async _reloadProjects(e){let t=this.services.workspace.WorkspaceManager.workspaceFolders;if(!t||t.length===0){Q.warn(`Failed to reloadProjects, no workspace folders found`);return}Q.debug`start reload projects`;let n=[];for(let e of t){let t=I.parse(e.uri);Q.debug`scan projects in ${t.fsPath}`;try{let e=await this.services.workspace.FileSystemProvider.scanProjectFiles(t);for(let r of e)Q.debug`found config ${L.relative(t,r.uri)}`,n.push(r.uri)}catch(e){Q.warn(`Failed on scanProjectFiles in {folder}`,{folder:t.fsPath,error:e})}}if(n.length===0){if(this.#r.length===0){Q.warning(`No config files found`);return}Q.warning(`No config files found, but {count} projects were registered before`,{count:this.#r.length})}n.sort(compareUri);let r=new Map(this.#r.map(e=>[e.configUri.toString(),e]));this.#r=[],this.#i.clear();for(let e of n)try{await this.registerConfigFile(e)}catch(t){Q.warn(K(t));let n=r.get(e.toString());n&&(Q.debug`Update failed, restore project ${n.id}`,await this.registerProject(n))}this.resetCaches(),this.notifyListeners(),await this.services.workspace.WorkspaceManager.rebuildAll(e)}uniqueProjectId(e){let t=new Set(y(this.#r,v(`id`))),n=e;if(!t.has(n))return n;Q.warn`Project "${e}" already exists, generating unique ID`;let r=1;for(;t.has(n);)n=`${e}-${r++}`;return n}resetCaches(){Q.trace(`resetCaches`),this.#n=void 0,this.#t&&!this.#r.some(e=>e.id===this.#t)&&(this.#t=void 0),this.#i.clear(),this.#o.clear(),this.#a.clear()}async rebuildProject(e,t){let n=this.#r.find(t=>t.id===e);if(!n)return e===ProjectsManager.DefaultProjectId?Q.info`Rebuilding all documents `:Q.warn`Project ${e} not found, rebuilding all`,await this.services.workspace.WorkspaceManager.rebuildAll(t);let r=Q.getChild(n.id),i=this.services.workspace.LangiumDocuments.resetProjectIds().filter(e=>includes(n,normalizeUri(e)));i.length!==0&&(r.info(`rebuild project documents: {docs}`,{docs:i.length}),this.resetCaches(),await this.services.workspace.DocumentBuilder.update(i,[],t).catch(e=>{r.warn(`Failed to rebuild project`,{error:e})}))}getAllIncludePaths(){let e=[];for(let t of this.#r)if(t.includePaths)for(let n of t.includePaths)e.push({projectId:t.id,includePath:n.uri,includeConfig:t.includeConfig});return e}onProjectsUpdate(e){return this.#e.push(e),F.create(()=>{let t=this.#e.indexOf(e);t>=0&&this.#e.splice(t,1)})}getWorkspaceFolder(){try{return this.services.workspace.WorkspaceManager.workspaceUri}catch(e){return Q.warn(`Failed to get workspace URI, using default folder`,{error:e}),I.file(`/`)}}notifyListeners(){for(let e of this.#e)try{e()}catch(e){Q.warn(K(e))}}updateIncludesExcludes(e){let t=e.config;switch(!0){case _(t.exclude):e.exclude=$.exclude;break;case t.exclude&&b(t.exclude,1):e.exclude=(0,Z.default)(y(t.exclude,t=>(!w(t)&&!t.startsWith(`**`)&&(t=T(`**`,t)),O(S(e.folderUri.path,t)))),{contains:!0,dot:!0});break;default:delete e.exclude}let n=e.includeConfig.paths;if(!b(n,1))return delete e.includePaths,e;e.includePaths=y(n,t=>{let n=L.resolvePath(e.folderUri,t);return{uri:n,folder:ProjectFolder(n)}}),Q.debug`project ${e.id} include paths: ${e.includePaths.map(e=>e.uri.fsPath).join(`, `)}`;for(let t of e.includePaths)for(let n of this.#r)n.id!==e.id&&(overlaps(t,n)&&Q.warn(`Project "{projectId}" include path "{includePath}" overlaps with project "{otherProjectId}" folder. Files in overlapping areas will only belong to one project.`,{projectId:e.id,includePath:t.folder,otherProjectId:n.id}),n.includePaths?.forEach(r=>{overlaps(t,r)&&Q.warn(`Project "{projectId}" include path "{includePath}" overlaps with project "{otherProjectId}" include path "{otherIncludePath}". Files in overlapping areas will only belong to one project.`,{projectId:e.id,includePath:t.folder,otherProjectId:n.id,otherIncludePath:r.folder})}));return e}},LikeC4WorkspaceManager=class extends P{documentFactory;fileSystemProvider;#e=[];initialBuildOptions={eagerLinking:!0,validation:!0};constructor(e){super(e),this.services=e,this.documentFactory=e.workspace.LangiumDocumentFactory,this.fileSystemProvider=e.workspace.FileSystemProvider}async performStartup(e){this.folders??=e;let t=[];for(let n of e)try{let e=Y.parse(n.uri),r=await this.fileSystemProvider.scanProjectFiles(e);t.push(...r),this.services.workspace.FileSystemWatcher.watch(e.fsPath)}catch(e){l(e)}let n=this.services.workspace.ProjectsManager;for(let e of t)try{await n.registerConfigFile(e.uri)}catch(e){l(e)}return await super.performStartup(e)}async loadAdditionalDocuments(e,n){n(this.documentFactory.fromString(t,Y.parse(r)));let i=this.services.workspace.ProjectsManager.getAllIncludePaths(),a=0,o=[];for(let{projectId:e,includePath:t,includeConfig:n}of i)try{c.debug`scanning include path ${t.fsPath} for project ${e}`;let r=await this.fileSystemProvider.readDirectory(t,{recursive:!0,maxDepth:n.maxDepth});o.push(...r),r.length===0&&c.debug`loaded ${r.length} files from include path ${t.fsPath}`}catch(e){c.warn(`Failed to scan include path ${t.fsPath}`,{error:e})}for(let e of ye(o,e=>e.uri.path))try{n(await this.langiumDocuments.getOrCreateDocument(e.uri)),a++}catch(t){c.warn(`Failed to load document ${e.uri.fsPath}`,{error:t})}if(i.length>0&&a>0){let e=Math.min(...i.map(e=>e.includeConfig.fileThreshold));a>e?c.warn(`Loaded ${a} files from include paths (threshold: ${e}). Large include directories may slow workspace initialization. Consider adjusting "include.fileThreshold" or "include.maxDepth" in your project configuration.`):c.info`loaded ${a} total files from ${i.length} include paths`}}includeEntry(e,t,n){let r=L.basename(t.uri);return t.isDirectory?!ue(r):t.isFile?(n.fileExtensions.includes(L.extname(t.uri))||n.fileNames.includes(r))&&!this.services.workspace.ProjectsManager.isExcluded(t.uri):!1}workspace(){return this.folders&&b(this.folders,1)?this.folders[0]:null}async rebuildAll(e){let t=this.services.workspace.LangiumDocuments.resetProjectIds();c.info(`invalidate and rebuild all {docs} documents`,{docs:t.length}),this.forceCleanCaches(),await this.documentBuilder.update(t,[],e)}get workspaceUri(){let e=this.workspace();return q(e,`Workspace not initialized`),Y.parse(e.uri)}get workspaceURL(){let e=this.workspace();return q(e,`Workspace not initialized`),new URL(e.uri)}forceCleanCaches(){for(let e of this.#e)e();this.services.workspace.ManualLayouts.clearCaches(),this.services.workspace.Cache.clear()}onForceCleanCache(e){return this.#e.push(e),F.create(()=>{this.#e=this.#e.filter(t=>t!==e)})}};export{toRelationshipStyle as C,toColor as S,parseAstPercent as _,AstNodeDescriptionProvider as a,toAstViewLayoutDirection as b,Se as c,isFqnRefInsideDeployment as d,isFqnRefInsideGlobals as f,parseAstOpacityProperty as g,parseAstIconPositionValue as h,IndexManager as i,xe as l,isLikeC4LangiumDocument as m,Ee as n,Ce as o,isFqnRefInsideModel as p,LangiumDocuments as r,NoopLikeC4MCPServer as s,LikeC4WorkspaceManager as t,getViewRulePredicateContainer as u,parseAstSizeValue as v,toAutoLayout as x,parseMarkdownAsString as y};
@@ -1,7 +1,12 @@
1
- import { $ as ProjectsManager, B as NoFileSystem, D as LikeC4WorkspaceManager, G as FileSystemProvider, H as NoLikeC4ManualLayouts, J as LikeC4ManualLayouts, K as FileSystemWatcher, O as LangiumDocuments, Q as ProjectData, S as LikeC4ModelBuilder, T as FqnIndex, V as NoFileSystemWatcher, W as FileSystemModuleContext, Y as LikeC4ManualLayoutsModuleContext, Z as Project, _ as LikeC4Views, b as LikeC4ModelLocator, f as LikeC4LanguageServices, g as LikeC4ModelParser, h as DocumentParser, q as FileSystemWatcherModuleContext, x as ViewLocateResult, y as NoMCPServer } from "../_chunks/index.mjs";
2
- import { LanguageServicesContext, LikeC4AddedServices, LikeC4Services, LikeC4SharedServices, createLanguageServices } from "../module.mjs";
1
+ import { B as ProjectsManager, D as NoFileSystem, F as LikeC4ManualLayouts, I as LikeC4ManualLayoutsModuleContext, M as FileSystemProvider, N as FileSystemWatcher, O as NoFileSystemWatcher, P as FileSystemWatcherModuleContext, R as Project, _ as LikeC4ModelBuilder, a as createLanguageServices, b as LangiumDocuments, c as LikeC4LanguageServices, f as LikeC4Views, g as ViewLocateResult, h as LikeC4ModelLocator, i as LikeC4SharedServices, j as FileSystemModuleContext, k as NoLikeC4ManualLayouts, l as DocumentParser, m as NoMCPServer, n as LikeC4AddedServices, r as LikeC4Services, t as LanguageServicesContext, u as LikeC4ModelParser, v as FqnIndex, y as LikeC4WorkspaceManager, z as ProjectData } from "../_chunks/module.mjs";
2
+ import "../_chunks/protocol.mjs";
3
3
 
4
4
  //#region src/browser/index.d.ts
5
+ /**
6
+ * Starts the LikeC4 language server in the browser, connected via the given port (e.g. a worker).
7
+ * @param port - MessagePort or DedicatedWorkerGlobalScope for LSP communication.
8
+ * @returns Shared and LikeC4-specific services after the connection is initialized.
9
+ */
5
10
  declare function startLanguageServer(port: MessagePort | DedicatedWorkerGlobalScope): {
6
11
  shared: LikeC4SharedServices;
7
12
  likec4: LikeC4Services;
@@ -1 +1 @@
1
- import{Cr as NoFileSystem,Tr as NoLikeC4ManualLayouts,wr as NoFileSystemWatcher}from"../_chunks/utils.mjs";import{n as NoMCPServer}from"../_chunks/ProjectsManager.mjs";import{createLanguageServices}from"../module.mjs";import{configureLogger,getConsoleSink,getTextFormatter}from"@likec4/log";import{startLanguageServer as startLanguageServer$1}from"langium/lsp";import{BrowserMessageReader,BrowserMessageWriter,createConnection}from"vscode-languageserver/browser";function startLanguageServer(e){let t=createConnection(new BrowserMessageReader(e),new BrowserMessageWriter(e));configureLogger({sinks:{console:getConsoleSink({formatter:getTextFormatter({format:({level:e,category:t,message:n})=>`${e} ${t} ${n}`})})},loggers:[{category:`likec4`,sinks:[`console`],lowestLevel:`debug`}]});let n=createLanguageServices({connection:t});return startLanguageServer$1(n.shared),n}export{NoFileSystem,NoFileSystemWatcher,NoLikeC4ManualLayouts,NoMCPServer,createLanguageServices,startLanguageServer};
1
+ import"../_chunks/likec4lib.mjs";import{n as e,r as t,t as n}from"../_chunks/noop.mjs";import"../_chunks/utils.mjs";import"../_chunks/libs/remeda.mjs";import{o as r}from"../_chunks/workspace.mjs";import{t as i}from"../_chunks/module.mjs";import"../_chunks/libs/picomatch.mjs";import"../_chunks/libs/ufo.mjs";import"../_chunks/libs/parse-ms.mjs";import"../_chunks/libs/pretty-ms.mjs";import"../_chunks/libs/fast-equals.mjs";import"../_chunks/libs/@msgpack/msgpack.mjs";import"../_chunks/libs/strip-indent.mjs";import"../_chunks/common-exports.mjs";import{configureLogger as a,getConsoleSink as o,getTextFormatter as s}from"@likec4/log";import{startLanguageServer as c}from"langium/lsp";import{BrowserMessageReader as l,BrowserMessageWriter as u,createConnection as d}from"vscode-languageserver/browser";function startLanguageServer(e){let t=d(new l(e),new u(e));a({sinks:{console:o({formatter:s({format:({level:e,category:t,message:n})=>`${e} ${t} ${n}`})})},loggers:[{category:`likec4`,sinks:[`console`],lowestLevel:`debug`}]});let n=i({connection:t});return c(n.shared),n}export{n as NoFileSystem,e as NoFileSystemWatcher,t as NoLikeC4ManualLayouts,r as NoMCPServer,i as createLanguageServices,startLanguageServer};
@@ -1 +1 @@
1
- import{startLanguageServer}from"./index.mjs";startLanguageServer(self);
1
+ import"../_chunks/likec4lib.mjs";import"../_chunks/noop.mjs";import"../_chunks/utils.mjs";import"../_chunks/libs/remeda.mjs";import"../_chunks/workspace.mjs";import"../_chunks/module.mjs";import"../_chunks/libs/picomatch.mjs";import"../_chunks/libs/ufo.mjs";import"../_chunks/libs/parse-ms.mjs";import"../_chunks/libs/pretty-ms.mjs";import"../_chunks/libs/fast-equals.mjs";import"../_chunks/libs/@msgpack/msgpack.mjs";import"../_chunks/libs/strip-indent.mjs";import"../_chunks/common-exports.mjs";import{startLanguageServer as e}from"./index.mjs";function errToString(e){switch(!0){case e instanceof Error:return e.message;case typeof e==`object`&&!!e:try{return JSON.stringify(e)}catch{return`[unserializable value]`}case typeof e==`string`:return e;case e==null:return``;case typeof e==`number`||typeof e==`boolean`:return String(e);case typeof e==`symbol`:return e.toString();default:return`unknown`}}const log=(e,t)=>{let n=t==null?e:`${e} ${errToString(t)}`;try{console.error(`[LikeC4 LSP worker]`,n)}catch{}};self.onerror=e=>(log(`Uncaught error`,e.message??e.error),!1),self.onunhandledrejection=e=>{log(`Unhandled rejection`,e.reason)};try{e(self)}catch(e){throw log(`Failed to start language server`,e),e}
@@ -1,5 +1,5 @@
1
- import "./_chunks/index.mjs";
2
- import { LikeC4Services, LikeC4SharedServices } from "./module.mjs";
1
+ import { i as LikeC4SharedServices, r as LikeC4Services } from "./_chunks/module.mjs";
2
+ import "./_chunks/protocol.mjs";
3
3
 
4
4
  //#region src/bundled.d.ts
5
5
  type StartBundledLanguageServerOptions = {
package/dist/bundled.mjs CHANGED
@@ -1 +1 @@
1
- import{i as logger$1,t as getLspConnectionSink}from"./_chunks/logger.mjs";import"./_chunks/libs/eventemitter3.mjs";import{r as WithLikeC4ManualLayouts,t as WithFileSystem}from"./_chunks/LikeC4FileSystem.mjs";import{createLanguageServices}from"./module.mjs";import{t as WithMCPServer}from"./_chunks/WithMCPServer.mjs";import{t as ConfigurableLayouter}from"./_chunks/ConfigurableLayouter.mjs";import{configureLogger,getConsoleStderrSink}from"@likec4/log";import{startLanguageServer as startLanguageServer$1}from"langium/lsp";import{defu}from"defu";import{isDevelopment}from"std-env";import{ProposedFeatures,createConnection}from"vscode-languageserver/node";function startLanguageServer(t){let n=defu(t,{enableMCP:!0,enableManualLayouts:!0}),r=createConnection(ProposedFeatures.all);configureLogger({sinks:{lsp:getLspConnectionSink(r),console:getConsoleStderrSink()},loggers:[{category:[`likec4`],sinks:[`console`,`lsp`],lowestLevel:isDevelopment?`trace`:`debug`}]}),process.on(`uncaughtException`,e=>{logger$1.error(`uncaughtException`,{err:e})}),process.on(`unhandledRejection`,e=>{logger$1.error(`unhandledRejection`,{err:e})});let i=createLanguageServices({connection:r,...WithFileSystem(!1),...n.enableMCP!==!1&&WithMCPServer(n.enableMCP===!0?`sse`:n.enableMCP),...n.enableManualLayouts&&WithLikeC4ManualLayouts},ConfigurableLayouter);return startLanguageServer$1(i.shared),i}export{startLanguageServer};
1
+ import"./_chunks/likec4lib.mjs";import"./_chunks/noop.mjs";import{Cr as e,Er as t}from"./_chunks/utils.mjs";import"./_chunks/libs/eventemitter3.mjs";import"./_chunks/libs/p-queue.mjs";import"./_chunks/libs/remeda.mjs";import{r as n,t as r}from"./_chunks/LikeC4FileSystem.mjs";import"./_chunks/workspace.mjs";import{t as i}from"./_chunks/module.mjs";import"./_chunks/libs/picomatch.mjs";import"./_chunks/libs/ufo.mjs";import"./_chunks/libs/parse-ms.mjs";import"./_chunks/libs/pretty-ms.mjs";import"./_chunks/libs/fast-equals.mjs";import"./_chunks/libs/@msgpack/msgpack.mjs";import"./_chunks/libs/strip-indent.mjs";import{t as a}from"./_chunks/WithMCPServer.mjs";import{t as o}from"./_chunks/ConfigurableLayouter.mjs";import{configureLogger as s,getConsoleStderrSink as c}from"@likec4/log";import{startLanguageServer as l}from"langium/lsp";import{defu as u}from"defu";import{isDevelopment as d}from"std-env";import{ProposedFeatures as f,createConnection as p}from"vscode-languageserver/node";function startLanguageServer(m){let h=u(m,{enableMCP:!0,enableManualLayouts:!0}),g=p(f.all);s({sinks:{lsp:e(g),console:c()},loggers:[{category:[`likec4`],sinks:[`console`,`lsp`],lowestLevel:d?`trace`:`debug`}]}),process.on(`uncaughtException`,e=>{t.error(`uncaughtException`,{err:e})}),process.on(`unhandledRejection`,e=>{t.error(`unhandledRejection`,{err:e})});let _=i({connection:g,...r(!1),...h.enableMCP!==!1&&a(h.enableMCP===!0?`sse`:h.enableMCP),...h.enableManualLayouts&&n},o);return l(_.shared),_}export{startLanguageServer};
@@ -1,2 +1,3 @@
1
- import { B as NoFileSystem, G as FileSystemProvider, H as NoLikeC4ManualLayouts, J as LikeC4ManualLayouts, K as FileSystemWatcher, L as WithLikeC4ManualLayouts, R as WithChokidarWatcher, U as FileNode, V as NoFileSystemWatcher, W as FileSystemModuleContext, X as ManualLayoutsSnapshot, Y as LikeC4ManualLayoutsModuleContext, q as FileSystemWatcherModuleContext, z as WithFileSystem } from "../_chunks/index.mjs";
2
- export { type FileNode, type FileSystemModuleContext, type FileSystemProvider, type FileSystemWatcher, type FileSystemWatcherModuleContext, type LikeC4ManualLayouts, type LikeC4ManualLayoutsModuleContext, type ManualLayoutsSnapshot, NoFileSystem, NoFileSystemWatcher, NoLikeC4ManualLayouts, WithChokidarWatcher, WithFileSystem, WithLikeC4ManualLayouts };
1
+ import { A as FileNode, D as NoFileSystem, E as WithFileSystem, F as LikeC4ManualLayouts, I as LikeC4ManualLayoutsModuleContext, L as ManualLayoutsSnapshot, M as FileSystemProvider, N as FileSystemWatcher, O as NoFileSystemWatcher, P as FileSystemWatcherModuleContext, T as WithChokidarWatcher, j as FileSystemModuleContext, k as NoLikeC4ManualLayouts, w as WithLikeC4ManualLayouts } from "../_chunks/module.mjs";
2
+ import "../_chunks/protocol.mjs";
3
+ export { FileNode, FileSystemModuleContext, FileSystemProvider, FileSystemWatcher, FileSystemWatcherModuleContext, LikeC4ManualLayouts, LikeC4ManualLayoutsModuleContext, ManualLayoutsSnapshot, NoFileSystem, NoFileSystemWatcher, NoLikeC4ManualLayouts, WithChokidarWatcher, WithFileSystem, WithLikeC4ManualLayouts };
@@ -1 +1 @@
1
- import{Cr as NoFileSystem,Tr as NoLikeC4ManualLayouts,wr as NoFileSystemWatcher}from"../_chunks/utils.mjs";import"../_chunks/libs/eventemitter3.mjs";import{n as WithChokidarWatcher,r as WithLikeC4ManualLayouts,t as WithFileSystem}from"../_chunks/LikeC4FileSystem.mjs";export{NoFileSystem,NoFileSystemWatcher,NoLikeC4ManualLayouts,WithChokidarWatcher,WithFileSystem,WithLikeC4ManualLayouts};
1
+ import"../_chunks/likec4lib.mjs";import{n as e,r as t,t as n}from"../_chunks/noop.mjs";import"../_chunks/utils.mjs";import"../_chunks/libs/eventemitter3.mjs";import"../_chunks/libs/p-queue.mjs";import"../_chunks/libs/remeda.mjs";import{n as r,r as i,t as a}from"../_chunks/LikeC4FileSystem.mjs";export{n as NoFileSystem,e as NoFileSystemWatcher,t as NoLikeC4ManualLayouts,r as WithChokidarWatcher,a as WithFileSystem,i as WithLikeC4ManualLayouts};
package/dist/index.d.mts CHANGED
@@ -1,39 +1,3 @@
1
- import { $ as ProjectsManager, B as NoFileSystem, D as LikeC4WorkspaceManager, G as FileSystemProvider, H as NoLikeC4ManualLayouts, J as LikeC4ManualLayouts, K as FileSystemWatcher, L as WithLikeC4ManualLayouts, O as LangiumDocuments, Q as ProjectData, S as LikeC4ModelBuilder, T as FqnIndex, V as NoFileSystemWatcher, W as FileSystemModuleContext, Y as LikeC4ManualLayoutsModuleContext, Z as Project, _ as LikeC4Views, b as LikeC4ModelLocator, f as LikeC4LanguageServices, g as LikeC4ModelParser, h as DocumentParser, q as FileSystemWatcherModuleContext, v as WithMCPServer, x as ViewLocateResult, y as NoMCPServer, z as WithFileSystem } from "./_chunks/index.mjs";
2
- import "./mcp/index.mjs";
3
- import { LanguageServicesContext, LikeC4AddedServices, LikeC4Services, LikeC4SharedServices, createLanguageServices } from "./module.mjs";
4
- import { Connection } from "vscode-languageserver";
5
-
6
- //#region src/index.d.ts
7
- type StartLanguageServerOptions = {
8
- /**
9
- * The Language Server Protocol connection to use.
10
- */
11
- connection?: Connection;
12
- /**
13
- * Whether to enable the file system watcher.
14
- * @default true
15
- */
16
- enableWatcher?: boolean;
17
- /**
18
- * @default true
19
- */
20
- enableTelemetry?: boolean;
21
- /**
22
- * Whether to enable the MCP server.
23
- * @default 'sse'
24
- */
25
- enableMCP?: false | 'stdio' | 'sse' | {
26
- port: number;
27
- };
28
- /**
29
- * Whether to enable manual layouts, stored in json5 files.
30
- * @default true
31
- */
32
- enableManualLayouts?: boolean;
33
- };
34
- declare function startLanguageServer(options?: StartLanguageServerOptions): {
35
- shared: LikeC4SharedServices;
36
- likec4: LikeC4Services;
37
- };
38
- //#endregion
1
+ import { B as ProjectsManager, D as NoFileSystem, E as WithFileSystem, F as LikeC4ManualLayouts, I as LikeC4ManualLayoutsModuleContext, M as FileSystemProvider, N as FileSystemWatcher, O as NoFileSystemWatcher, P as FileSystemWatcherModuleContext, R as Project, _ as LikeC4ModelBuilder, a as createLanguageServices, b as LangiumDocuments, c as LikeC4LanguageServices, d as startLanguageServer, f as LikeC4Views, g as ViewLocateResult, h as LikeC4ModelLocator, i as LikeC4SharedServices, j as FileSystemModuleContext, k as NoLikeC4ManualLayouts, l as DocumentParser, m as NoMCPServer, n as LikeC4AddedServices, p as WithMCPServer, r as LikeC4Services, t as LanguageServicesContext, u as LikeC4ModelParser, v as FqnIndex, w as WithLikeC4ManualLayouts, y as LikeC4WorkspaceManager, z as ProjectData } from "./_chunks/module.mjs";
2
+ import "./_chunks/protocol.mjs";
39
3
  export { DocumentParser, FileSystemModuleContext, FileSystemProvider, FileSystemWatcher, FileSystemWatcherModuleContext, FqnIndex, LangiumDocuments, LanguageServicesContext, LikeC4AddedServices, LikeC4LanguageServices, LikeC4ManualLayouts, LikeC4ManualLayoutsModuleContext, LikeC4ModelBuilder, LikeC4ModelLocator, LikeC4ModelParser, LikeC4Services, LikeC4SharedServices, LikeC4Views, LikeC4WorkspaceManager, NoFileSystem, NoFileSystemWatcher, NoLikeC4ManualLayouts, NoMCPServer, Project, ProjectData, ProjectsManager, ViewLocateResult, WithFileSystem, WithLikeC4ManualLayouts, WithMCPServer, createLanguageServices, startLanguageServer };
package/dist/index.mjs CHANGED
@@ -1 +1 @@
1
- import{Cr as NoFileSystem,Tr as NoLikeC4ManualLayouts,wr as NoFileSystemWatcher}from"./_chunks/utils.mjs";import{i as logger$1,n as getTelemetrySink}from"./_chunks/logger.mjs";import"./_chunks/libs/eventemitter3.mjs";import{r as WithLikeC4ManualLayouts,t as WithFileSystem}from"./_chunks/LikeC4FileSystem.mjs";import{n as NoMCPServer}from"./_chunks/ProjectsManager.mjs";import{createLanguageServices}from"./module.mjs";import{t as WithMCPServer}from"./_chunks/WithMCPServer.mjs";import{t as ConfigurableLayouter}from"./_chunks/ConfigurableLayouter.mjs";import{configureLogger,getConsoleSink,getConsoleStderrSink,getTextFormatter}from"@likec4/log";import{startLanguageServer as startLanguageServer$1}from"langium/lsp";import{defu}from"defu";import{isDevelopment}from"std-env";function startLanguageServer(e){let t=e?.connection,n=defu(e,{enableWatcher:!0,enableMCP:`sse`,enableTelemetry:!!t,enableManualLayouts:!0}),r=!!t&&n.enableTelemetry&&!isDevelopment;configureLogger({sinks:{console:n.enableMCP===`stdio`||t?getConsoleStderrSink({formatter:getTextFormatter()}):getConsoleSink({formatter:getTextFormatter()}),...r&&{telemetry:getTelemetrySink(t)}},loggers:[{category:[`likec4`],sinks:[`console`,...r?[`telemetry`]:[]],lowestLevel:isDevelopment?`trace`:`debug`}]}),t?logger$1.info(`Starting LikeC4 language server`):logger$1.warn(`Starting LikeC4 language server (headless - no LSP connection)`);let i=createLanguageServices({...t&&{connection:t},...WithFileSystem(n.enableWatcher),...!!n.enableMCP&&WithMCPServer(n.enableMCP),...n.enableManualLayouts&&WithLikeC4ManualLayouts},t?{likec4:{...ConfigurableLayouter.likec4}}:void 0);return startLanguageServer$1(i.shared),i}export{NoFileSystem,NoFileSystemWatcher,NoLikeC4ManualLayouts,NoMCPServer,WithFileSystem,WithLikeC4ManualLayouts,WithMCPServer,createLanguageServices,startLanguageServer};
1
+ import"./_chunks/likec4lib.mjs";import{n as e,r as t,t as n}from"./_chunks/noop.mjs";import{Er as r,wr as i}from"./_chunks/utils.mjs";import"./_chunks/libs/eventemitter3.mjs";import"./_chunks/libs/p-queue.mjs";import"./_chunks/libs/remeda.mjs";import{r as a,t as o}from"./_chunks/LikeC4FileSystem.mjs";import{o as s}from"./_chunks/workspace.mjs";import{t as c}from"./_chunks/module.mjs";import"./_chunks/libs/picomatch.mjs";import"./_chunks/libs/ufo.mjs";import"./_chunks/libs/parse-ms.mjs";import"./_chunks/libs/pretty-ms.mjs";import"./_chunks/libs/fast-equals.mjs";import"./_chunks/libs/@msgpack/msgpack.mjs";import"./_chunks/libs/strip-indent.mjs";import"./_chunks/common-exports.mjs";import{t as l}from"./_chunks/WithMCPServer.mjs";import"./mcp/index.mjs";import{t as u}from"./_chunks/ConfigurableLayouter.mjs";import{configureLogger as d,getConsoleSink as f,getConsoleStderrSink as p,getTextFormatter as m}from"@likec4/log";import{startLanguageServer as h}from"langium/lsp";import{defu as g}from"defu";import{isDevelopment as _}from"std-env";function startLanguageServer(e){let t=e?.connection,n=g(e,{enableWatcher:!0,enableMCP:`sse`,enableTelemetry:!!t,enableManualLayouts:!0}),s=!!t&&n.enableTelemetry&&!_;d({sinks:{console:n.enableMCP===`stdio`||t?p({formatter:m()}):f({formatter:m()}),...s&&{telemetry:i(t)}},loggers:[{category:[`likec4`],sinks:[`console`,...s?[`telemetry`]:[]],lowestLevel:_?`trace`:`debug`}]}),t?r.info(`Starting LikeC4 language server`):r.warn(`Starting LikeC4 language server (headless - no LSP connection)`);let v=c({...t&&{connection:t},...o(n.enableWatcher),...!!n.enableMCP&&l(n.enableMCP),...n.enableManualLayouts&&a},t?{likec4:{...u.likec4}}:void 0);return h(v.shared),v}export{n as NoFileSystem,e as NoFileSystemWatcher,t as NoLikeC4ManualLayouts,s as NoMCPServer,o as WithFileSystem,a as WithLikeC4ManualLayouts,l as WithMCPServer,c as createLanguageServices,startLanguageServer};
@@ -1 +1 @@
1
- import{t as LibIcons}from"./_chunks/icons.mjs";const Scheme=`likec4builtin`,Uri=`${Scheme}:///likec4/lib/icons.c4`;function isLikeC4Builtin(e){return(`uri`in e?e.uri:e).scheme===Scheme}function isNotLikeC4Builtin(e){return!isLikeC4Builtin(e)}export{LibIcons as Content,Scheme,Uri,isLikeC4Builtin,isNotLikeC4Builtin};
1
+ import{a as e,i as t,n,r,t as i}from"./_chunks/likec4lib.mjs";export{e as Content,i as Scheme,n as Uri,r as isLikeC4Builtin,t as isNotLikeC4Builtin};
@@ -1,2 +1,3 @@
1
- import { F as LikeC4MCPServerModuleContext, N as LikeC4MCPServer, P as LikeC4MCPServerFactory, v as WithMCPServer, y as NoMCPServer } from "../_chunks/index.mjs";
2
- export { type LikeC4MCPServer, type LikeC4MCPServerFactory, type LikeC4MCPServerModuleContext, NoMCPServer, WithMCPServer };
1
+ import { C as LikeC4MCPServerModuleContext, S as LikeC4MCPServerFactory, m as NoMCPServer, p as WithMCPServer, x as LikeC4MCPServer } from "../_chunks/module.mjs";
2
+ import "../_chunks/protocol.mjs";
3
+ export { LikeC4MCPServer, LikeC4MCPServerFactory, LikeC4MCPServerModuleContext, NoMCPServer, WithMCPServer };
@@ -1 +1 @@
1
- import{n as NoMCPServer}from"../_chunks/ProjectsManager.mjs";import{t as WithMCPServer}from"../_chunks/WithMCPServer.mjs";export{NoMCPServer,WithMCPServer};
1
+ import"../_chunks/likec4lib.mjs";import"../_chunks/utils.mjs";import"../_chunks/libs/remeda.mjs";import{o as e}from"../_chunks/workspace.mjs";import"../_chunks/libs/picomatch.mjs";import"../_chunks/libs/ufo.mjs";import{t}from"../_chunks/WithMCPServer.mjs";export{e as NoMCPServer,t as WithMCPServer};
package/dist/module.d.mts CHANGED
@@ -1,126 +1,3 @@
1
- import { $ as ProjectsManager, A as LikeC4ScopeComputation, B as NoFileSystem, C as LastSeenArtifacts, D as LikeC4WorkspaceManager, E as LikeC4ScopeProvider, F as LikeC4MCPServerModuleContext, G as FileSystemProvider$1, H as NoLikeC4ManualLayouts, I as LikeC4Formatter, J as LikeC4ManualLayouts, K as FileSystemWatcher, M as LikeC4DocumentValidator, N as LikeC4MCPServer, O as LangiumDocuments, P as LikeC4MCPServerFactory, S as LikeC4ModelBuilder, T as FqnIndex, W as FileSystemModuleContext, Y as LikeC4ManualLayoutsModuleContext, _ as LikeC4Views, a as LikeC4CodeActionProvider, b as LikeC4ModelLocator, c as LikeC4DocumentLinkProvider, d as LikeC4CodeLensProvider, et as LikeC4DocumentationProvider, f as LikeC4LanguageServices, g as LikeC4ModelParser, i as LikeC4SemanticTokenProvider, j as LikeC4NameProvider, k as IndexManager, l as LikeC4DocumentHighlightProvider, m as LikeC4ValueConverter, n as NodeKindProvider$1, o as LikeC4HoverProvider, p as LikeC4ModelChanges, r as Rpc, s as LikeC4DocumentSymbolProvider, t as WorkspaceSymbolProvider, u as LikeC4CompletionProvider, w as DeploymentsIndex, y as NoMCPServer } from "./_chunks/index.mjs";
2
- import "./filesystem/index.mjs";
3
- import { Module, WorkspaceCache } from "langium";
4
- import { DefaultSharedModuleContext, LangiumServices, LangiumSharedServices, PartialLangiumServices } from "langium/lsp";
5
- import { QueueGraphvizLayoter } from "@likec4/layouts";
6
-
7
- //#region src/module.d.ts
8
- type LanguageServicesContext = Omit<DefaultSharedModuleContext, 'fileSystemProvider'> & FileSystemModuleContext & LikeC4MCPServerModuleContext & LikeC4ManualLayoutsModuleContext;
9
- interface LikeC4AddedSharedServices {
10
- lsp: {
11
- NodeKindProvider: NodeKindProvider$1;
12
- WorkspaceSymbolProvider: WorkspaceSymbolProvider;
13
- };
14
- workspace: {
15
- Cache: WorkspaceCache<string, any>;
16
- ProjectsManager: ProjectsManager;
17
- IndexManager: IndexManager;
18
- LangiumDocuments: LangiumDocuments;
19
- WorkspaceManager: LikeC4WorkspaceManager;
20
- FileSystemProvider: FileSystemProvider$1;
21
- FileSystemWatcher: FileSystemWatcher;
22
- ManualLayouts: LikeC4ManualLayouts;
23
- };
24
- }
25
- type LikeC4SharedServices = LangiumSharedServices & LikeC4AddedSharedServices;
26
- /**
27
- * Declaration of custom services - add your own service classes here.
28
- */
29
- interface LikeC4AddedServices {
30
- documentation: {
31
- DocumentationProvider: LikeC4DocumentationProvider;
32
- };
33
- validation: {
34
- DocumentValidator: LikeC4DocumentValidator;
35
- };
36
- Rpc: Rpc;
37
- mcp: {
38
- Server: LikeC4MCPServer;
39
- ServerFactory: LikeC4MCPServerFactory;
40
- };
41
- likec4: {
42
- LanguageServices: LikeC4LanguageServices;
43
- Views: LikeC4Views;
44
- Layouter: QueueGraphvizLayoter;
45
- DeploymentsIndex: DeploymentsIndex;
46
- FqnIndex: FqnIndex;
47
- ModelParser: LikeC4ModelParser;
48
- ModelBuilder: LikeC4ModelBuilder;
49
- ModelLocator: LikeC4ModelLocator;
50
- ModelChanges: LikeC4ModelChanges;
51
- LastSeen: LastSeenArtifacts;
52
- };
53
- lsp: {
54
- CompletionProvider: LikeC4CompletionProvider;
55
- DocumentHighlightProvider: LikeC4DocumentHighlightProvider;
56
- DocumentSymbolProvider: LikeC4DocumentSymbolProvider;
57
- SemanticTokenProvider: LikeC4SemanticTokenProvider;
58
- HoverProvider: LikeC4HoverProvider;
59
- CodeLensProvider: LikeC4CodeLensProvider;
60
- DocumentLinkProvider: LikeC4DocumentLinkProvider;
61
- Formatter: LikeC4Formatter;
62
- CodeActionProvider: LikeC4CodeActionProvider;
63
- };
64
- references: {
65
- NameProvider: LikeC4NameProvider;
66
- ScopeComputation: LikeC4ScopeComputation;
67
- ScopeProvider: LikeC4ScopeProvider;
68
- };
69
- shared?: LikeC4SharedServices;
70
- parser: {
71
- ValueConverter: LikeC4ValueConverter;
72
- };
73
- }
74
- type LikeC4Services = LangiumServices & LikeC4AddedServices;
75
- /**
76
- * Most probably you don't need to use this function directly.
77
- * Use {@link createLanguageServices} instead.
78
- * @internal
79
- */
80
- declare function createLikeC4Module(context: LikeC4MCPServerModuleContext): Module<LikeC4Services, PartialLangiumServices & LikeC4AddedServices>;
81
- /**
82
- * Create and initialize likec4 language services with the given context
83
- * @example
84
- * ```ts
85
- * const { shared, likec4 } = createLanguageServices({
86
- * ...WithFileSystem(enableWatcher = true),
87
- * ...WithLikeC4ManualLayouts(),
88
- * ...NoMcpServer(),
89
- * });
90
- * ```
91
- *
92
- * It is possible to extend/override the context with additional modules
93
- * See Langium documentation for more details (or at the CliContext in packages/likec4/src/language/module.ts).
94
- */
95
- declare function createLanguageServices(): {
96
- shared: LikeC4SharedServices;
97
- likec4: LikeC4Services;
98
- };
99
- declare function createLanguageServices(context: Partial<LanguageServicesContext>): {
100
- shared: LikeC4SharedServices;
101
- likec4: LikeC4Services;
102
- };
103
- declare function createLanguageServices(context: Partial<LanguageServicesContext>): {
104
- shared: LikeC4SharedServices;
105
- likec4: LikeC4Services;
106
- };
107
- declare function createLanguageServices<I1, I extends I1 & LikeC4Services>(context: Partial<LanguageServicesContext>, module: Module<I, I1> | undefined): {
108
- shared: LikeC4SharedServices;
109
- likec4: I;
110
- };
111
- declare function createLanguageServices<I1, I2, I extends I1 & I2 & LikeC4Services>(context: Partial<LanguageServicesContext>, module: Module<I, I1>, module2: Module<I, I2>): {
112
- shared: LikeC4SharedServices;
113
- likec4: I;
114
- };
115
- declare function createLanguageServices<I1, I2, I3, I extends I1 & I2 & I3 & LikeC4Services>(context: Partial<LanguageServicesContext>, module: Module<I, I1>, module2: Module<I, I2>, module3: Module<I, I3>): {
116
- shared: LikeC4SharedServices;
117
- likec4: I;
118
- };
119
- /**
120
- * Most probably you don't need to use this function directly.
121
- * Use {@link createLanguageServices} instead.
122
- * @internal
123
- */
124
- declare function createSharedServices(context?: Partial<LanguageServicesContext>): LikeC4SharedServices;
125
- //#endregion
1
+ import { D as NoFileSystem, a as createLanguageServices, i as LikeC4SharedServices, k as NoLikeC4ManualLayouts, m as NoMCPServer, n as LikeC4AddedServices, o as createLikeC4Module, r as LikeC4Services, s as createSharedServices, t as LanguageServicesContext } from "./_chunks/module.mjs";
2
+ import "./_chunks/protocol.mjs";
126
3
  export { LanguageServicesContext, LikeC4AddedServices, LikeC4Services, LikeC4SharedServices, NoFileSystem, NoLikeC4ManualLayouts, NoMCPServer, createLanguageServices, createLikeC4Module, createSharedServices };
package/dist/module.mjs CHANGED
@@ -1 +1 @@
1
- import{Cr as NoFileSystem,Tr as NoLikeC4ManualLayouts,a as LikeC4GeneratedSharedModule,i as LikeC4GeneratedModule}from"./_chunks/utils.mjs";import{A as AstNodeDescriptionProvider,C as LikeC4DocumentHighlightProvider,D as LikeC4WorkspaceManager,E as DefaultLikeC4LanguageServices,M as LikeC4DocumentationProvider,O as LangiumDocuments,S as LikeC4DocumentLinkProvider,T as LikeC4CodeLensProvider,_ as FqnIndex,a as LikeC4ScopeProvider,b as LikeC4HoverProvider,c as LikeC4ModelChanges,d as registerValidationChecks,f as LikeC4DocumentValidator,g as DeploymentsIndex,h as LastSeenArtifacts,i as Rpc,j as LikeC4Formatter,k as IndexManager,l as LikeC4ValueConverter,m as DefaultLikeC4ModelBuilder,n as WorkspaceSymbolProvider,o as LikeC4ScopeComputation,p as LikeC4ModelLocator,r as NodeKindProvider$1,s as LikeC4NameProvider,t as DefaultLikeC4Views,u as LikeC4ModelParser,v as LikeC4SemanticTokenProvider,w as LikeC4CompletionProvider,x as LikeC4DocumentSymbolProvider,y as LikeC4CodeActionProvider}from"./_chunks/LikeC4Views.mjs";import{n as NoMCPServer,t as ProjectsManager}from"./_chunks/ProjectsManager.mjs";import{DocumentState,WorkspaceCache,inject}from"langium";import{onNextTick}from"@likec4/core/utils";import{createDefaultModule,createDefaultSharedModule}from"langium/lsp";import{GraphvizWasmAdapter,QueueGraphvizLayoter}from"@likec4/layouts";function createLikeC4SharedModule(e){return{lsp:{NodeKindProvider:e=>new NodeKindProvider$1(e),WorkspaceSymbolProvider:e=>new WorkspaceSymbolProvider(e)},workspace:{Cache:e=>new WorkspaceCache(e,DocumentState.Validated),IndexManager:e=>new IndexManager(e),LangiumDocuments:e=>new LangiumDocuments(e),ProjectsManager:e=>new ProjectsManager(e),WorkspaceManager:e=>new LikeC4WorkspaceManager(e),FileSystemProvider:()=>e.fileSystemProvider(),FileSystemWatcher:t=>e.fileSystemWatcher(t),ManualLayouts:t=>e.manualLayouts(t)}}}function bind(e){return t=>new e(t)}function createLikeC4Module(e){return{documentation:{DocumentationProvider:bind(LikeC4DocumentationProvider)},validation:{DocumentValidator:bind(LikeC4DocumentValidator)},Rpc:bind(Rpc),mcp:{Server:t=>e.mcpServer(t),ServerFactory:t=>e.mcpServerFactory(t)},likec4:{LanguageServices:bind(DefaultLikeC4LanguageServices),Layouter:e=>new QueueGraphvizLayoter({graphviz:new GraphvizWasmAdapter}),Views:bind(DefaultLikeC4Views),DeploymentsIndex:bind(DeploymentsIndex),ModelChanges:bind(LikeC4ModelChanges),FqnIndex:bind(FqnIndex),ModelParser:bind(LikeC4ModelParser),ModelBuilder:bind(DefaultLikeC4ModelBuilder),ModelLocator:bind(LikeC4ModelLocator),LastSeen:bind(LastSeenArtifacts)},lsp:{CompletionProvider:bind(LikeC4CompletionProvider),DocumentHighlightProvider:bind(LikeC4DocumentHighlightProvider),DocumentSymbolProvider:bind(LikeC4DocumentSymbolProvider),SemanticTokenProvider:bind(LikeC4SemanticTokenProvider),HoverProvider:bind(LikeC4HoverProvider),CodeLensProvider:bind(LikeC4CodeLensProvider),DocumentLinkProvider:bind(LikeC4DocumentLinkProvider),Formatter:bind(LikeC4Formatter),CodeActionProvider:bind(LikeC4CodeActionProvider)},workspace:{AstNodeDescriptionProvider:bind(AstNodeDescriptionProvider)},references:{NameProvider:bind(LikeC4NameProvider),ScopeComputation:bind(LikeC4ScopeComputation),ScopeProvider:bind(LikeC4ScopeProvider)},parser:{ValueConverter:bind(LikeC4ValueConverter)}}}function createLanguageServices(n={},i,a,o){let s=createSharedServices(n),c=inject([createDefaultModule({shared:s}),LikeC4GeneratedModule,createLikeC4Module({...NoMCPServer,...NoFileSystem,...NoLikeC4ManualLayouts,...n}),i,a,o].reduce(_merge,{}));return s.ServiceRegistry.register(c),registerValidationChecks(c),n.connection?onNextTick(()=>c.Rpc.init()):s.workspace.ConfigurationProvider.initialized({}),{shared:s,likec4:c}}function createSharedServices(r={}){let i={...NoMCPServer,...NoFileSystem,...NoLikeC4ManualLayouts,...r};return inject(createDefaultSharedModule(i),LikeC4GeneratedSharedModule,createLikeC4SharedModule(i))}function _merge(e,t){if(t){for(let[n,r]of Object.entries(t))if(r!==void 0){let t=e[n];t!==null&&r!==null&&typeof t==`object`&&typeof r==`object`?e[n]=_merge(t,r):e[n]=r}}return e}export{NoFileSystem,NoLikeC4ManualLayouts,NoMCPServer,createLanguageServices,createLikeC4Module,createSharedServices};
1
+ import"./_chunks/likec4lib.mjs";import{r as e,t}from"./_chunks/noop.mjs";import"./_chunks/utils.mjs";import"./_chunks/libs/remeda.mjs";import{o as n}from"./_chunks/workspace.mjs";import{n as r,r as i,t as a}from"./_chunks/module.mjs";import"./_chunks/libs/picomatch.mjs";import"./_chunks/libs/ufo.mjs";import"./_chunks/libs/parse-ms.mjs";import"./_chunks/libs/pretty-ms.mjs";import"./_chunks/libs/fast-equals.mjs";import"./_chunks/libs/@msgpack/msgpack.mjs";import"./_chunks/libs/strip-indent.mjs";export{t as NoFileSystem,e as NoLikeC4ManualLayouts,n as NoMCPServer,a as createLanguageServices,r as createLikeC4Module,i as createSharedServices};