likec4 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.
@@ -20790,11 +20790,13 @@ function getPoints({ source, sourcePosition = Position.Bottom, target, targetPos
20790
20790
  const sourceGapPoint = { x: sourceGapped.x + sourceGapOffset.x, y: sourceGapped.y + sourceGapOffset.y }, targetGapPoint = { x: targetGapped.x + targetGapOffset.x, y: targetGapped.y + targetGapOffset.y }, maxXDistance = Math.max(Math.abs(sourceGapPoint.x - points[0].x), Math.abs(targetGapPoint.x - points[0].x)), maxYDistance = Math.max(Math.abs(sourceGapPoint.y - points[0].y), Math.abs(targetGapPoint.y - points[0].y));
20791
20791
  maxXDistance >= maxYDistance ? (centerX = (sourceGapPoint.x + targetGapPoint.x) / 2, centerY = points[0].y) : (centerX = points[0].x, centerY = (sourceGapPoint.y + targetGapPoint.y) / 2);
20792
20792
  }
20793
+ const gappedSource = { x: sourceGapped.x + sourceGapOffset.x, y: sourceGapped.y + sourceGapOffset.y }, gappedTarget = { x: targetGapped.x + targetGapOffset.x, y: targetGapped.y + targetGapOffset.y };
20793
20794
  return [[
20794
20795
  source,
20795
- { x: sourceGapped.x + sourceGapOffset.x, y: sourceGapped.y + sourceGapOffset.y },
20796
+ // we only want to add the gapped source/target if they are different from the first/last point to avoid duplicates which can cause issues with the bends
20797
+ ...gappedSource.x !== points[0].x || gappedSource.y !== points[0].y ? [gappedSource] : [],
20796
20798
  ...points,
20797
- { x: targetGapped.x + targetGapOffset.x, y: targetGapped.y + targetGapOffset.y },
20799
+ ...gappedTarget.x !== points[points.length - 1].x || gappedTarget.y !== points[points.length - 1].y ? [gappedTarget] : [],
20798
20800
  target
20799
20801
  ], centerX, centerY, defaultOffsetX, defaultOffsetY];
20800
20802
  }
@@ -20819,10 +20821,10 @@ function getSmoothStepPath({ sourceX, sourceY, sourcePosition = Position.Bottom,
20819
20821
  offset: offset2,
20820
20822
  stepPosition
20821
20823
  });
20822
- return [points.reduce((res, p, i2) => {
20823
- let segment = "";
20824
- return i2 > 0 && i2 < points.length - 1 ? segment = getBend(points[i2 - 1], p, points[i2 + 1], borderRadius) : segment = `${i2 === 0 ? "M" : "L"}${p.x} ${p.y}`, res += segment, res;
20825
- }, ""), labelX, labelY, offsetX, offsetY];
20824
+ let path = `M${points[0].x} ${points[0].y}`;
20825
+ for (let i2 = 1; i2 < points.length - 1; i2++)
20826
+ path += getBend(points[i2 - 1], points[i2], points[i2 + 1], borderRadius);
20827
+ return path += `L${points[points.length - 1].x} ${points[points.length - 1].y}`, [path, labelX, labelY, offsetX, offsetY];
20826
20828
  }
20827
20829
  function isNodeInitialized(node) {
20828
20830
  return node && !!(node.internals.handleBounds || node.handles?.length) && !!(node.measured.width || node.width || node.initialWidth);
@@ -20972,7 +20974,7 @@ function isManualZIndexMode(zIndexMode) {
20972
20974
  }
20973
20975
  function adoptUserNodes(nodes, nodeLookup, parentLookup, options = {}) {
20974
20976
  const _options = mergeObjects(adoptUserNodesDefaultOptions, options), rootParentIndex = { i: 0 }, tmpLookup = new Map(nodeLookup), selectedNodeZ = _options?.elevateNodesOnSelect && !isManualZIndexMode(_options.zIndexMode) ? SELECTED_NODE_Z : 0;
20975
- let nodesInitialized = nodes.length > 0;
20977
+ let nodesInitialized = nodes.length > 0, hasSelectedNodes = !1;
20976
20978
  nodeLookup.clear(), parentLookup.clear();
20977
20979
  for (const userNode of nodes) {
20978
20980
  let internalNode = tmpLookup.get(userNode.id);
@@ -20996,9 +20998,9 @@ function adoptUserNodes(nodes, nodeLookup, parentLookup, options = {}) {
20996
20998
  }
20997
20999
  }, nodeLookup.set(userNode.id, internalNode);
20998
21000
  }
20999
- (internalNode.measured === void 0 || internalNode.measured.width === void 0 || internalNode.measured.height === void 0) && !internalNode.hidden && (nodesInitialized = !1), userNode.parentId && updateChildNode(internalNode, nodeLookup, parentLookup, options, rootParentIndex);
21001
+ (internalNode.measured === void 0 || internalNode.measured.width === void 0 || internalNode.measured.height === void 0) && !internalNode.hidden && (nodesInitialized = !1), userNode.parentId && updateChildNode(internalNode, nodeLookup, parentLookup, options, rootParentIndex), hasSelectedNodes ||= userNode.selected ?? !1;
21000
21002
  }
