@ts-graphviz/react 0.10.6 → 0.11.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.
Files changed (54) hide show
  1. package/CHANGELOG.md +497 -0
  2. package/README.md +630 -67
  3. package/example/example.tsx +1 -1
  4. package/lib/react.d.ts +198 -96
  5. package/lib/react.js +558 -215
  6. package/package.json +15 -20
  7. package/tsconfig.test.json +11 -0
  8. package/lib/react.cjs +0 -457
  9. package/src/components/Digraph.spec.tsx +0 -18
  10. package/src/components/Digraph.tsx +0 -41
  11. package/src/components/Edge.tsx +0 -17
  12. package/src/components/Graph.spec.tsx +0 -18
  13. package/src/components/Graph.tsx +0 -36
  14. package/src/components/GraphPortal.tsx +0 -22
  15. package/src/components/Node.spec.tsx +0 -101
  16. package/src/components/Node.tsx +0 -21
  17. package/src/components/Subgraph.tsx +0 -30
  18. package/src/contexts/CurrentGraph.ts +0 -5
  19. package/src/contexts/GraphContainer.ts +0 -5
  20. package/src/contexts/GraphMap.ts +0 -5
  21. package/src/contexts/GraphvizContext.ts +0 -11
  22. package/src/hooks/__tests__/wrapper.tsx +0 -58
  23. package/src/hooks/useCurrentGraph.spec.ts +0 -56
  24. package/src/hooks/useCurrentGraph.ts +0 -18
  25. package/src/hooks/useDigraph.spec.ts +0 -15
  26. package/src/hooks/useDigraph.ts +0 -33
  27. package/src/hooks/useEdge.spec.ts +0 -46
  28. package/src/hooks/useEdge.ts +0 -35
  29. package/src/hooks/useGraph.spec.ts +0 -15
  30. package/src/hooks/useGraph.ts +0 -33
  31. package/src/hooks/useGraphAttributes.ts +0 -32
  32. package/src/hooks/useGraphContainer.spec.ts +0 -45
  33. package/src/hooks/useGraphContainer.ts +0 -10
  34. package/src/hooks/useGraphMap.ts +0 -7
  35. package/src/hooks/useGraphvizContext.spec.ts +0 -26
  36. package/src/hooks/useGraphvizContext.ts +0 -16
  37. package/src/hooks/useHasAttributes.ts +0 -16
  38. package/src/hooks/useHasComment.ts +0 -8
  39. package/src/hooks/useNode.spec.ts +0 -16
  40. package/src/hooks/useNode.ts +0 -29
  41. package/src/hooks/useRenderedID.spec.tsx +0 -28
  42. package/src/hooks/useRenderedID.ts +0 -6
  43. package/src/hooks/useSubgraph.spec.ts +0 -41
  44. package/src/hooks/useSubgraph.ts +0 -39
  45. package/src/react.ts +0 -16
  46. package/src/reconciler.ts +0 -272
  47. package/src/render.test.tsx +0 -71
  48. package/src/render.ts +0 -142
  49. package/src/renderHTMLLike.ts +0 -9
  50. package/src/renderId.ts +0 -9
  51. package/src/types.ts +0 -107
  52. package/tsconfig.json +0 -8
  53. package/typedoc.json +0 -5
  54. package/vite.config.ts +0 -31
package/CHANGELOG.md CHANGED
@@ -1,5 +1,502 @@
1
1
  # @ts-graphviz/react
2
2
 
