likec4 1.44.0 → 1.45.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.
@@ -1,10 +1,10 @@
1
1
  import * as _likec4_core from '@likec4/core';
2
- import { Fqn, EdgeId, AnyAux, aux, ComputedView, LikeC4Styles, DiagramView, ProjectId, NonEmptyArray, NonEmptyReadonlyArray, UnknownParsed, UnknownComputed, ViewId, RelationId, DeploymentFqn, ViewChange, LayoutedView, UnknownLayouted } from '@likec4/core';
2
+ import { Fqn, EdgeId, AnyAux, aux, ComputedView, LikeC4Styles, DiagramView, ProjectId, NonEmptyArray, NonEmptyReadonlyArray, UnknownParsed, UnknownComputed, ViewId, RelationId, DeploymentFqn, ViewChange, LayoutedView, LayoutType, UnknownLayouted } from '@likec4/core';
3
3
  import * as type_fest from 'type-fest';
4
4
  import { Tagged, ValueOf, ConditionalPick, Writable, Simplify, MergeExclusive } from 'type-fest';
5
- import { U as URI$1, L as LikeC4ProjectConfig, a as LikeC4ProjectConfigInput } from './likec4.CyRRoRaV.mjs';
5
+ import { U as URI$1, L as LikeC4ProjectConfig, a as LikeC4ProjectConfigInput } from './likec4.DVpfjKrU.mjs';
6
6
  import { LikeC4Model } from '@likec4/core/model';
7
- import { scalar, ProjectId as ProjectId$1, Fqn as Fqn$1 } from '@likec4/core/types';
7
+ import { ProjectId as ProjectId$1, scalar, Fqn as Fqn$1 } from '@likec4/core/types';
8
8
  import { MultiMap as MultiMap$1, DefaultWeakMap } from '@likec4/core/utils';
9
9
 
10
10
  /**
@@ -15710,13 +15710,14 @@ declare class LangiumDocuments extends DefaultLangiumDocuments {
15710
15710
  protected compare: (a: string | undefined, b: string | undefined) => number;
15711
15711
  constructor(services: LikeC4SharedServices);
15712
15712
  addDocument(document: LangiumDocument): void;
15713
+ getDocument(uri: URI$1): LikeC4LangiumDocument | undefined;
15714
+ get all(): Stream<LikeC4LangiumDocument>;
15713
15715
  /**
15714
15716
  * Returns all user documents, excluding built-in documents.
15715
15717
  */
15716
15718
  get allExcludingBuiltin(): Stream<LikeC4LangiumDocument>;
15717
15719
  projectDocuments(projectId: ProjectId): Stream<LikeC4LangiumDocument>;
15718
15720
  groupedByProject(): Record<ProjectId, NonEmptyArray<LikeC4LangiumDocument>>;
15719
- resetProjectIds(): void;
15720
15721
  }
15721
15722
 
15722
15723
  /**
@@ -15744,7 +15745,7 @@ declare class ProjectsManager {
15744
15745
  * The global project ID used for all documents
15745
15746
  * that are not part of a specific project.
15746
15747
  */
15747
- static readonly DefaultProjectId: scalar.ProjectId<string>;
15748
+ static readonly DefaultProjectId: ProjectId$1<string>;
15748
15749
  constructor(services: LikeC4SharedServices);
15749
15750
  /**
15750
15751
  * Returns:
@@ -15755,6 +15756,7 @@ declare class ProjectsManager {
15755
15756
  */
15756
15757
  get defaultProjectId(): scalar.ProjectId | undefined;
15757
15758
  set defaultProjectId(id: string | scalar.ProjectId | undefined);
15759
+ get default(): ProjectData;
15758
15760
  get all(): NonEmptyReadonlyArray<scalar.ProjectId>;
15759
15761
  getProject(arg: scalar.ProjectId | LangiumDocument): Project;
15760
15762
  /**
@@ -15779,32 +15781,35 @@ declare class ProjectsManager {
15779
15781
  */
15780
15782
  isConfigFile(entry: URI$1): boolean;
15781
15783
  /**
15782
- * Checks if the provided file system entry is a valid project config file.
15783
- *
15784
- * @param entry The file system entry to check
15784
+ * Registers likec4 project by config file.
15785
15785
  */