21001
- return nodesInitialized;
21003
+ return { nodesInitialized, hasSelectedNodes };
21002
21004
  }
21003
21005
  function updateParentLookup(node, parentLookup) {
21004
21006
  if (!node.parentId)
@@ -21635,7 +21637,7 @@ function createPanZoomEndHandler({ zoomPanValues, panOnDrag, panOnScroll, onDrag
21635
21637
  () => {
21636
21638
  onPanZoomEnd?.(event.sourceEvent, viewport);
21637
21639
  },
21638
- // we need a setTimeout for panOnScroll to supress multiple end events fired during scroll
21640
+ // we need a setTimeout for panOnScroll to suppress multiple end events fired during scroll
21639
21641
  panOnScroll ? 150 : 0
21640
21642
  );
21641
21643
  }
@@ -22119,7 +22121,7 @@ function SelectionListener({ onSelectionChange }) {
22119
22121
  const storeHasSelectionChangeHandlers = useStore$1(changeSelector);
22120
22122
  return onSelectionChange || storeHasSelectionChangeHandlers ? jsx(SelectionListenerInner, { onSelectionChange }) : null;
22121
22123
  }
22122
- const defaultNodeOrigin = [0, 0], defaultViewport = { x: 0, y: 0, zoom: 1 }, reactFlowFieldsToTrack = [
22124
+ const useIsomorphicLayoutEffect$1 = typeof window < "u" ? useLayoutEffect$1 : useEffect, defaultNodeOrigin = [0, 0], defaultViewport = { x: 0, y: 0, zoom: 1 }, reactFlowFieldsToTrack = [
22123
22125
  "nodes",
22124
22126
  "edges",
22125
22127
  "defaultNodes",
@@ -22203,11 +22205,11 @@ const defaultNodeOrigin = [0, 0], defaultViewport = { x: 0, y: 0, zoom: 1 }, rea
22203
22205
  };
22204
22206
  function StoreUpdater(props) {
22205
22207
  const { setNodes, setEdges, setMinZoom, setMaxZoom, setTranslateExtent, setNodeExtent, reset, setDefaultNodesAndEdges } = useStore$1(selector$l, shallow$1), store = useStoreApi();
22206
- useEffect(() => (setDefaultNodesAndEdges(props.defaultNodes, props.defaultEdges), () => {
22208
+ useIsomorphicLayoutEffect$1(() => (setDefaultNodesAndEdges(props.defaultNodes, props.defaultEdges), () => {
22207
22209
  previousFields.current = initPrevValues, reset();
22208
22210
  }), []);
22209
22211
  const previousFields = useRef(initPrevValues);
22210
- return useEffect(
22212
+ return useIsomorphicLayoutEffect$1(
22211
22213
  () => {
22212
22214
  for (const fieldName of fieldsToTrack) {
22213
22215
  const fieldValue = props[fieldName], previousFieldValue = previousFields.current[fieldName];
@@ -22283,15 +22285,15 @@ const useViewportHelper = () => {
22283
22285
  return useMemo(() => ({
22284
22286
  zoomIn: (options) => {
22285
22287
  const { panZoom } = store.getState();
22286
- return panZoom ? panZoom.scaleBy(1.2, { duration: options?.duration }) : Promise.resolve(!1);
22288
+ return panZoom ? panZoom.scaleBy(1.2, options) : Promise.resolve(!1);
22287
22289
  },
22288
22290
  zoomOut: (options) => {
22289
22291
  const { panZoom } = store.getState();
22290
- return panZoom ? panZoom.scaleBy(1 / 1.2, { duration: options?.duration }) : Promise.resolve(!1);
22292
+ return panZoom ? panZoom.scaleBy(1 / 1.2, options) : Promise.resolve(!1);
22291
22293
  },
22292
22294
  zoomTo: (zoomLevel, options) => {
22293
22295
  const { panZoom } = store.getState();
22294
- return panZoom ? panZoom.scaleTo(zoomLevel, { duration: options?.duration }) : Promise.resolve(!1);
22296
+ return panZoom ? panZoom.scaleTo(zoomLevel, options) : Promise.resolve(!1);
22295
22297
  },
22296
22298
  getZoom: () => store.getState().transform[2],
22297
22299
  setViewport: async (viewport, options) => {
@@ -22429,7 +22431,6 @@ const isNode$1 = (element) => isNodeBase(element), isEdge = (element) => isEdgeB
22429
22431
  function fixedForwardRef(render) {
22430
22432
  return forwardRef(render);
22431
22433
  }
22432
- const useIsomorphicLayoutEffect$1 = typeof window < "u" ? useLayoutEffect$1 : useEffect;
22433
22434
  function useQueue(runQueue) {
22434
22435
  const [serial, setSerial] = useState(BigInt(0)), [queue] = useState(() => createQueue(() => setSerial((n2) => n2 + BigInt(1))));
22435
22436
  return useIsomorphicLayoutEffect$1(() => {
@@ -23674,7 +23675,7 @@ GraphViewComponent.displayName = "GraphView";
23674
23675
  const GraphView = memo$2(GraphViewComponent), getInitialState = ({ nodes, edges, defaultNodes, defaultEdges, width, height, fitView, fitViewOptions, minZoom = 0.5, maxZoom = 2, nodeOrigin, nodeExtent, zIndexMode = "basic" } = {}) => {
23675
23676
  const nodeLookup = /* @__PURE__ */ new Map(), parentLookup = /* @__PURE__ */ new Map(), connectionLookup = /* @__PURE__ */ new Map(), edgeLookup = /* @__PURE__ */ new Map(), storeEdges = defaultEdges ?? edges ?? [], storeNodes = defaultNodes ?? nodes ?? [], storeNodeOrigin = nodeOrigin ?? [0, 0], storeNodeExtent = nodeExtent ?? infiniteExtent;
23676
23677
  updateConnectionLookup(connectionLookup, edgeLookup, storeEdges);
23677
- const nodesInitialized = adoptUserNodes(storeNodes, nodeLookup, parentLookup, {
23678
+ const { nodesInitialized } = adoptUserNodes(storeNodes, nodeLookup, parentLookup, {
23678
23679
  nodeOrigin: storeNodeOrigin,
23679
23680
  nodeExtent: storeNodeExtent,
23680
23681
  zIndexMode
@@ -23780,14 +23781,20 @@ const GraphView = memo$2(GraphViewComponent), getInitialState = ({ nodes, edges,
23780
23781
  zIndexMode
23781
23782
  }),
23782
23783
  setNodes: (nodes2) => {
23783
- const { nodeLookup, parentLookup, nodeOrigin: nodeOrigin2, elevateNodesOnSelect, fitViewQueued, zIndexMode: zIndexMode2 } = get2(), nodesInitialized = adoptUserNodes(nodes2, nodeLookup, parentLookup, {
23784
+ const { nodeLookup, parentLookup, nodeOrigin: nodeOrigin2, elevateNodesOnSelect, fitViewQueued, zIndexMode: zIndexMode2, nodesSelectionActive } = get2(), { nodesInitialized, hasSelectedNodes } = adoptUserNodes(nodes2, nodeLookup, parentLookup, {
23784
23785
  nodeOrigin: nodeOrigin2,
23785
23786
  nodeExtent,
23786
23787
  elevateNodesOnSelect,
23787
23788
  checkEquality: !0,
23788
23789
  zIndexMode: zIndexMode2
23789
- });
23790
- fitViewQueued && nodesInitialized ? (resolveFitView(), set2({ nodes: nodes2, nodesInitialized, fitViewQueued: !1, fitViewOptions: void 0 })) : set2({ nodes: nodes2, nodesInitialized });
23790
+ }), nextNodesSelectionActive = nodesSelectionActive && hasSelectedNodes;
23791
+ fitViewQueued && nodesInitialized ? (resolveFitView(), set2({
23792
+ nodes: nodes2,
23793
+ nodesInitialized,
23794
+ fitViewQueued: !1,
23795
+ fitViewOptions: void 0,
23796
+ nodesSelectionActive: nextNodesSelectionActive
23797
+ })) : set2({ nodes: nodes2, nodesInitialized, nodesSelectionActive: nextNodesSelectionActive });
23791
23798
  },
23792
23799
  setEdges: (edges2) => {
23793
23800
  const { connectionLookup, edgeLookup } = get2();
@@ -23804,7 +23811,7 @@ const GraphView = memo$2(GraphViewComponent), getInitialState = ({ nodes, edges,
23804
23811
  }
23805
23812
  },
23806
23813
  /*
23807
- * Every node gets registerd at a ResizeObserver. Whenever a node
23814
+ * Every node gets registered at a ResizeObserver. Whenever a node
23808
23815
  * changes its dimensions, this function is called to measure the
23809
23816
  * new dimensions and update the nodes.
23810
23817
  */
@@ -23985,7 +23992,7 @@ function ReactFlow({ nodes, edges, defaultNodes, defaultEdges, className, nodeTy
23985
23992
  const rfId = id2 || "1", colorModeClassName = useColorModeClass(colorMode), wrapperOnScroll = useCallback((e2) => {
23986
23993
  e2.currentTarget.scrollTo({ top: 0, left: 0, behavior: "instant" }), onScroll?.(e2);
23987
23994
  }, [onScroll]);
23988
- return jsx("div", { "data-testid": "rf__wrapper", ...rest, onScroll: wrapperOnScroll, style: { ...style2, ...wrapperStyle }, ref, className: cc(["react-flow", className, colorModeClassName]), id: id2, role: "application", children: jsxs(Wrapper, { nodes, edges, width, height, fitView, fitViewOptions, minZoom, maxZoom, nodeOrigin, nodeExtent, zIndexMode, children: [jsx(GraphView, { onInit, onNodeClick, onEdgeClick, onNodeMouseEnter, onNodeMouseMove, onNodeMouseLeave, onNodeContextMenu, onNodeDoubleClick, nodeTypes, edgeTypes, connectionLineType, connectionLineStyle, connectionLineComponent, connectionLineContainerStyle, selectionKeyCode, selectionOnDrag, selectionMode, deleteKeyCode, multiSelectionKeyCode, panActivationKeyCode, zoomActivationKeyCode, onlyRenderVisibleElements, defaultViewport: defaultViewport$1, translateExtent, minZoom, maxZoom, preventScrolling, zoomOnScroll, zoomOnPinch, zoomOnDoubleClick, panOnScroll, panOnScrollSpeed, panOnScrollMode, panOnDrag, onPaneClick, onPaneMouseEnter, onPaneMouseMove, onPaneMouseLeave, onPaneScroll, onPaneContextMenu, paneClickDistance, nodeClickDistance, onSelectionContextMenu, onSelectionStart, onSelectionEnd, onReconnect, onReconnectStart, onReconnectEnd, onEdgeContextMenu, onEdgeDoubleClick, onEdgeMouseEnter, onEdgeMouseMove, onEdgeMouseLeave, reconnectRadius, defaultMarkerColor, noDragClassName, noWheelClassName, noPanClassName, rfId, disableKeyboardA11y, nodeExtent, viewport, onViewportChange }), jsx(StoreUpdater, { nodes, edges, defaultNodes, defaultEdges, onConnect, onConnectStart, onConnectEnd, onClickConnectStart, onClickConnectEnd, nodesDraggable, autoPanOnNodeFocus, nodesConnectable, nodesFocusable, edgesFocusable, edgesReconnectable, elementsSelectable, elevateNodesOnSelect, elevateEdgesOnSelect, minZoom, maxZoom, nodeExtent, onNodesChange, onEdgesChange, snapToGrid, snapGrid, connectionMode, translateExtent, connectOnClick, defaultEdgeOptions, fitView, fitViewOptions, onNodesDelete, onEdgesDelete, onDelete, onNodeDragStart, onNodeDrag, onNodeDragStop, onSelectionDrag, onSelectionDragStart, onSelectionDragStop, onMove, onMoveStart, onMoveEnd, noPanClassName, nodeOrigin, rfId, autoPanOnConnect, autoPanOnNodeDrag, autoPanSpeed, onError, connectionRadius, isValidConnection, selectNodesOnDrag, nodeDragThreshold, connectionDragThreshold, onBeforeDelete, debug: debug2, ariaLabelConfig, zIndexMode }), jsx(SelectionListener, { onSelectionChange }), children2, jsx(Attribution, { proOptions, position: attributionPosition }), jsx(A11yDescriptions, { rfId, disableKeyboardA11y })] }) });
23995
+ return jsx("div", { "data-testid": "rf__wrapper", ...rest, onScroll: wrapperOnScroll, style: { ...style2, ...wrapperStyle }, ref, className: cc(["react-flow", className, colorModeClassName]), id: id2, role: "application", children: jsxs(Wrapper, { nodes, edges, width, height, fitView, fitViewOptions, minZoom, maxZoom, nodeOrigin, nodeExtent, zIndexMode, children: [jsx(StoreUpdater, { nodes, edges, defaultNodes, defaultEdges, onConnect, onConnectStart, onConnectEnd, onClickConnectStart, onClickConnectEnd, nodesDraggable, autoPanOnNodeFocus, nodesConnectable, nodesFocusable, edgesFocusable, edgesReconnectable, elementsSelectable, elevateNodesOnSelect, elevateEdgesOnSelect, minZoom, maxZoom, nodeExtent, onNodesChange, onEdgesChange, snapToGrid, snapGrid, connectionMode, translateExtent, connectOnClick, defaultEdgeOptions, fitView, fitViewOptions, onNodesDelete, onEdgesDelete, onDelete, onNodeDragStart, onNodeDrag, onNodeDragStop, onSelectionDrag, onSelectionDragStart, onSelectionDragStop, onMove, onMoveStart, onMoveEnd, noPanClassName, nodeOrigin, rfId, autoPanOnConnect, autoPanOnNodeDrag, autoPanSpeed, onError, connectionRadius, isValidConnection, selectNodesOnDrag, nodeDragThreshold, connectionDragThreshold, onBeforeDelete, debug: debug2, ariaLabelConfig, zIndexMode }), jsx(GraphView, { onInit, onNodeClick, onEdgeClick, onNodeMouseEnter, onNodeMouseMove, onNodeMouseLeave, onNodeContextMenu, onNodeDoubleClick, nodeTypes, edgeTypes, connectionLineType, connectionLineStyle, connectionLineComponent, connectionLineContainerStyle, selectionKeyCode, selectionOnDrag, selectionMode, deleteKeyCode, multiSelectionKeyCode, panActivationKeyCode, zoomActivationKeyCode, onlyRenderVisibleElements, defaultViewport: defaultViewport$1, translateExtent, minZoom, maxZoom, preventScrolling, zoomOnScroll, zoomOnPinch, zoomOnDoubleClick, panOnScroll, panOnScrollSpeed, panOnScrollMode, panOnDrag, onPaneClick, onPaneMouseEnter, onPaneMouseMove, onPaneMouseLeave, onPaneScroll, onPaneContextMenu, paneClickDistance, nodeClickDistance, onSelectionContextMenu, onSelectionStart, onSelectionEnd, onReconnect, onReconnectStart, onReconnectEnd, onEdgeContextMenu, onEdgeDoubleClick, onEdgeMouseEnter, onEdgeMouseMove, onEdgeMouseLeave, reconnectRadius, defaultMarkerColor, noDragClassName, noWheelClassName, noPanClassName, rfId, disableKeyboardA11y, nodeExtent, viewport, onViewportChange }), jsx(SelectionListener, { onSelectionChange }), children2, jsx(Attribution, { proOptions, position: attributionPosition }), jsx(A11yDescriptions, { rfId, disableKeyboardA11y })] }) });
23989
23996
  }
23990
23997
  var index$2 = fixedForwardRef(ReactFlow);
23991
23998
  const selector$6 = (s) => s.domNode?.querySelector(".react-flow__edgelabel-renderer");
@@ -50371,6 +50378,9 @@ async function toCanvas(node, options = {}) {
50371
50378
  const { width, height } = getImageSize(node, options), svg = await toSvg(node, options), img = await createImage(svg), canvas = document.createElement("canvas"), context = canvas.getContext("2d"), ratio = options.pixelRatio || getPixelRatio(), canvasWidth = options.canvasWidth || width, canvasHeight = options.canvasHeight || height;
50372
50379
  return canvas.width = canvasWidth * ratio, canvas.height = canvasHeight * ratio, options.skipAutoScale || checkCanvasDimensions(canvas), canvas.style.width = `${canvasWidth}`, canvas.style.height = `${canvasHeight}`, options.backgroundColor && (context.fillStyle = options.backgroundColor, context.fillRect(0, 0, canvas.width, canvas.height)), context.drawImage(img, 0, 0, canvas.width, canvas.height), canvas;
50373
50380
  }
50381
+ async function toJpeg(node, options = {}) {
50382
+ return (await toCanvas(node, options)).toDataURL("image/jpeg", options.quality || 1);
50383
+ }
50374
50384
  async function toBlob(node, options = {}) {
50375
50385
  const canvas = await toCanvas(node, options);
50376
50386
  return await canvasToBlob(canvas);
@@ -52610,18 +52620,19 @@ export {
52610
52620
  useRouter as d8,
52611
52621
  useParams as d9,
52612
52622
  LoadingOverlay as dA,
52613
- toBlob as dB,
52614
- useAsync as dC,
52615
- Ut as dD,
52616
- qt as dE,
52617
- Zt as dF,
52618
- notFound as dG,
52619
- Navigate as dH,
52620
- object as dI,
52621
- literal as dJ,
52622
- stringbool as dK,
52623
- string$1 as dL,
52624
- formatError as dM,
52623
+ toJpeg as dB,
52624
+ toBlob as dC,
52625
+ useAsync as dD,
52626
+ Ut as dE,
52627
+ qt as dF,
52628
+ Zt as dG,
52629
+ notFound as dH,
52630
+ Navigate as dI,
52631
+ object as dJ,
52632
+ literal as dK,
52633
+ stringbool as dL,
52634
+ string$1 as dM,
52635
+ formatError as dN,
52625
52636
  isNotFound as da,
52626
52637
  Container as db,
52627
52638
  Code as dc,
@@ -2,7 +2,7 @@ import { jsx } from "react/jsx-runtime";
2
2
  import { LikeC4View as LikeC4View$1 } from "likec4:react";
3
3
  import { createRoot } from "react-dom/client";
4
4
  import { ComponentName } from "./const.js";
5
- import { dI as object, dJ as literal, dK as stringbool, dL as string, dM as formatError } from "./vendors.js";
5
+ import { dJ as object, dK as literal, dL as stringbool, dM as string, dN as formatError } from "./vendors.js";
6
6
  const propsSchema = object({
7
7
  viewId: string().default("index"),
8
8
  browser: stringbool().default(!0),
@@ -1,7 +1,7 @@
1
1
  # Licenses of Bundled Dependencies
2
2
 
3
3
  The published artifact additionally contains code with the following licenses:
4
- Apache-2.0, BSD-2-Clause, BSD-3-Clause, ISC, MIT, (MIT AND Zlib)
4
+ Apache-2.0, BSD-3-Clause, ISC, MIT, (MIT AND Zlib)
5
5
 
6
6
  # Bundled Dependencies
7
7
 
@@ -262,11 +262,11 @@ Repository: https://github.com/honojs/node-server
262
262
 
263
263
  ---------------------------------------
264
264
 
265
- ## @likec4/config, @likec4/generators, @likec4/language-services, @likec4/layouts, @likec4/log
265
+ ## @likec4/config, @likec4/generators, @likec4/language-services, @likec4/layouts, @likec4/log, @likec4/mcp
266
266
 
267
267
  License: MIT
268
268
  By: Denis Davydkov
269
- Repositories: https://github.com/likec4/likec4, https://github.com/likec4/likec4, https://github.com/likec4/likec4, https://github.com/likec4/likec4, https://github.com/likec4/likec4
269
+ Repositories: https://github.com/likec4/likec4, https://github.com/likec4/likec4, https://github.com/likec4/likec4, https://github.com/likec4/likec4, https://github.com/likec4/likec4, https://github.com/likec4/likec4
270
270
 
271
271
  > MIT License
272
272
  >
@@ -1000,72 +1000,6 @@ Repository: https://github.com/isaacs/isexe
1000
1000
 
1001
1001
  ---------------------------------------
1002
1002
 
1003
- ## json-schema-typed
1004
-
1005
- License: BSD-2-Clause
1006
- By: Remy Rylan
1007
- Repository: https://github.com/RemyRylan/json-schema-typed
1008
-
1009
- > BSD 2-Clause License
1010
- >
1011
- > Original source code is copyright (c) 2019-2025 Remy Rylan
1012
- > <https://github.com/RemyRylan>
1013
- >
1014
- > All JSON Schema documentation and descriptions are copyright (c):
1015
- >
1016
- > 2009 [draft-0] IETF Trust <https://www.ietf.org/>, Kris Zyp <kris@sitepen.com>,
1017
- > and SitePen (USA) <https://www.sitepen.com/>.
1018
- >
1019
- > 2009 [draft-1] IETF Trust <https://www.ietf.org/>, Kris Zyp <kris@sitepen.com>,
1020
- > and SitePen (USA) <https://www.sitepen.com/>.
1021
- >
1022
- > 2010 [draft-2] IETF Trust <https://www.ietf.org/>, Kris Zyp <kris@sitepen.com>,
1023
- > and SitePen (USA) <https://www.sitepen.com/>.
1024
- >
1025
- > 2010 [draft-3] IETF Trust <https://www.ietf.org/>, Kris Zyp <kris@sitepen.com>,
1026
- > Gary Court <gary.court@gmail.com>, and SitePen (USA) <https://www.sitepen.com/>.
1027
- >
1028
- > 2013 [draft-4] IETF Trust <https://www.ietf.org/>), Francis Galiegue
1029
- > <fgaliegue@gmail.com>, Kris Zyp <kris@sitepen.com>, Gary Court
1030
- > <gary.court@gmail.com>, and SitePen (USA) <https://www.sitepen.com/>.
1031
- >
1032
- > 2018 [draft-7] IETF Trust <https://www.ietf.org/>, Austin Wright <aaa@bzfx.net>,
1033
- > Henry Andrews <henry@cloudflare.com>, Geraint Luff <luffgd@gmail.com>, and
1034
- > Cloudflare, Inc. <https://www.cloudflare.com/>.
1035
- >
1036
- > 2019 [draft-2019-09] IETF Trust <https://www.ietf.org/>, Austin Wright
1037
- > <aaa@bzfx.net>, Henry Andrews <andrews_henry@yahoo.com>, Ben Hutton
1038
- > <bh7@sanger.ac.uk>, and Greg Dennis <gregsdennis@yahoo.com>.
1039
- >
1040
- > 2020 [draft-2020-12] IETF Trust <https://www.ietf.org/>, Austin Wright
1041
- > <aaa@bzfx.net>, Henry Andrews <andrews_henry@yahoo.com>, Ben Hutton
1042
- > <ben@jsonschema.dev>, and Greg Dennis <gregsdennis@yahoo.com>.
1043
- >
1044
- > All rights reserved.
1045
- >
1046
- > Redistribution and use in source and binary forms, with or without modification,
1047
- > are permitted provided that the following conditions are met:
1048
- >
1049
- > 1. Redistributions of source code must retain the above copyright notice, this
1050
- > list of conditions and the following disclaimer.
1051
- >
1052
- > 2. Redistributions in binary form must reproduce the above copyright notice,
1053
- > this list of conditions and the following disclaimer in the documentation
1054
- > and/or other materials provided with the distribution.
1055
- >
1056
- > THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND
1057
- > ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
1058
- > WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
1059
- > DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR
1060
- > ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
1061
- > (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
1062
- > LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON
1063
- > ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
1064
- > (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
1065
- > SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
1066
-
1067
- ---------------------------------------
1068
-
1069
1003
  ## json5
1070
1004
 
1071
1005
  License: MIT
@@ -1,4 +1,4 @@
1
- import { C as $strip, S as $strict, _ as ZodTransform, a as ZodBoolean, b as output, c as ZodEnum, d as ZodNumber, f as ZodObject, g as ZodString, h as ZodRecord, i as ZodArray, l as ZodInt, m as ZodPipe, o as ZodCustom, p as ZodOptional, r as ZodAny, s as ZodDefault, u as ZodLiteral, v as ZodUnion, x as $partial, y as input } from "./libs/@modelcontextprotocol/sdk.mjs";
1
+ import { _ as input, a as ZodDefault, b as $strict, c as ZodLiteral, d as ZodOptional, f as ZodPipe, g as ZodUnion, h as ZodTransform, i as ZodCustom, l as ZodNumber, m as ZodString, n as ZodArray, o as ZodEnum, p as ZodRecord, r as ZodBoolean, s as ZodInt, t as ZodAny, u as ZodObject, v as output, x as $strip, y as $partial } from "./libs/zod.mjs";
2
2
  import { DeploymentElementModel, DeploymentRelationModel, ElementModel, LikeC4Model, LikeC4ViewModel, RelationshipModel } from "@likec4/core/model";
3
3
  import { LikeC4ProjectStylesConfig, LikeC4ProjectTheme, ProjectId, ThemeColorValues as ThemeColorValues$1, aux } from "@likec4/core/types";
4
4
 
@@ -1,4 +1,3 @@
1
- import { n as ServerOptions, t as McpServer } from "./libs/@modelcontextprotocol/sdk.mjs";
2
1
  import { a as LikeC4ProjectConfig, i as IncludeConfig, o as LikeC4ProjectConfigInput } from "./index.mjs";
3
2
  import { $ as FileSystemProvider, A as DefaultValueConverter, B as AsyncDisposable, C as CodeLensParams, D as ValidationOptions, E as DefaultDocumentValidator, F as JSDocDocumentationProvider, G as Reference, H as AstNode, I as DefaultIndexManager, J as LangiumDocument, K as ReferenceInfo, L as ReferenceDescription, M as MaybePromise, N as DefaultScopeProvider, O as DiagnosticInfo, P as Scope, Q as FileSystemNode, R as DefaultNameProvider, S as CodeActionParams, T as DocumentSymbolParams, U as AstNodeDescription, V as Disposable$1, W as CstNode, X as PrecomputedScopes, Y as LangiumDocumentFactory, Z as Stream, _ as CodeLensProvider, _t as SymbolKind, a as LangiumServices, at as CodeAction, b as FileSelector, c as AbstractSemanticTokenProvider, ct as CompletionItemKind, d as AbstractFormatter, dt as DocumentLink, et as Keyword, f as FormattingRegion, ft as DocumentSymbol, g as DefaultDocumentHighlightProvider, gt as Range, h as DocumentLinkProvider, ht as Location, i as NextFeature, it as RequestType, j as ValueType, k as DefaultScopeComputation, l as SemanticTokenAcceptor, lt as Diagnostic, m as NodeKindProvider, mt as Hover, n as CompletionContext, nt as CancellationToken$1, o as LangiumSharedServices, ot as CodeLens, p as DocumentSymbolProvider, pt as FormattingOptions, q as DefaultLangiumDocuments, r as DefaultCompletionProvider, rt as NotificationType, s as DefaultWorkspaceSymbolProvider, st as Command, t as CompletionAcceptor, tt as URI, u as AstNodeHoverProvider, ut as DocumentHighlight, v as CodeActionProvider, vt as TextEdit, w as DocumentLinkParams, x as BuildOptions, y as DefaultWorkspaceManager, yt as WorkspaceFolder, z as WorkspaceCache } from "./libs/langium.mjs";
4
3
  import { t as $keywords } from "./libs/ts-graphviz.mjs";
@@ -430,6 +429,11 @@ declare class ProjectsManager {
430
429
  */
431
430
  static readonly DefaultProjectId: ProjectId$1;
432
431
  constructor(services: LikeC4SharedServices);
432
+ /**
433
+ * Updates the workspace-level exclude patterns from VS Code settings.
434
+ * Called during initial server startup; dynamic changes restart the server.
435
+ */
436
+ setWorkspaceExcludePatterns(patterns: string[] | undefined): void;
433
437
  /**
434
438
  * Returns:
435
439
  * - configured default project ID if set
@@ -656,18 +660,6 @@ declare class LikeC4Formatter extends AbstractFormatter {
656
660
  private getAutoQuoteStyle;
657
661
  private onConfigurationUpdate;
658
662
  } //#endregion
659
- //#region src/mcp/types.d.ts
660
- interface LikeC4MCPServer {
661
- readonly mcp: McpServer;
662
- readonly isStarted: boolean;
663
- readonly port: number;
664
- start(port?: number): Promise<void>;
665
- stop(): Promise<void>;
666
- }
667
- interface LikeC4MCPServerFactory {
668
- create(options?: ServerOptions): McpServer;
669
- }
670
- //#endregion
671
663
  //#region src/generated/ast.d.ts
672
664
  type AnyProperty = DynamicViewProperty | ElementProperty | NavigateToProperty | NotationProperty | NotesProperty | RelationProperty | RelationshipStyleProperty | StringProperty | StyleProperty | ViewProperty;
673
665
  declare const AnyProperty = "AnyProperty";
@@ -708,7 +700,7 @@ type FqnReferenceable = Element | ExtendDeployment | ExtendElement | Referenceab
708
700
  declare const FqnReferenceable = "FqnReferenceable";
709
701
  type IconId = string;
710
702
  type IconPositionValue = 'bottom' | 'left' | 'right' | 'top';
711
- type Id = 'deployment' | 'element' | 'group' | 'instance' | 'model' | 'node' | ArrowType | DynamicViewDisplayVariantValue | ElementShape | IconPositionValue | LineOptions | Participant | RankValue | SizeValue | ThemeColor | string;
703
+ type Id = 'deployment' | 'element' | 'group' | 'instance' | 'model' | 'node' | 'relationship' | ArrowType | DynamicViewDisplayVariantValue | ElementShape | IconPositionValue | LineOptions | Participant | RankValue | SizeValue | ThemeColor | string;
712
704
  type LikeC4View = DeploymentView | DynamicView | ElementView;
713
705
  declare const LikeC4View = "LikeC4View";
714
706
  type LineOptions = 'dashed' | 'dotted' | 'solid';
@@ -2195,6 +2187,11 @@ declare class LikeC4WorkspaceManager extends DefaultWorkspaceManager {
2195
2187
  * First load all project config files, then load all documents in the workspace.
2196
2188
  */
2197
2189
  protected performStartup(folders: WorkspaceFolder[]): Promise<LangiumDocument[]>;
2190
+ /**
2191
+ * Read workspace exclude patterns from configuration before workspace scan.
2192
+ * Uses a timeout fallback for third-party IDEs that may not support workspace/configuration.
2193
+ */
2194
+ private readExcludeConfig;
2198
2195
  /**
2199
2196
  * Load all additional documents that shall be visible in the context of the given workspace
2200
2197
  * folders and add them to the collector. This can be used to include built-in libraries of
@@ -2513,8 +2510,6 @@ declare class LikeC4ModelLocator {
2513
2510
  projectId?: c4.ProjectId | undefined;
2514
2511
  }): Location | null;
2515
2512
  } //#endregion
2516
- //#region src/mcp/noop.d.ts
2517
- //#endregion
2518
2513
  //#region src/views/LikeC4Views.d.ts
2519
2514
  type GraphvizOut = {
2520
2515
  readonly dot: string;
@@ -3329,7 +3324,6 @@ interface LikeC4LanguageServices {
3329
3324
  readonly workspaceUri: URI;
3330
3325
  readonly projectsManager: ProjectsManager;
3331
3326
  readonly editor: LikeC4ModelChanges;
3332
- readonly mcpServer: LikeC4MCPServer | null;
3333
3327
  /**
3334
3328
  * Returns all projects with relevant documents
3335
3329
  */
@@ -3592,10 +3586,6 @@ interface LikeC4AddedServices {
3592
3586
  DocumentValidator: LikeC4DocumentValidator;
3593
3587
  };
3594
3588
  Rpc: Rpc;
3595
- mcp: {
3596
- Server: LikeC4MCPServer;
3597
- ServerFactory: LikeC4MCPServerFactory;
3598
- };
3599
3589
  likec4: {
3600
3590
  LanguageServices: LikeC4LanguageServices;
3601
3591
  Views: LikeC4Views;