3
+ ## 0.11.1
4
+
5
+ ### Patch Changes
6
+
7
+ - [#1480](https://github.com/ts-graphviz/ts-graphviz/pull/1480) [`ab5d0c7`](https://github.com/ts-graphviz/ts-graphviz/commit/ab5d0c75620a0fd1bf36373716b26c2d433a0bc6) Thanks [@kamiazya](https://github.com/kamiazya)! - Fix CI workflow to prevent publishing stable releases with @next tag
8
+
9
+ - Updated dependencies [[`ab5d0c7`](https://github.com/ts-graphviz/ts-graphviz/commit/ab5d0c75620a0fd1bf36373716b26c2d433a0bc6)]:
10
+ - @ts-graphviz/common@3.0.1
11
+ - ts-graphviz@3.0.1
12
+
13
+ ## 0.11.0
14
+
15
+ ### Minor Changes
16
+
17
+ - [#1363](https://github.com/ts-graphviz/ts-graphviz/pull/1363) [`9328563`](https://github.com/ts-graphviz/ts-graphviz/commit/932856396ed0dede1dfc6737344a628f9667d07c) Thanks [@kamiazya](https://github.com/kamiazya)! - 🚨 Breaking Changes: Drop Node.js 18 support
18
+
19
+ Minimum required version is now Node.js 20+
20
+
21
+ ### ESM-Only Distribution
22
+
23
+ - **Remove CommonJS builds**: All packages now distribute only ESM (ECMAScript Modules)
24
+ - **Package exports**: Removed `require` fields from `package.json` exports
25
+ - **Module type**: All packages are now `"type": "module"`
26
+
27
+ ## 🔄 Migration Guide
28
+
29
+ ### For ESM Projects (Recommended)
30
+
31
+ ```json
32
+ {
33
+ "type": "module"
34
+ }
35
+ ```
36
+
37
+ ```typescript
38
+ // Import syntax remains unchanged
39
+ import { Digraph, Node, Edge, toDot } from "ts-graphviz";
40
+ import { toFile } from "ts-graphviz/adapter";
41
+ import { parse } from "ts-graphviz/ast";
42
+ ```
43
+
44
+ ### For CommonJS Projects
45
+
46
+ If you are using CommonJS (CJS) and need to migrate to ESM, you will need to update your project to support dynamic imports. This is necessary because the packages no longer provide CommonJS builds.
47
+
48
+ ### Before (CJS)
49
+
50
+ ```javascript
51
+ // JavaScript (CommonJS)
52
+ function createGraph() {
53
+ // Dynamic import is required because the packages no longer provide CommonJS builds.
54
+ const { Digraph, Node, Edge, toDot } = require("ts-graphviz");
55
+ const graph = new Digraph();
56
+ return toDot(graph);
57
+ }
58
+ ```
59
+
60
+ ### After (ESM)
61
+
62
+ ```javascript
63
+ async function createGraph() {
64
+ const { Digraph, Node, Edge, toDot } = await import("ts-graphviz");
65
+
66
+ const graph = new Digraph();
67
+ // Create your graph...
68
+ return toDot(graph);
69
+ }
70
+ ```
71
+
72
+ ```typescript
73
+ // TypeScript (CommonJS)
74
+ // Update tsconfig.json
75
+ {
76
+ "compilerOptions": {
77
+ "module": "Node16",
78
+ "moduleResolution": "Node16"
79
+ }
80
+ }
81
+
82
+ // Use dynamic imports
83
+ async function createGraph() {
84
+ const tsGraphviz = await import('ts-graphviz');
85
+ const { Digraph, Node, Edge, toDot } = tsGraphviz;
86
+
87
+ const graph = new Digraph();
88
+ // Create your graph...
89
+ return toDot(graph);
90
+ }
91
+ ```
92
+
93
+ ## 🎯 Benefits
94
+
95
+ - **Modern JavaScript**: Leveraging native ES modules for better performance
96
+ - **Smaller bundle sizes**: ESM enables better tree-shaking
97
+ - **Future-proof**: Aligning with the JavaScript ecosystem direction
98
+ - **Better TypeScript support**: Enhanced module resolution
99
+
100
+ - [#1363](https://github.com/ts-graphviz/ts-graphviz/pull/1363) [`9328563`](https://github.com/ts-graphviz/ts-graphviz/commit/932856396ed0dede1dfc6737344a628f9667d07c) Thanks [@kamiazya](https://github.com/kamiazya)! - Define Supported environment and Support levels
101
+
102
+ To provide clarity on the environments in which ts-graphviz operates, we have categorized support levels:
103
+
104
+ ## Support Levels
105
+
106
+ ### Tier 1: Full Support
107
+
108
+ - **Definition**: Environments that are fully supported, with comprehensive automated testing and maintenance.
109
+ - **Environments**:
110
+ - **Node.js LTS versions**: All active Long-Term Support (LTS) versions.
111
+ - If a Node.js LTS version is released, we will ensure compatibility with it.
112
+ - If a Node.js LTS version is deprecated, we will drop support for it in the next major release.
113
+ - **Details**:
114
+ - We run automated tests on all LTS versions of Node.js.
115
+ - Full compatibility and performance are ensured.
116
+ - Critical issues are prioritized for fixes.
117
+
118
+ ### Tier 2: Active Support
119
+
120
+ - **Definition**: Environments that receive active support with limited automated testing.
121
+ - **Environments**:
122
+ - **Deno Latest LTS version**: The latest Long-Term Support (LTS) version of Deno.
123
+ - If a new Deno LTS version is released, we will ensure compatibility with it.
124
+ - If a Deno LTS version is deprecated, we will drop support for it in the next minor release.
125
+ - **Node.js Current Release**: The latest Node.js release outside the LTS schedule.
126
+ - If a new Node.js current release is available, we will ensure compatibility with it.
127
+ - If a Node.js current release is deprecated, we will drop support for it in the next minor release.
128
+ - **Details**:
129
+ - Compatibility is maintained, and issues are addressed.
130
+
131
+ ### Tier 3: Community Support
132
+
133
+ - **Definition**: Environments that are not officially tested but are supported on a best-effort basis.
134
+ - **Environments**:
135
+ - **Modern Browsers**: Latest versions of major browsers, including:
136
+ - Google Chrome
137
+ - Mozilla Firefox
138
+ - Microsoft Edge
139
+ - Apple Safari
140
+ - **Deno Current Release**: The latest Deno release outside the LTS schedule.
141
+ - **Details**:
142
+ - Installation methods are provided.
143
+ - No automated testing is performed.
144
+ - Issues reported by users will be addressed.
145
+ - Targeting the latest versions ensures compatibility with modern web standards.
146
+ - We will not actively test or maintain compatibility with older versions of browsers.
147
+
148
+ - [#1363](https://github.com/ts-graphviz/ts-graphviz/pull/1363) [`9328563`](https://github.com/ts-graphviz/ts-graphviz/commit/932856396ed0dede1dfc6737344a628f9667d07c) Thanks [@kamiazya](https://github.com/kamiazya)! - ## React 19 Support with Breaking Changes
149
+
150
+ ## 🚨 BREAKING CHANGES
151
+
152
+ ### React 18 Support Discontinued
153
+
154
+ - **React 19+ is now required** - React 18 and earlier versions are no longer supported
155
+ - Updated `peerDependencies` to require `react@>=19` (removed `react-dom` dependency)
156
+
157
+ ### API Changes
158
+
159
+ **Migration Required:**
160
+
161
+ ```typescript
162
+ // Before
163
+ const graph = render(<Digraph>...</Digraph>, container);
164
+ const dotString = renderToDot(<Digraph>...</Digraph>, container);
165
+
166
+ // After - New createRoot API following React 19 patterns
167
+ const root = createRoot({ container });
168
+ await root.render(<Digraph>...</Digraph>);
169
+ const models = root.getTopLevelModels();
170
+ const dotString = await renderToDot(<Digraph>...</Digraph>, { container });
171
+ ```
172
+
173
+ ### Container Model Access Changes
174
+
175
+ **🚨 BREAKING CHANGE:** New createRoot API changes how you access rendered models
176
+
177
+ **Migration Required:**
178
+
179
+ ```typescript
180
+ // Before - result.model was the first rendered model
181
+ const container = new DigraphModel("parent");
182
+ const result = await render(<Node id="test" />, { container });
183
+ expect(result.model.$type).toBe("Node"); // ❌ Old API
184
+
185
+ // After - Use root.getTopLevelModels() to access models
186
+ const container = new DigraphModel("parent");
187
+ const root = createRoot({ container });
188
+ await root.render(<Node id="test" />);
189
+ const models = root.getTopLevelModels();
190
+ expect(models[0].$type).toBe("Node"); // ✅ New API
191
+ expect(models[0].id).toBe("test");
192
+ // Access container directly: container.nodes.length === 1
193
+ ```
194
+
195
+ ## ✨ NEW FEATURES
196
+
197
+ ### Modern createRoot API
198
+
199
+ - 🆕 `createRoot()` function following React 19's modern patterns
200
+ - 🆕 **Simplified API**: `createRoot(options)` - single options parameter for all configuration
201
+ - 🆕 **Container in options**: `createRoot({ container, onRenderComplete })` for cleaner code
202
+ - Better performance and memory management
203
+ - Cleaner API separation between rendering and model access
204
+ - Enhanced error handling with root-level configuration
205
+
206
+ ### Advanced Error Handling
207
+
208
+ - 🆕 `onUncaughtError` callback with component stack traces
209
+ - 🆕 `onCaughtError` callback for error boundary integration
210
+ - Better debugging capabilities for rendering failures
211
+
212
+ ```typescript
213
+ // Create root with error handling
214
+ const root = createRoot({
215
+ onUncaughtError: (error, errorInfo) => {
216
+ console.error("Rendering error:", error);
217
+ console.log("Component stack:", errorInfo.componentStack);
218
+ },
219
+ });
220
+
221
+ await root.render(<Digraph>...</Digraph>);
222
+ const models = root.getTopLevelModels();
223
+ ```
224
+
225
+ ### Ref as Prop Support
226
+
227
+ - All components now support React 19's ref as prop pattern
228
+ - Direct access to graph models (`NodeModel`, `EdgeModel`, `RootGraphModel`) via refs
229
+ - Enhanced TypeScript support with proper model typing
230
+
231
+ ### Reduced Dependencies
232
+
233
+ - 🆕 Removed `react-dom` dependency - now uses custom HTML rendering implementation
234
+ - Smaller bundle size and fewer peer dependencies required
235
+ - No longer dependent on React's server-side rendering APIs
236
+
237
+ ## 🔧 TECHNICAL UPDATES
238
+
239
+ ### React Reconciler Modernization
240
+
241
+ - Updated reconciler to use React 19's new `createContainer` API (8 arguments vs 10)
242
+ - Improved memory management and performance
243
+ - Simplified rendering by removing library-level concurrent control (users can wrap with startTransition if needed)
244
+
245
+ ### TypeScript Improvements
246
+
247
+ - Updated JSX namespace declaration from global to module scope
248
+ - Fixed React 19 type compatibility issues
249
+ - Enhanced type safety for error handlers
250
+
251
+ ### Type System Modernization
252
+
253
+ - 🆕 **Eliminated manual type assertions** with function overloads and type guards
254
+ - 🆕 **Runtime type filtering** using built-in type guards from `@ts-graphviz/common`
255
+ - 🆕 **Direct type casting** for performance when user knows exact types
256
+ - 🆕 **Type-safe model access** with automatic type narrowing
257
+ - 🆕 **Enhanced TypeScript developer experience** with precise type inference
258
+ - 🆕 **Flexible type handling** - choose between runtime validation or trusted assertions
259
+ - Enhanced debugging capabilities with strongly-typed error handling
260
+
261
+ **Two approaches for type-safe model access:**
262
+
263
+ 1. **Runtime Type Filtering** (safe, validated):
264
+
265
+ ```typescript
266
+ const nodes = root.getTopLevelModels(isNodeModel); // Filters only NodeModel objects
267
+ ```
268
+
269
+ - Uses type guard functions for runtime validation
270
+ - Guarantees type safety at runtime
271
+ - Filters out non-matching models
272
+
273
+ 2. **Direct Type Casting** (fast, trusted):
274
+ ```typescript
275
+ const nodes = root.getTopLevelModels<NodeModel>(); // Casts all models as NodeModel
276
+ ```
277
+ - No runtime validation - trusts user assertion
278
+ - Higher performance for known scenarios
279
+ - User responsible for type correctness
280
+
281
+ ### Model Collection Algorithm Improvements
282
+
283
+ - 🆕 **Container-aware collection** replaces priority-based system
284
+ - Fixed unpredictable behavior in nested component structures
285
+ - Consistent model return behavior regardless of component hierarchy depth
286
+ - Better handling of complex Subgraph and Edge combinations
287
+
288
+ ### Test Infrastructure
289
+
290
+ - 100% test coverage maintained
291
+ - React 19 compatibility validated
292
+
293
+ ## 📚 MIGRATION GUIDE
294
+
295
+ ### Prerequisites
296
+
297
+ - **Upgrade to React 19+**: Install `react@^19.0.0` (required)
298
+ - **Note**: `react-dom` is no longer required as this package now uses a custom HTML rendering implementation
299
+
300
+ ### Step-by-Step Migration
301
+
302
+ 1. **Update React Dependency**
303
+
304
+ ```bash
305
+ npm install react@^19.0.0
306
+ # or
307
+ pnpm add react@^19.0.0
308
+ # or
309
+ yarn add react@^19.0.0
310
+ ```
311
+
312
+ **Note**: You can now remove `react-dom` from your dependencies if it was only needed for @ts-graphviz/react:
313
+
314
+ ```bash
315
+ npm uninstall react-dom
316
+ # or
317
+ pnpm remove react-dom
318
+ # or
319
+ yarn remove react-dom
320
+ ```
321
+
322
+ 2. **Update to createRoot API**
323
+ Replace render function calls with createRoot pattern:
324
+
325
+ ```typescript
326
+ // Old API
327
+ - const result = await render(<MyGraph />, container);
328
+ - const dot = await renderToDot(<MyGraph />, container);
329
+
330
+ // New API
331
+ + const root = createRoot({ container });
332
+ + await root.render(<MyGraph />);
333
+ + const models = root.getTopLevelModels();
334
+ + const dot = await renderToDot(<MyGraph />, { container });
335
+ ```
336
+
337
+ 3. **Update Model Access Patterns**
338
+
339
+ ```typescript
340
+ // Old behavior - result.model was the first rendered model
341
+ - const result = await render(<Node id="test" />, { container });
342
+ - expect(result.model.$type).toBe('Node');
343
+
344
+ // New behavior - use root.getTopLevelModels()
345
+ + const root = createRoot(container);
346
+ + await root.render(<Node id="test" />);
347
+ + const models = root.getTopLevelModels();
348
+ + expect(models[0].$type).toBe('Node');
349
+ + expect(models[0].id).toBe('test');
350
+ ```
351
+
352
+ 4. **Add Error Handling (Optional)**
353
+
354
+ ```typescript
355
+ const root = createRoot(undefined, {
356
+ onUncaughtError: (error, errorInfo) => {
357
+ console.error("Graph rendering failed:", error);
358
+ },
359
+ });
360
+ await root.render(<MyGraph />);
361
+ ```
362
+
363
+ 5. **Multiple Renders with Same Root**
364
+ ```typescript
365
+ // Create root once, use multiple times
366
+ const root = createRoot();
367
+ await root.render(<GraphA />);
368
+ await root.render(<GraphB />); // Replaces previous render
369
+ ```
370
+
371
+ ### API Reference
372
+
373
+ **Core Functions:**
374
+
375
+ - `createRoot(container?, options?)` - Creates a rendering root following React 19 patterns
376
+ - `renderToDot(element, options?)` - Primary DOT string generation
377
+
378
+ **createRoot Options:**
379
+
380
+ ```typescript
381
+ interface CreateRootOptions<
382
+ Container extends AnyGraphContainer = AnyGraphContainer
383
+ > {
384
+ container?: Container; // Container graph for rendering components
385
+ onUncaughtError?: (error: Error, errorInfo: ErrorInfo) => void;
386
+ onCaughtError?: (error: Error, errorInfo: ErrorInfo) => void;
387
+ onRecoverableError?: (error: Error, errorInfo: ErrorInfo) => void;
388
+ onRenderComplete?: (models: DotObjectModel[]) => void;
389
+ timeout?: number; // Rendering timeout (default: 5000ms)
390
+ }
391
+
392
+ interface GraphvizRoot {
393
+ render(element: ReactElement): Promise<void>;
394
+ unmount(): void;
395
+ // Overloaded for type-safe filtering and direct type casting
396
+ getTopLevelModels(): DotObjectModel[];
397
+ getTopLevelModels<T extends DotObjectModel>(
398
+ typeGuard: (model: DotObjectModel) => model is T
399
+ ): T[]; // Runtime type filtering with validation
400
+ getTopLevelModels<T extends DotObjectModel>(): T[]; // Direct type casting (trusted assertion)
401
+ }
402
+ ```
403
+
404
+ **Type-Safe Model Access Examples:**
405
+
406
+ ```typescript
407
+ // Import type guards for runtime type filtering
408
+ import {
409
+ isNodeModel,
410
+ isEdgeModel,
411
+ isRootGraphModel,
412
+ } from "@ts-graphviz/common";
413
+
414
+ const root = createRoot();
415
+ await root.render(<MyGraph />);
416
+
417
+ // === APPROACH 1: Runtime Type Filtering (Safe) ===
418
+ // Uses type guard functions - validates types at runtime
419
+ const validatedNodes = root.getTopLevelModels(isNodeModel); // Only actual NodeModel objects
420
+ const validatedEdges = root.getTopLevelModels(isEdgeModel); // Only actual EdgeModel objects
421
+ const validatedGraphs = root.getTopLevelModels(isRootGraphModel); // Only actual RootGraphModel objects
422
+
423
+ // Guaranteed type safety - filters out non-matching models
424
+ console.log(`Found ${validatedNodes.length} nodes`); // Could be 0 if no nodes exist
425
+ validatedNodes.forEach((node) => console.log(node.id)); // All items are definitely NodeModel
426
+
427
+ // === APPROACH 2: Direct Type Casting (Fast) ===
428
+ // User assertion - no runtime validation, trusts the user
429
+ const allAsNodes = root.getTopLevelModels<NodeModel>(); // ALL models cast as NodeModel[]
430
+ const allAsEdges = root.getTopLevelModels<EdgeModel>(); // ALL models cast as EdgeModel[]
431
+
432
+ // Higher performance but requires user knowledge
433
+ console.log(`Treating ${allAsNodes.length} models as nodes`); // Returns all models
434
+ // Warning: If models aren't actually NodeModel, runtime errors may occur
435
+
436
+ // === MIXED USAGE PATTERNS ===
437
+ // Get all models first, then decide approach
438
+ const allModels = root.getTopLevelModels();
439
+ if (allModels.every(isNodeModel)) {
440
+ // Safe to use direct casting since we validated
441
+ const nodes = root.getTopLevelModels<NodeModel>();
442
+ nodes.forEach((node) => console.log(`Node: ${node.id}`));
443
+ } else {
444
+ // Use filtering for mixed model types
445
+ const nodes = root.getTopLevelModels(isNodeModel);
446
+ const edges = root.getTopLevelModels(isEdgeModel);
447
+ console.log(`Found ${nodes.length} nodes and ${edges.length} edges`);
448
+ }
449
+ ```
450
+
451
+ **renderToDot Options:**
452
+
453
+ ```typescript
454
+ interface RenderToDotOptions<
455
+ T extends AnyGraphContainer = AnyGraphContainer
456
+ > {
457
+ container?: T; // Container graph for nested rendering
458
+ onUncaughtError?: (error: Error, errorInfo: ErrorInfo) => void;
459
+ onCaughtError?: (error: Error, errorInfo: ErrorInfo) => void;
460
+ timeout?: number; // Rendering timeout in milliseconds
461
+ }
462
+ ```
463
+
464
+ ## 📦 INSTALLATION
465
+
466
+ ```bash
467
+ # Install React 19 (required)
468
+ npm install react@^19
469
+
470
+ # Update to latest @ts-graphviz/react
471
+ npm install @ts-graphviz/react@latest
472
+
473
+ # Note: react-dom is no longer required
474
+ ```
475
+
476
+ This release represents a strategic modernization to ensure long-term compatibility with React's ecosystem while providing improved performance and developer experience.
477
+
478
+ - [#1363](https://github.com/ts-graphviz/ts-graphviz/pull/1363) [`9328563`](https://github.com/ts-graphviz/ts-graphviz/commit/932856396ed0dede1dfc6737344a628f9667d07c) Thanks [@kamiazya](https://github.com/kamiazya)! - Adjust HTML label AST handling for consistent behavior #1335
479
+
480
+ Improves the handling of HTML-like labels in the `fromDot` and `toDot` functions to ensure valid Dot output.
481
+
482
+ ### Patch Changes
483
+
484
+ - [#1363](https://github.com/ts-graphviz/ts-graphviz/pull/1363) [`9328563`](https://github.com/ts-graphviz/ts-graphviz/commit/932856396ed0dede1dfc6737344a628f9667d07c) Thanks [@kamiazya](https://github.com/kamiazya)! - Update Develop Environment
485
+
486
+ - Drop turbo
487
+ - Upgrade biome to 2.0
488
+ - Upgrade TypeScript to 5.8
489
+ - Upgrade Vite to 7.0
490
+ - Upgrade Vitest to 3.2
491
+ - Upgrade Peggy to 5.0 and drop ts-pegjs
492
+ - Implement new E2E test workflow
493
+
494
+ - [#1363](https://github.com/ts-graphviz/ts-graphviz/pull/1363) [`9328563`](https://github.com/ts-graphviz/ts-graphviz/commit/932856396ed0dede1dfc6737344a628f9667d07c) Thanks [@kamiazya](https://github.com/kamiazya)! - New GitHub Action main workflow and tests
495
+
496
+ - Updated dependencies [[`9328563`](https://github.com/ts-graphviz/ts-graphviz/commit/932856396ed0dede1dfc6737344a628f9667d07c), [`9328563`](https://github.com/ts-graphviz/ts-graphviz/commit/932856396ed0dede1dfc6737344a628f9667d07c), [`9328563`](https://github.com/ts-graphviz/ts-graphviz/commit/932856396ed0dede1dfc6737344a628f9667d07c), [`9328563`](https://github.com/ts-graphviz/ts-graphviz/commit/932856396ed0dede1dfc6737344a628f9667d07c), [`9328563`](https://github.com/ts-graphviz/ts-graphviz/commit/932856396ed0dede1dfc6737344a628f9667d07c)]:
497
+ - ts-graphviz@3.0.0
498
+ - @ts-graphviz/common@3.0.0
499
+
3
500
  ## 0.10.6
4
501
 
5
502
  ### Patch Changes