15786
- registerConfigFile(configFile: URI$1): Promise<ProjectData | undefined>;
15786
+ registerConfigFile(configFile: URI$1): Promise<ProjectData>;
15787
15787
  /**
15788
15788
  * Registers (or reloads) likec4 project by config file or config object.
15789
15789
  * If there is some project registered at same folder, it will be reloaded.
15790
15790
  */
15791
- registerProject(opts: URI$1 | {
15792
- config: LikeC4ProjectConfigInput;
15791
+ registerProject(opts: {
15792
+ config: LikeC4ProjectConfig | LikeC4ProjectConfigInput;
15793
15793
  folderUri: URI$1 | string;
15794
15794
  }): Promise<ProjectData>;
15795
15795
  /**
15796
- * Registers (or reloads) likec4 project by config file or config object.
15797
- * If there is some project registered at same folder, it will be reloaded.
15796
+ * Determines which project the given document belongs to.
15797
+ * If the document does not belong to any project, returns the default project ID.
15798
15798
  */
15799
- private _registerProject;
15800
15799
  belongsTo(document: LangiumDocument | URI$1 | string): scalar.ProjectId;
15801
15800
  reloadProjects(): Promise<void>;
15802
15801
  protected _reloadProjects(): Promise<void>;
15803
15802
  protected uniqueProjectId(name: string): scalar.ProjectId;
15804
- protected resetProjectIds(): void;
15805
- protected rebuidDocuments(cancelToken?: CancellationToken$1): Promise<void>;
15806
- protected findProjectForDocument(documentUri: string): Pick<ProjectData, "id" | "exclude" | "config">;
15807
- protected get mappingsToProject(): WorkspaceCache<string, Pick<ProjectData, 'id' | 'config' | 'exclude'>>;
15803
+ protected reset(): void;
15804
+ rebuidProject(projectId: ProjectId$1, cancelToken?: CancellationToken$1): Promise<void>;
15805
+ protected findProjectForDocument(documentUri: string): ProjectData;
15806
+ protected get mappingsToProject(): WorkspaceCache<string, ProjectData>;
15807
+ /**
15808
+ * The mapping between documents and projects they belong to.
15809
+ * Lazy-created due to initialization order of the LanguageServer
15810
+ */
15811
+ protected get documentBelongsTo(): WorkspaceCache<LangiumDocument, ProjectData>;
15812
+ private getWorkspaceFolder;
15808
15813
  }
15809
15814
 
15810
15815
  declare class LikeC4WorkspaceManager extends DefaultWorkspaceManager {
@@ -15878,12 +15883,11 @@ declare abstract class ADisposable implements Disposable$1 {
15878
15883
 
15879
15884
  declare class FqnIndex<AstNd = Element> extends ADisposable {
15880
15885
  protected services: LikeC4Services;
15881
- private cachePrefix;
15882
15886
  protected projects: ProjectsManager;
15883
15887
  protected langiumDocuments: LangiumDocuments;
15884
15888
  protected documentCache: DefaultWeakMap<LikeC4LangiumDocument, DocumentFqnIndex>;
15885
15889
  protected workspaceCache: WorkspaceCache<string, AstNodeDescriptionWithFqn[]>;
15886
- constructor(services: LikeC4Services, cachePrefix?: string);
15890
+ constructor(services: LikeC4Services);
15887
15891
  private documents;
15888
15892
  get(document: LikeC4LangiumDocument): DocumentFqnIndex;
15889
15893
  resolve(reference: Referenceable): Fqn$1;
@@ -16728,8 +16732,8 @@ declare namespace Locate {
16728
16732
  projectId?: string | undefined;
16729
16733
  };
16730
16734
  type Res = Location | null;
16731
- const Req: RequestType<Params, Res, void>;
16732
- type Req = typeof Req;
16735
+ const req: RequestType<Params, Res, void>;
16736
+ type Req = typeof req;
16733
16737
  }
16734
16738
  /**
16735
16739
  * Request to change the view
@@ -16741,9 +16745,16 @@ declare namespace ChangeView {
16741
16745
  change: ViewChange;
16742
16746
  projectId?: string | undefined;
16743
16747
  };
16744
- type Res = Location | null;
16745
- const Req: RequestType<Params, Res, void>;
16746
- type Req = typeof Req;
16748
+ type Res = {
16749
+ success: true;
16750
+ location: Location | null;
16751
+ } | {
16752
+ success: false;
16753
+ location?: Location | null;
16754
+ error: string;
16755
+ };
16756
+ const req: RequestType<Params, Res, void>;
16757
+ type Req = typeof req;
16747
16758
  }
16748
16759
 
16749
16760
  type GraphvizOut = {
@@ -16755,6 +16766,18 @@ type GraphvizSvgOut = {
16755
16766
  readonly dot: string;
16756
16767
  readonly svg: string;
16757
16768
  };
16769
+ type LayoutViewParams = {
16770
+ viewId: ViewId;
16771
+ /**
16772
+ * Type of layout to apply
16773
+ * - 'manual' - applies manual layout if any
16774
+ * - 'auto' - returns latest version with drifts from manual layout if any
16775
+ * - undefined - returns latest layout as is
16776
+ */
16777
+ layoutType?: LayoutType | undefined;
16778
+ projectId?: ProjectId | undefined;
16779
+ cancelToken?: CancellationToken$1 | undefined;
16780
+ };
16758
16781
  interface LikeC4Views {
16759
16782
  readonly layouter: GraphvizLayouter;
16760
16783
  /**
@@ -16762,14 +16785,18 @@ interface LikeC4Views {
16762
16785
  */
16763
16786
  computedViews(projectId?: ProjectId | undefined, cancelToken?: CancellationToken$1): Promise<ComputedView[]>;
16764
16787
  /**
16765
- * Returns all layouted views (without manual layout)
16788
+ * Layouts all views (ignoring any manual snapshots)
16766
16789
  */
16767
16790
  layoutAllViews(projectId?: ProjectId | undefined, cancelToken?: CancellationToken$1): Promise<GraphvizOut[]>;
16768
16791
  /**
16769
- * Layouts a view (from sources, i.e. without manual layout)
16792
+ * Layouts a view.
16793
+ * If layoutType is 'manual' - applies manual layout if any.
16794
+ * If layoutType is 'auto' - returns latest version with drifts from manual layout if any
16795
+ * If not specified - returns latest layout as is
16796
+ *
16770
16797
  * If view not found in model, but there is a snapshot - it will be returned (with empty DOT)
16771
16798
  */
16772
- layoutView(viewId: ViewId, projectId?: ProjectId | undefined, cancelToken?: CancellationToken$1): Promise<GraphvizOut | null>;
16799
+ layoutView(params: LayoutViewParams): Promise<GraphvizOut | null>;
16773
16800
  /**
16774
16801
  * Returns diagrams.
16775
16802
  * If diagram has manual layout, it will be used.
@@ -16814,6 +16841,7 @@ interface LikeC4LanguageServices {
16814
16841
  };
16815
16842
  /**
16816
16843
  * Returns diagrams (i.e. views with layout computed) for the specified project
16844
+ * if diagram has manual layout, it will be used
16817
16845
  * If no project is specified, returns diagrams for default project
16818
16846
  */
16819
16847
  diagrams(project?: ProjectId | undefined, cancelToken?: CancellationToken$1): Promise<DiagramView[]>;
@@ -16825,14 +16853,6 @@ interface LikeC4LanguageServices {
16825
16853
  range: Range$1;
16826
16854
  sourceFsPath: string;
16827
16855
  }>;
16828
- /**
16829
- * Notifies the language server about changes in the workspace
16830
- * @deprecated use watcher instead
16831
- */
16832
- notifyUpdate(update: {
16833
- changed?: string;
16834
- removed?: string;
16835
- }): Promise<boolean>;
16836
16856
  /**
16837
16857
  * Returns the location of the specified element, relation, view or deployment element
16838
16858
  */
@@ -54558,7 +54578,7 @@ declare class LikeC4ModelChanges {
54558
54578
  private services;
54559
54579
  private locator;
54560
54580
  constructor(services: LikeC4Services);
54561
- applyChange(changeView: ChangeView.Params): Promise<Location | null>;
54581
+ applyChange(changeView: ChangeView.Params): Promise<ChangeView.Res>;
54562
54582
  protected convertToTextEdit({ lookup, change }: {
54563
54583
  lookup: ViewLocateResult;
54564
54584
  change: Exclude<ViewChange, ViewChange.SaveViewSnapshot | ViewChange.ResetManualLayout>;
@@ -1,7 +1,7 @@
1
- import { L as LikeC4LanguageServices } from '../shared/likec4.97TpL3Hf.mjs';
1
+ import { L as LikeC4LanguageServices } from '../shared/likec4.YFH8qb4R.mjs';
2
2
  import '@likec4/core';
3
3
  import 'type-fest';
4
- import '../shared/likec4.CyRRoRaV.mjs';
4
+ import '../shared/likec4.DVpfjKrU.mjs';
5
5
  import '@likec4/core/model';
6
6
  import '@likec4/core/types';
7
7
  import '@likec4/core/styles';
@@ -1 +1 @@
1
- export{L as LikeC4VitePlugin}from"../shared/likec4.CXaeDwoC.mjs";
1
+ export{L as LikeC4VitePlugin}from"../shared/likec4.DH1Cjktk.mjs";
@@ -1,7 +1,7 @@
1
- import{LikeC4Model as U}from"@likec4/core/model";import{useRef as _,useCallback as x,useSyncExternalStore as R,useState as A,useEffect as V}from"react";import{t as L}from"../shared/likec4.DO_7oUns.mjs";import{a as C}from"../shared/likec4.DOUP9ptn.mjs";let T=Symbol("clean"),a=[],o=0;const m=4;let g=0,M=e=>{let n=[],t={get(){return t.lc||t.listen(()=>{})(),t.value},lc:0,listen(l){return t.lc=n.push(l),()=>{for(let u=o+m;u<a.length;)a[u]===l?a.splice(u,m):u+=m;let i=n.indexOf(l);~i&&(n.splice(i,1),
2
- --t.lc||t.off())}},notify(l,i){g++;let u=!a.length;for(let r of n)a.push(r,t.value,l,i);if(u){for(o=0;o<a.length;o+=m)a[o](a[o+1],a[o+2],a[o+3]);a.length=0}},off(){},set(l){let i=t.value;i!==l&&(t.value=l,t.notify(i))},subscribe(l){let i=t.listen(l);return l(t.value),i},value:e};return process.env.NODE_ENV!=="production"&&(t[T]=()=>{n=[],t.lc=0,t.off()}),t};const I=5,v=6,E=10;let D=(e,n,t,l)=>(e.events=e.events||{},e.events[t+E]||(e.events[t+E]=l(i=>{e.events[t].reduceRight((u,r)=>(r(u),u),{shared:{},
1
+ import{LikeC4Model as U}from"@likec4/core/model";import{useRef as _,useCallback as x,useSyncExternalStore as R,useState as A,useEffect as V}from"react";import{t as L}from"../shared/likec4.DO_7oUns.mjs";import{a as C}from"../shared/likec4.DOUP9ptn.mjs";let T=Symbol("clean"),o=[],a=0;const m=4;let g=0;const M=e=>{let n=[],t={get(){return t.lc||t.listen(()=>{})(),t.value},lc:0,listen(l){return t.lc=n.push(l),()=>{for(let u=a+m;u<o.length;)o[u]===l?o.splice(u,m):u+=m;let i=n.indexOf(l);~i&&(n.splice(
2
+ i,1),--t.lc||t.off())}},notify(l,i){g++;let u=!o.length;for(let r of n)o.push(r,t.value,l,i);if(u){for(a=0;a<o.length;a+=m)o[a](o[a+1],o[a+2],o[a+3]);o.length=0}},off(){},set(l){let i=t.value;i!==l&&(t.value=l,t.notify(i))},subscribe(l){let i=t.listen(l);return l(t.value),i},value:e};return process.env.NODE_ENV!=="production"&&(t[T]=()=>{n=[],t.lc=0,t.off()}),t},I=5,v=6,E=10;let D=(e,n,t,l)=>(e.events=e.events||{},e.events[t+E]||(e.events[t+E]=l(i=>{e.events[t].reduceRight((u,r)=>(r(u),u),{shared:{},
3
3
  ...i})})),e.events[t]=e.events[t]||[],e.events[t].push(n),()=>{let i=e.events[t],u=i.indexOf(n);i.splice(u,1),i.length||(delete e.events[t],e.events[t+E](),delete e.events[t+E])}),Q=1e3,b=(e,n)=>D(e,l=>{let i=n(l);i&&e.events[v].push(i)},I,l=>{let i=e.listen;e.listen=(...r)=>(!e.lc&&!e.active&&(e.active=!0,l()),i(...r));let u=e.off;if(e.events[v]=[],e.off=()=>{u(),setTimeout(()=>{if(e.active&&!e.lc){e.active=!1;for(let r of e.events[v])r();e.events[v]=[]}},Q)},process.env.NODE_ENV!=="production"){
4
- let r=e[T];e[T]=()=>{for(let s of e.events[v])s();e.events[v]=[],e.active=!1,r()}}return()=>{e.listen=i,e.off=u}}),w=(e,n,t)=>{Array.isArray(e)||(e=[e]);let l,i,u=()=>{if(i===g)return;i=g;let c=e.map(f=>f.get());if(!l||c.some((f,h)=>f!==l[h])){l=c;let f=n(...c);f&&f.then&&f.t?f.then(h=>{l===c&&r.set(h)}):(r.set(f),i=g)}},r=M(void 0),s=r.get;r.get=()=>(u(),s());let d,p=t?()=>{clearTimeout(d),d=setTimeout(u)}:u;return b(r,()=>{let c=e.map(f=>f.listen(p));return u(),()=>{for(let f of c)f()}}),r},N=(e,n)=>w(
5
- e,n),k=(e,n)=>w(e,n,!0);function q(e,n,t){let l=new Set(n).add(void 0);return e.listen((i,u,r)=>{l.has(r)&&t(i,u,r)})}let F=(e={})=>{let n=M(e);return n.setKey=function(t,l){let i=n.value;typeof l>"u"&&t in n.value?(n.value={...n.value},delete n.value[t],n.notify(i,t)):n.value[t]!==l&&(n.value={...n.value,[t]:l},n.notify(i,t))},n},O=(e,n)=>t=>{e.current!==t&&(e.current=t,n())};function S(e,{keys:n,deps:t=[e,n]}={}){let l=_();l.current=e.get();let i=x(r=>(O(l,r)(e.value),n?.length>0?q(e,n,O(l,r)):
6
- e.listen(O(l,r))),t),u=()=>l.current;return R(i,u,u)}const H=e=>{const n=N(e,s=>U.create(s));function t(s){const d=e.get();if(L(d,s))return;const p={...s,views:C(s.views,c=>{const f=d.views[c.id];return L(f,c)?f:c})};e.set(p)}const l=N(e,s=>Object.values(s.views));function i(){return S(n)}function u(){return S(l)}function r(s){const[d,p]=A(e.value?.views[s]??null);return V(()=>e.subscribe(c=>{p(c.views[s]??null)}),[s]),d}return{updateModel:t,$likec4model:n,useLikeC4Model:i,useLikeC4Views:u,useLikeC4View:r}};
7
- export{M as atom,k as batched,N as computed,H as createHooksForModel,F as map,S as useStore};
4
+ let r=e[T];e[T]=()=>{for(let f of e.events[v])f();e.events[v]=[],e.active=!1,r()}}return()=>{e.listen=i,e.off=u}}),w=(e,n,t)=>{Array.isArray(e)||(e=[e]);let l,i,u=()=>{if(i===g)return;i=g;let c=e.map(s=>s.get());if(!l||c.some((s,h)=>s!==l[h])){l=c;let s=n(...c);s&&s.then&&s.t?s.then(h=>{l===c&&r.set(h)}):(r.set(s),i=g)}},r=M(void 0),f=r.get;r.get=()=>(u(),f());let d,p=t?()=>{clearTimeout(d),d=setTimeout(u)}:u;return b(r,()=>{let c=e.map(s=>s.listen(p));return u(),()=>{for(let s of c)s()}}),r};const N=(e,n)=>w(
5
+ e,n),k=(e,n)=>w(e,n,!0);function q(e,n,t){let l=new Set(n).add(void 0);return e.listen((i,u,r)=>{l.has(r)&&t(i,u,r)})}const F=(e={})=>{let n=M(e);return n.setKey=function(t,l){let i=n.value;typeof l>"u"&&t in n.value?(n.value={...n.value},delete n.value[t],n.notify(i,t)):n.value[t]!==l&&(n.value={...n.value,[t]:l},n.notify(i,t))},n};let O=(e,n)=>t=>{e.current!==t&&(e.current=t,n())};function S(e,{keys:n,deps:t=[e,n]}={}){let l=_();l.current=e.get();let i=x(r=>(O(l,r)(e.value),n?.length>0?q(e,n,O(
6
+ l,r)):e.listen(O(l,r))),t),u=()=>l.current;return R(i,u,u)}const H=e=>{const n=N(e,f=>U.create(f));function t(f){const d=e.get();if(L(d,f))return;const p={...f,views:C(f.views,c=>{const s=d.views[c.id];return L(s,c)?s:c})};e.set(p)}const l=N(e,f=>Object.values(f.views));function i(){return S(n)}function u(){return S(l)}function r(f){const[d,p]=A(e.value?.views[f]??null);return V(()=>e.subscribe(c=>{p(c.views[f]??null)}),[f]),d}return{updateModel:t,$likec4model:n,useLikeC4Model:i,useLikeC4Views:u,
7
+ useLikeC4View:r}};export{M as atom,k as batched,N as computed,H as createHooksForModel,F as map,S as useStore};
package/package.json CHANGED
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "name": "likec4",
3
3
  "description": "Toolchain for your architecture diagrams",
4
- "version": "1.44.0",
4
+ "version": "1.45.0",
5
5
  "license": "MIT",
6
6
  "homepage": "https://likec4.dev",
7
7
  "author": "Denis Davydkov <denis@davydkov.com>",
@@ -22,7 +22,6 @@
22
22
  "engines": {
23
23
  "node": "^20.19.0 || >=22.18.0"
24
24
  },
25
- "engineStrict": true,
26
25
  "bugs": "https://github.com/likec4/likec4/issues",
27
26
  "type": "module",
28
27
  "bin": "./bin/likec4.mjs",
@@ -101,20 +100,20 @@
101
100
  },
102
101
  "dependencies": {
103
102
  "@hpcc-js/wasm-graphviz": "1.15.0",
104
- "@vitejs/plugin-react": "^5.1.0",
103
+ "@vitejs/plugin-react": "^5.1.1",
105
104
  "boxen": "^8.0.1",
106
105
  "bundle-require": "^5.1.0",
107
- "esbuild": "0.25.11",
106
+ "esbuild": "0.27.0",
108
107
  "fdir": "6.4.0",
109
108
  "playwright": "1.56.1",
110
- "rollup": "^4.53.2",
111
- "std-env": "^3.9.0",
109
+ "rollup": "^4.53.3",
110
+ "std-env": "^3.10.0",
112
111
  "type-fest": "^4.41.0",
113
- "vite": "^7.2.2",
114
- "@xyflow/react": "12.9.0",
115
- "@xyflow/system": "0.0.71",
112
+ "vite": "^7.2.4",
113
+ "@xyflow/react": "12.9.3",
114
+ "@xyflow/system": "0.0.73",
116
115
  "yargs": "17.7.2",
117
- "@likec4/core": "1.44.0"
116
+ "@likec4/core": "1.45.0"
118
117
  },
119
118
  "peerDependencies": {
120
119
  "react": "^18.x || ^19.x",
@@ -123,10 +122,10 @@
123
122
  "devDependencies": {
124
123
  "@dagrejs/dagre": "1.1.5",
125
124
  "@fontsource/ibm-plex-sans": "^5.2.8",
126
- "@mantine/core": "8.3.7",
127
- "@mantine/hooks": "8.3.7",
125
+ "@mantine/core": "8.3.9",
126
+ "@mantine/hooks": "8.3.9",
128
127
  "@nanostores/react": "1.0.0",
129
- "@pandacss/dev": "^1.4.3",
128
+ "@pandacss/dev": "^1.5.1",
130
129
  "@react-hookz/web": "^25.2.0",
131
130
  "@tabler/icons-react": "3.35.0",
132
131
  "@tanstack/react-router": "^1.114.13",
@@ -134,18 +133,19 @@
134
133
  "@tanstack/router-vite-plugin": "^1.114.13",
135
134
  "@types/node": "~20.19.22",
136
135
  "@types/picomatch": "^4.0.2",
137
- "@types/react": "19.2.2",
138
- "@types/react-dom": "19.2.2",
136
+ "@types/react": "19.2.6",
137
+ "@types/react-dom": "19.2.3",
139
138
  "@types/semver": "^7.7.1",
140
139
  "@types/yargs": "^17.0.33",
140
+ "@xstate/react": "6.0.0",
141
141
  "autoprefixer": "^10.4.21",
142
142
  "clsx": "^2.1.1",
143
143
  "conf": "^13.1.0",
144
144
  "defu": "^6.1.4",
145
145
  "dts-bundle-generator": "^9.5.1",
146
- "esbuild-node-externals": "1.18.0",
146
+ "esbuild-node-externals": "1.20.1",
147
147
  "esm-env": "^1.2.2",
148
- "fast-equals": "^5.3.2",
148
+ "fast-equals": "^5.3.3",
149
149
  "get-port": "^7.1.0",
150
150
  "html-to-image": "1.11.11",
151
151
  "is-inside-container": "^1.0.0",
@@ -156,11 +156,11 @@
156
156
  "mkdirp": "^3.0.1",
157
157
  "motion": "^12.23.24",
158
158
  "nano-spawn": "^1.0.3",
159
- "nanostores": "1.0.1",
159
+ "nanostores": "1.1.0",
160
160
  "npm-run-all2": "^8.0.4",
161
161
  "p-limit": "6.2.0",
162
162
  "picomatch": "^4.0.3",
163
- "package-manager-detector": "1.3.0",
163
+ "package-manager-detector": "1.5.0",
164
164
  "package-up": "^5.0.0",
165
165
  "postcss": "8.5.6",
166
166
  "pretty-ms": "^9.2.0",
@@ -174,14 +174,14 @@
174
174
  "strip-indent": "^4.1.1",
175
175
  "tinyrainbow": "^2.0.0",
176
176
  "tsx": "4.20.6",
177
- "turbo": "2.6.0",
177
+ "turbo": "2.6.1",
178
178
  "typescript": "5.9.3",
179
179
  "ufo": "1.6.1",
180
180
  "unbuild": "3.5.0",
181
181
  "vite-plugin-dts": "^4.5.4",
182
182
  "vite-plugin-inspect": "^11.1.0",
183
183
  "vite-plugin-singlefile": "^2.2.0",
184
- "vitest": "4.0.8",
184
+ "vitest": "4.0.13",
185
185
  "vscode-jsonrpc": "8.2.1",
186
186
  "vscode-languageserver": "9.0.1",
187
187
  "vscode-languageserver-types": "3.17.5",
@@ -189,17 +189,18 @@
189
189
  "which": "^5.0.0",
190
190
  "wireit": "0.14.12",
191
191
  "zod": "^3.25.76",
192
- "@likec4/config": "1.44.0",
193
- "@likec4/diagram": "1.44.0",
194
- "@likec4/generators": "1.44.0",
192
+ "xstate": "5.24.0",
193
+ "@likec4/config": "1.45.0",
195
194
  "@likec4/devops": "1.42.0",
196
- "@likec4/icons": "1.44.0",
197
- "@likec4/language-server": "1.44.0",
198
- "@likec4/layouts": "1.44.0",
199
- "@likec4/log": "1.44.0",
200
- "@likec4/style-preset": "1.44.0",
201
- "@likec4/styles": "1.44.0",
202
- "@likec4/tsconfig": "1.44.0"
195
+ "@likec4/diagram": "1.45.0",
196
+ "@likec4/generators": "1.45.0",
197
+ "@likec4/icons": "1.45.0",
198
+ "@likec4/language-server": "1.45.0",
199
+ "@likec4/layouts": "1.45.0",
200
+ "@likec4/log": "1.45.0",
201
+ "@likec4/style-preset": "1.45.0",
202
+ "@likec4/tsconfig": "1.45.0",
203
+ "@likec4/styles": "1.45.0"
203
204
  },
204
205
  "scripts": {
205
206
  "typecheck": "tsc --build --verbose",