feat(editor): scaffold editor package
UI-only feature package for the ADR-029 editor rebuild: tsconfig rootDir '.', vitest jsdom base with '@' alias and honest L0 baseline thresholds, conformance ESLint active, React 19, @xyflow/react + zustand wired against the pre-approved 2026-07-12 library traces. Minimal feature.manifest.ts (empty useCases — no binders; declares requiredCores runner-protocol + baseline coverage band) so the editor participates in pnpm conformance without weakening any lint rule. Co-Authored-By: Claude Fable 5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_016j8z4VHjedXDTjEDNg7qHK
This commit is contained in:
@@ -45,6 +45,7 @@ See `docs/guides/runbook.md` for the full workflow.
|
|||||||
| `@repo/core-cms` | core-composition | Payload config aggregator — imports `@repo/<feature>/cms` only |
|
| `@repo/core-cms` | core-composition | Payload config aggregator — imports `@repo/<feature>/cms` only |
|
||||||
| `@repo/core-trpc` | core-composition | Frontend tRPC client + Next.js provider |
|
| `@repo/core-trpc` | core-composition | Frontend tRPC client + Next.js provider |
|
||||||
| `@repo/auth` | feature | Users collection + sign-in/up/out + sessions — control-plane identity (ADR-027: email/password accounts; repo access is a per-workspace credential, not a user identity) |
|
| `@repo/auth` | feature | Users collection + sign-in/up/out + sessions — control-plane identity (ADR-027: email/password accounts; repo access is a per-workspace credential, not a user identity) |
|
||||||
|
| `@repo/editor` | feature | Rebuilt editor UI (ADR-029): React Flow board, iframe frame node, canvas-protocol client, selection overlay, zustand store (registry + selection) |
|
||||||
| `@repo/core-eslint` | tooling | Shared ESLint 9 flat configs (base, next, react-internal, boundaries) + the 16 conformance rules |
|
| `@repo/core-eslint` | tooling | Shared ESLint 9 flat configs (base, next, react-internal, boundaries) + the 16 conformance rules |
|
||||||
| `@repo/core-typescript` | tooling | Shared TypeScript base configs + Vitest base |
|
| `@repo/core-typescript` | tooling | Shared TypeScript base configs + Vitest base |
|
||||||
| `@repo/core-testing` | tooling | Shared test utilities (defineFactory, defineContractSuite, renderWithProviders, payload mocks, `Recording*` doubles) |
|
| `@repo/core-testing` | tooling | Shared test utilities (defineFactory, defineContractSuite, renderWithProviders, payload mocks, `Recording*` doubles) |
|
||||||
@@ -57,7 +58,7 @@ Apps:
|
|||||||
| `apps/cms` | 3001 | Payload admin |
|
| `apps/cms` | 3001 | Payload admin |
|
||||||
| `apps/storybook` | 6006 | Storybook — component workshop for `core-ui` + feature UI |
|
| `apps/storybook` | 6006 | Storybook — component workshop for `core-ui` + feature UI |
|
||||||
|
|
||||||
`auth` is the only feature package today. The Veect control-plane features (workspaces, projects, discovery, design-doc, editor, …) land as sibling packages under `packages/` following the same shape. Per ADR-029, `packages/editor` starts empty — the prototype codebase under `docs/product/reference/` is reference material, never vendored.
|
`auth` and `editor` are the feature packages today (`editor` is UI-only — empty `useCases`, no binders). The remaining Veect control-plane features (workspaces, projects, discovery, design-doc, …) land as sibling packages under `packages/` following the same shape. Per ADR-029, `packages/editor` is rebuilt under template conventions — the prototype codebase under `docs/product/reference/` is reference material, never vendored.
|
||||||
|
|
||||||
---
|
---
|
||||||
|
|
||||||
|
|||||||
21
packages/editor/AGENTS.md
Normal file
21
packages/editor/AGENTS.md
Normal file
@@ -0,0 +1,21 @@
|
|||||||
|
# @repo/editor
|
||||||
|
|
||||||
|
Owns the rebuilt Veect editor UI (ADR-029): the React Flow board shell, the iframe frame node that hosts the runner's preview-adapter origin, the editor-side selection overlay, the canvas-protocol client (pinned-`targetOrigin` postMessage both directions, ADR-028), and the minimal zustand store (registry + selection only — DesignDoc v1 arrives with the `design-doc-and-editor-foundation` epic).
|
||||||
|
|
||||||
|
**Boundary tag:** feature. May import from core (`core-runner-protocol`, `core-shared`), feature, and tooling packages. Imported by apps (`apps/web-next` hosts the board from story 10).
|
||||||
|
|
||||||
|
**Public surface:**
|
||||||
|
|
||||||
|
- `.` (root) — contracts only: canvas-protocol schemas + types, the feature manifest.
|
||||||
|
- `./ui` — UI artifacts: board, frame node, selection overlay components, the editor store hook.
|
||||||
|
|
||||||
|
**Conventions:**
|
||||||
|
|
||||||
|
- UI-only feature package — `useCases` is empty in `src/feature.manifest.ts`; there are no DI binders. Manifest-first ordering applies the moment a use case appears.
|
||||||
|
- Every component in `src/ui/` has sibling `.stories.tsx` + `.test.tsx` files (`component-must-have-story` / `component-must-have-test`) — no exemption zone (ADR-029).
|
||||||
|
- Chrome (selection/hover rings) renders as editor-side overlays positioned from agent-reported geometry — never inside the iframe document (ADR-028).
|
||||||
|
- Board pan/zoom and frame drag are pure React Flow transforms — no canvas-protocol round-trip on drag (<16 ms/frame budget).
|
||||||
|
- The canvas-protocol message shapes agent ↔ editor are local zod schemas in `src/canvas-protocol/` for now; they reconcile with the adapter's agent script (walking-skeleton story 05) and `@repo/core-runner-protocol` in story 10. `render-frame` already comes from `@repo/core-runner-protocol`.
|
||||||
|
- The prototype under `docs/product/reference/project/veect-codebase/` is reference only — never vendored (ADR-029).
|
||||||
|
|
||||||
|
**See:** `docs/decisions/adr-028-iframe-canvas.md`, `docs/decisions/adr-029-designdoc-v1-and-editor-rebuild.md`, `docs/work/epics/walking-skeleton/09-editor-package/_story.md`.
|
||||||
3
packages/editor/eslint.config.js
Normal file
3
packages/editor/eslint.config.js
Normal file
@@ -0,0 +1,3 @@
|
|||||||
|
import baseConfig from "@repo/core-eslint/base";
|
||||||
|
|
||||||
|
export default baseConfig;
|
||||||
40
packages/editor/package.json
Normal file
40
packages/editor/package.json
Normal file
@@ -0,0 +1,40 @@
|
|||||||
|
{
|
||||||
|
"name": "@repo/editor",
|
||||||
|
"private": true,
|
||||||
|
"version": "0.1.0",
|
||||||
|
"type": "module",
|
||||||
|
"exports": {
|
||||||
|
".": "./src/index.ts",
|
||||||
|
"./ui": "./src/ui/index.ts"
|
||||||
|
},
|
||||||
|
"scripts": {
|
||||||
|
"build": "tsc --noEmit",
|
||||||
|
"lint": "eslint .",
|
||||||
|
"test": "vitest run --passWithNoTests",
|
||||||
|
"typecheck": "tsc --noEmit"
|
||||||
|
},
|
||||||
|
"dependencies": {
|
||||||
|
"@repo/core-runner-protocol": "workspace:*",
|
||||||
|
"@repo/core-shared": "workspace:*",
|
||||||
|
"@xyflow/react": "^12.0.0",
|
||||||
|
"react": "^19.0.0",
|
||||||
|
"react-dom": "^19.0.0",
|
||||||
|
"zod": "^3.24.0",
|
||||||
|
"zustand": "^5.0.0"
|
||||||
|
},
|
||||||
|
"devDependencies": {
|
||||||
|
"@repo/core-eslint": "workspace:*",
|
||||||
|
"@repo/core-testing": "workspace:*",
|
||||||
|
"@repo/core-typescript": "workspace:*",
|
||||||
|
"@storybook/react": "^8.6.0",
|
||||||
|
"@testing-library/jest-dom": "^6.5.0",
|
||||||
|
"@testing-library/react": "^16.0.0",
|
||||||
|
"@testing-library/user-event": "^14.5.0",
|
||||||
|
"@types/react": "^19.0.0",
|
||||||
|
"@types/react-dom": "^19.0.0",
|
||||||
|
"@vitest/coverage-v8": "^3.2.4",
|
||||||
|
"jsdom": "^25.0.0",
|
||||||
|
"typescript": "^5.8.0",
|
||||||
|
"vitest": "^3.0.0"
|
||||||
|
}
|
||||||
|
}
|
||||||
40
packages/editor/src/feature.manifest.test.ts
Normal file
40
packages/editor/src/feature.manifest.test.ts
Normal file
@@ -0,0 +1,40 @@
|
|||||||
|
import { describe, it, expect } from "vitest";
|
||||||
|
import {
|
||||||
|
DEFAULT_COVERAGE_BANDS,
|
||||||
|
getCoverageBands,
|
||||||
|
} from "@repo/core-shared/conformance";
|
||||||
|
import { editorManifest } from "@/feature.manifest";
|
||||||
|
|
||||||
|
describe("editorManifest", () => {
|
||||||
|
it("declares the editor feature name", () => {
|
||||||
|
expect(editorManifest.name).toBe("editor");
|
||||||
|
});
|
||||||
|
|
||||||
|
it("declares no use cases — the editor is a UI-only feature (ADR-029)", () => {
|
||||||
|
expect(editorManifest.useCases).toEqual({});
|
||||||
|
});
|
||||||
|
|
||||||
|
it("requires the runner-protocol core (render-frame schema source)", () => {
|
||||||
|
expect(editorManifest.requiredCores).toEqual(["runner-protocol"]);
|
||||||
|
});
|
||||||
|
|
||||||
|
it("declares no realtime channels and no jobs", () => {
|
||||||
|
expect(editorManifest.realtimeChannels).toEqual([]);
|
||||||
|
expect(editorManifest.jobs).toEqual([]);
|
||||||
|
});
|
||||||
|
|
||||||
|
it("declares the default baseline coverage band — drift guard against vitest.config.ts, which inherits the same numbers from nodeVitestConfig", () => {
|
||||||
|
expect(editorManifest.coverage.bands.baseline).toEqual(
|
||||||
|
DEFAULT_COVERAGE_BANDS.baseline,
|
||||||
|
);
|
||||||
|
});
|
||||||
|
|
||||||
|
it("resolves layer bands from defaults via getCoverageBands (no layer dirs exist yet)", () => {
|
||||||
|
expect(getCoverageBands(editorManifest)).toEqual({
|
||||||
|
baseline: DEFAULT_COVERAGE_BANDS.baseline,
|
||||||
|
entities: DEFAULT_COVERAGE_BANDS.entities,
|
||||||
|
"use-cases": DEFAULT_COVERAGE_BANDS["use-cases"],
|
||||||
|
controllers: DEFAULT_COVERAGE_BANDS.controllers,
|
||||||
|
});
|
||||||
|
});
|
||||||
|
});
|
||||||
31
packages/editor/src/feature.manifest.ts
Normal file
31
packages/editor/src/feature.manifest.ts
Normal file
@@ -0,0 +1,31 @@
|
|||||||
|
import { defineFeature } from "@repo/core-shared/conformance";
|
||||||
|
|
||||||
|
/**
|
||||||
|
* The editor feature's conformance manifest.
|
||||||
|
*
|
||||||
|
* The editor is a UI-only feature package (ADR-028/029): it owns the React
|
||||||
|
* Flow board, the iframe frame node, and the canvas-protocol client — no
|
||||||
|
* Clean Architecture use cases, so `useCases` is empty and there are no
|
||||||
|
* DI binders. `feature-must-have-manifest` / `usecase-must-be-wired` only
|
||||||
|
* fire on use-case files and binders, so the manifest is declarative
|
||||||
|
* headroom rather than a lint requirement — it exists so the editor
|
||||||
|
* participates in `pnpm conformance` and declares its coverage bands
|
||||||
|
* (ADR-020) and core dependency (`core-runner-protocol`) explicitly.
|
||||||
|
*
|
||||||
|
* When the editor grows request-path domain logic (e.g. design-doc
|
||||||
|
* mutations), those use cases land here first — manifest-first ordering.
|
||||||
|
*/
|
||||||
|
export const editorManifest = defineFeature({
|
||||||
|
name: "editor",
|
||||||
|
requiredCores: ["runner-protocol"],
|
||||||
|
useCases: {},
|
||||||
|
realtimeChannels: [],
|
||||||
|
jobs: [],
|
||||||
|
coverage: {
|
||||||
|
bands: {
|
||||||
|
baseline: { statements: 80, branches: 75, functions: 80, lines: 80 },
|
||||||
|
},
|
||||||
|
},
|
||||||
|
} as const);
|
||||||
|
|
||||||
|
export type EditorManifest = typeof editorManifest;
|
||||||
4
packages/editor/src/index.ts
Normal file
4
packages/editor/src/index.ts
Normal file
@@ -0,0 +1,4 @@
|
|||||||
|
// Public contract surface of @repo/editor (types, schemas, manifest).
|
||||||
|
// UI artifacts (board, frame node, overlay, store hook) live behind
|
||||||
|
// `@repo/editor/ui` — see src/ui/index.ts.
|
||||||
|
export { editorManifest, type EditorManifest } from "./feature.manifest";
|
||||||
5
packages/editor/src/ui/index.ts
Normal file
5
packages/editor/src/ui/index.ts
Normal file
@@ -0,0 +1,5 @@
|
|||||||
|
// Public UI surface of @repo/editor: the React Flow board, iframe frame
|
||||||
|
// node, selection overlay, and the editor store hook land here as the
|
||||||
|
// walking-skeleton slices ship. Apps import components/hooks from
|
||||||
|
// `@repo/editor/ui` and contracts from `@repo/editor`.
|
||||||
|
export {};
|
||||||
13
packages/editor/tsconfig.json
Normal file
13
packages/editor/tsconfig.json
Normal file
@@ -0,0 +1,13 @@
|
|||||||
|
{
|
||||||
|
"extends": "@repo/core-typescript/react-library.json",
|
||||||
|
"compilerOptions": {
|
||||||
|
"outDir": "dist",
|
||||||
|
"rootDir": ".",
|
||||||
|
"types": ["vitest/globals", "@testing-library/jest-dom"],
|
||||||
|
"paths": {
|
||||||
|
"@/*": ["./src/*"]
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"include": ["src/**/*"],
|
||||||
|
"exclude": ["node_modules", "dist", "**/*.stories.tsx", "**/*.stories.ts"]
|
||||||
|
}
|
||||||
4
packages/editor/turbo.json
Normal file
4
packages/editor/turbo.json
Normal file
@@ -0,0 +1,4 @@
|
|||||||
|
{
|
||||||
|
"extends": ["//"],
|
||||||
|
"tags": ["feature"]
|
||||||
|
}
|
||||||
23
packages/editor/vitest.config.ts
Normal file
23
packages/editor/vitest.config.ts
Normal file
@@ -0,0 +1,23 @@
|
|||||||
|
import path from "node:path";
|
||||||
|
import { mergeConfig } from "vitest/config";
|
||||||
|
import { jsdomVitestConfig } from "@repo/core-typescript/vitest.base.jsdom";
|
||||||
|
|
||||||
|
// Coverage thresholds are the honest L0 baseline inherited from
|
||||||
|
// `nodeVitestConfig` (80/75/80/80 — DEFAULT_COVERAGE_BANDS.baseline, ADR-020).
|
||||||
|
// The editor has no entities / use-cases / controllers layers yet, so no
|
||||||
|
// per-layer band globs apply; `feature.manifest.ts` declares the same
|
||||||
|
// baseline band and `feature.manifest.test.ts` guards against drift.
|
||||||
|
export default mergeConfig(jsdomVitestConfig, {
|
||||||
|
resolve: {
|
||||||
|
alias: { "@": path.resolve(__dirname, "./src") },
|
||||||
|
},
|
||||||
|
test: {
|
||||||
|
coverage: {
|
||||||
|
exclude: [
|
||||||
|
// Storybook stories — excluded from vitest by design; exercised by
|
||||||
|
// the Storybook test runner (`pnpm test:stories`).
|
||||||
|
"src/**/*.stories.{ts,tsx}",
|
||||||
|
],
|
||||||
|
},
|
||||||
|
},
|
||||||
|
});
|
||||||
341
pnpm-lock.yaml
generated
341
pnpm-lock.yaml
generated
@@ -955,6 +955,70 @@ importers:
|
|||||||
specifier: ^3.0.0
|
specifier: ^3.0.0
|
||||||
version: 3.2.4(@types/debug@4.1.13)(@types/node@25.5.2)(happy-dom@20.8.9)(jiti@2.7.0)(jsdom@25.0.1)(lightningcss@1.32.0)(sass@1.99.0)(terser@5.46.2)(tsx@4.21.0)(yaml@2.9.0)
|
version: 3.2.4(@types/debug@4.1.13)(@types/node@25.5.2)(happy-dom@20.8.9)(jiti@2.7.0)(jsdom@25.0.1)(lightningcss@1.32.0)(sass@1.99.0)(terser@5.46.2)(tsx@4.21.0)(yaml@2.9.0)
|
||||||
|
|
||||||
|
packages/editor:
|
||||||
|
dependencies:
|
||||||
|
"@repo/core-runner-protocol":
|
||||||
|
specifier: workspace:*
|
||||||
|
version: link:../core-runner-protocol
|
||||||
|
"@repo/core-shared":
|
||||||
|
specifier: workspace:*
|
||||||
|
version: link:../core-shared
|
||||||
|
"@xyflow/react":
|
||||||
|
specifier: ^12.0.0
|
||||||
|
version: 12.11.2(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.4(react@19.2.4))(react@19.2.4)
|
||||||
|
react:
|
||||||
|
specifier: ^19.0.0
|
||||||
|
version: 19.2.4
|
||||||
|
react-dom:
|
||||||
|
specifier: ^19.0.0
|
||||||
|
version: 19.2.4(react@19.2.4)
|
||||||
|
zod:
|
||||||
|
specifier: ^3.24.0
|
||||||
|
version: 3.25.76
|
||||||
|
zustand:
|
||||||
|
specifier: ^5.0.0
|
||||||
|
version: 5.0.14(@types/react@19.2.14)(react@19.2.4)(use-sync-external-store@1.6.0(react@19.2.4))
|
||||||
|
devDependencies:
|
||||||
|
"@repo/core-eslint":
|
||||||
|
specifier: workspace:*
|
||||||
|
version: link:../core-eslint
|
||||||
|
"@repo/core-testing":
|
||||||
|
specifier: workspace:*
|
||||||
|
version: link:../core-testing
|
||||||
|
"@repo/core-typescript":
|
||||||
|
specifier: workspace:*
|
||||||
|
version: link:../core-typescript
|
||||||
|
"@storybook/react":
|
||||||
|
specifier: ^8.6.0
|
||||||
|
version: 8.6.18(react-dom@19.2.4(react@19.2.4))(react@19.2.4)(storybook@8.6.18(prettier@3.8.1))(typescript@5.9.3)
|
||||||
|
"@testing-library/jest-dom":
|
||||||
|
specifier: ^6.5.0
|
||||||
|
version: 6.9.1
|
||||||
|
"@testing-library/react":
|
||||||
|
specifier: ^16.0.0
|
||||||
|
version: 16.3.2(@testing-library/dom@10.4.1)(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.4(react@19.2.4))(react@19.2.4)
|
||||||
|
"@testing-library/user-event":
|
||||||
|
specifier: ^14.5.0
|
||||||
|
version: 14.6.1(@testing-library/dom@10.4.1)
|
||||||
|
"@types/react":
|
||||||
|
specifier: ^19.0.0
|
||||||
|
version: 19.2.14
|
||||||
|
"@types/react-dom":
|
||||||
|
specifier: ^19.0.0
|
||||||
|
version: 19.2.3(@types/react@19.2.14)
|
||||||
|
"@vitest/coverage-v8":
|
||||||
|
specifier: ^3.2.4
|
||||||
|
version: 3.2.4(vitest@3.2.4(@types/debug@4.1.13)(@types/node@25.5.2)(happy-dom@20.8.9)(jiti@2.7.0)(jsdom@25.0.1)(lightningcss@1.32.0)(sass@1.99.0)(terser@5.46.2)(tsx@4.21.0)(yaml@2.9.0))
|
||||||
|
jsdom:
|
||||||
|
specifier: ^25.0.0
|
||||||
|
version: 25.0.1
|
||||||
|
typescript:
|
||||||
|
specifier: ^5.8.0
|
||||||
|
version: 5.9.3
|
||||||
|
vitest:
|
||||||
|
specifier: ^3.0.0
|
||||||
|
version: 3.2.4(@types/debug@4.1.13)(@types/node@25.5.2)(happy-dom@20.8.9)(jiti@2.7.0)(jsdom@25.0.1)(lightningcss@1.32.0)(sass@1.99.0)(terser@5.46.2)(tsx@4.21.0)(yaml@2.9.0)
|
||||||
|
|
||||||
turbo/generators:
|
turbo/generators:
|
||||||
dependencies:
|
dependencies:
|
||||||
"@turbo/gen":
|
"@turbo/gen":
|
||||||
@@ -6672,6 +6736,42 @@ packages:
|
|||||||
integrity: sha512-mFNylyeyqN93lfe/9CSxOGREz8cpzAhH+E93xJ4xWQf62V8sQ/24reV2nyzUWM6H6Xji+GGHpkbLe7pVoUEskg==,
|
integrity: sha512-mFNylyeyqN93lfe/9CSxOGREz8cpzAhH+E93xJ4xWQf62V8sQ/24reV2nyzUWM6H6Xji+GGHpkbLe7pVoUEskg==,
|
||||||
}
|
}
|
||||||
|
|
||||||
|
"@types/d3-color@3.1.3":
|
||||||
|
resolution:
|
||||||
|
{
|
||||||
|
integrity: sha512-iO90scth9WAbmgv7ogoq57O9YpKmFBbmoEoCHDB2xMBY0+/KVrqAaCDyCE16dUspeOvIxFFRI+0sEtqDqy2b4A==,
|
||||||
|
}
|
||||||
|
|
||||||
|
"@types/d3-drag@3.0.7":
|
||||||
|
resolution:
|
||||||
|
{
|
||||||
|
integrity: sha512-HE3jVKlzU9AaMazNufooRJ5ZpWmLIoc90A37WU2JMmeq28w1FQqCZswHZ3xR+SuxYftzHq6WU6KJHvqxKzTxxQ==,
|
||||||
|
}
|
||||||
|
|
||||||
|
"@types/d3-interpolate@3.0.4":
|
||||||
|
resolution:
|
||||||
|
{
|
||||||
|
integrity: sha512-mgLPETlrpVV1YRJIglr4Ez47g7Yxjl1lj7YKsiMCb27VJH9W8NVM6Bb9d8kkpG/uAQS5AmbA48q2IAolKKo1MA==,
|
||||||
|
}
|
||||||
|
|
||||||
|
"@types/d3-selection@3.0.11":
|
||||||
|
resolution:
|
||||||
|
{
|
||||||
|
integrity: sha512-bhAXu23DJWsrI45xafYpkQ4NtcKMwWnAC/vKrd2l+nxMFuvOT3XMYTIj2opv8vq8AO5Yh7Qac/nSeP/3zjTK0w==,
|
||||||
|
}
|
||||||
|
|
||||||
|
"@types/d3-transition@3.0.9":
|
||||||
|
resolution:
|
||||||
|
{
|
||||||
|
integrity: sha512-uZS5shfxzO3rGlu0cC3bjmMFKsXv+SmZZcgp0KD22ts4uGXp5EVYGzu/0YdwZeKmddhcAccYtREJKkPfXkZuCg==,
|
||||||
|
}
|
||||||
|
|
||||||
|
"@types/d3-zoom@3.0.8":
|
||||||
|
resolution:
|
||||||
|
{
|
||||||
|
integrity: sha512-iqMC4/YlFCSlO8+2Ii1GGGliCAY4XdeG748w5vQUbevlbDu0zSjH/+jojorQVBK/se0j6DUFNPBGSqD3YWYnDw==,
|
||||||
|
}
|
||||||
|
|
||||||
"@types/debug@4.1.13":
|
"@types/debug@4.1.13":
|
||||||
resolution:
|
resolution:
|
||||||
{
|
{
|
||||||
@@ -7211,6 +7311,28 @@ packages:
|
|||||||
integrity: sha512-NuHqBY1PB/D8xU6s/thBgOAiAP7HOYDQ32+BFZILJ8ivkUkAHQnWfn6WhL79Owj1qmUnoN/YPhktdIoucipkAQ==,
|
integrity: sha512-NuHqBY1PB/D8xU6s/thBgOAiAP7HOYDQ32+BFZILJ8ivkUkAHQnWfn6WhL79Owj1qmUnoN/YPhktdIoucipkAQ==,
|
||||||
}
|
}
|
||||||
|
|
||||||
|
"@xyflow/react@12.11.2":
|
||||||
|
resolution:
|
||||||
|
{
|
||||||
|
integrity: sha512-eLAlDWJfWnQEhJwGMjlWdAXO9eYllKpliUmPQlAmOLxz6mExXuzMVDUKLMquixgkrtmMFFtug3jGKmYYld12cA==,
|
||||||
|
}
|
||||||
|
peerDependencies:
|
||||||
|
"@types/react": ">=17"
|
||||||
|
"@types/react-dom": ">=17"
|
||||||
|
react: ">=17"
|
||||||
|
react-dom: ">=17"
|
||||||
|
peerDependenciesMeta:
|
||||||
|
"@types/react":
|
||||||
|
optional: true
|
||||||
|
"@types/react-dom":
|
||||||
|
optional: true
|
||||||
|
|
||||||
|
"@xyflow/system@0.0.79":
|
||||||
|
resolution:
|
||||||
|
{
|
||||||
|
integrity: sha512-czLyOh91NF0hIzbNzwi8I6GlqG23BHh2435OddfI6uiaLH3xdrdygO93gqgH1Bv9mhy8XPFQJOBn1FTq4LvEWA==,
|
||||||
|
}
|
||||||
|
|
||||||
accepts@1.3.8:
|
accepts@1.3.8:
|
||||||
resolution:
|
resolution:
|
||||||
{
|
{
|
||||||
@@ -7870,6 +7992,12 @@ packages:
|
|||||||
integrity: sha512-4bHTS2YuzUvtoLjdy+98ykbNB5jS0+07EvFNXerqZQJ89F7DI6ET7OQo/HJuW6K0aVsKA9hj9/RVb2kQVOrPDQ==,
|
integrity: sha512-4bHTS2YuzUvtoLjdy+98ykbNB5jS0+07EvFNXerqZQJ89F7DI6ET7OQo/HJuW6K0aVsKA9hj9/RVb2kQVOrPDQ==,
|
||||||
}
|
}
|
||||||
|
|
||||||
|
classcat@5.0.5:
|
||||||
|
resolution:
|
||||||
|
{
|
||||||
|
integrity: sha512-JhZUT7JFcQy/EzW605k/ktHtncoo9vnyW/2GspNYwFlN1C/WmjuV/xtS04e9SOkL2sTdw0VAZ2UGCcQ9lR6p6w==,
|
||||||
|
}
|
||||||
|
|
||||||
clean-stack@2.2.0:
|
clean-stack@2.2.0:
|
||||||
resolution:
|
resolution:
|
||||||
{
|
{
|
||||||
@@ -8160,6 +8288,71 @@ packages:
|
|||||||
}
|
}
|
||||||
engines: { node: ">=0.8" }
|
engines: { node: ">=0.8" }
|
||||||
|
|
||||||
|
d3-color@3.1.0:
|
||||||
|
resolution:
|
||||||
|
{
|
||||||
|
integrity: sha512-zg/chbXyeBtMQ1LbD/WSoW2DpC3I0mpmPdW+ynRTj/x2DAWYrIY7qeZIHidozwV24m4iavr15lNwIwLxRmOxhA==,
|
||||||
|
}
|
||||||
|
engines: { node: ">=12" }
|
||||||
|
|
||||||
|
d3-dispatch@3.0.1:
|
||||||
|
resolution:
|
||||||
|
{
|
||||||
|
integrity: sha512-rzUyPU/S7rwUflMyLc1ETDeBj0NRuHKKAcvukozwhshr6g6c5d8zh4c2gQjY2bZ0dXeGLWc1PF174P2tVvKhfg==,
|
||||||
|
}
|
||||||
|
engines: { node: ">=12" }
|
||||||
|
|
||||||
|
d3-drag@3.0.0:
|
||||||
|
resolution:
|
||||||
|
{
|
||||||
|
integrity: sha512-pWbUJLdETVA8lQNJecMxoXfH6x+mO2UQo8rSmZ+QqxcbyA3hfeprFgIT//HW2nlHChWeIIMwS2Fq+gEARkhTkg==,
|
||||||
|
}
|
||||||
|
engines: { node: ">=12" }
|
||||||
|
|
||||||
|
d3-ease@3.0.1:
|
||||||
|
resolution:
|
||||||
|
{
|
||||||
|
integrity: sha512-wR/XK3D3XcLIZwpbvQwQ5fK+8Ykds1ip7A2Txe0yxncXSdq1L9skcG7blcedkOX+ZcgxGAmLX1FrRGbADwzi0w==,
|
||||||
|
}
|
||||||
|
engines: { node: ">=12" }
|
||||||
|
|
||||||
|
d3-interpolate@3.0.1:
|
||||||
|
resolution:
|
||||||
|
{
|
||||||
|
integrity: sha512-3bYs1rOD33uo8aqJfKP3JWPAibgw8Zm2+L9vBKEHJ2Rg+viTR7o5Mmv5mZcieN+FRYaAOWX5SJATX6k1PWz72g==,
|
||||||
|
}
|
||||||
|
engines: { node: ">=12" }
|
||||||
|
|
||||||
|
d3-selection@3.0.0:
|
||||||
|
resolution:
|
||||||
|
{
|
||||||
|
integrity: sha512-fmTRWbNMmsmWq6xJV8D19U/gw/bwrHfNXxrIN+HfZgnzqTHp9jOmKMhsTUjXOJnZOdZY9Q28y4yebKzqDKlxlQ==,
|
||||||
|
}
|
||||||
|
engines: { node: ">=12" }
|
||||||
|
|
||||||
|
d3-timer@3.0.1:
|
||||||
|
resolution:
|
||||||
|
{
|
||||||
|
integrity: sha512-ndfJ/JxxMd3nw31uyKoY2naivF+r29V+Lc0svZxe1JvvIRmi8hUsrMvdOwgS1o6uBHmiz91geQ0ylPP0aj1VUA==,
|
||||||
|
}
|
||||||
|
engines: { node: ">=12" }
|
||||||
|
|
||||||
|
d3-transition@3.0.1:
|
||||||
|
resolution:
|
||||||
|
{
|
||||||
|
integrity: sha512-ApKvfjsSR6tg06xrL434C0WydLr7JewBB3V+/39RMHsaXTOG0zmt/OAXeng5M5LBm0ojmxJrpomQVZ1aPvBL4w==,
|
||||||
|
}
|
||||||
|
engines: { node: ">=12" }
|
||||||
|
peerDependencies:
|
||||||
|
d3-selection: 2 - 3
|
||||||
|
|
||||||
|
d3-zoom@3.0.0:
|
||||||
|
resolution:
|
||||||
|
{
|
||||||
|
integrity: sha512-b8AmV3kfQaqWAuacbPuNbL6vahnOJflOhexLzMMNLga62+/nh0JzvJ0aO/5a5MVgUFGS7Hu1P9P03o3fJkDCyw==,
|
||||||
|
}
|
||||||
|
engines: { node: ">=12" }
|
||||||
|
|
||||||
data-urls@5.0.0:
|
data-urls@5.0.0:
|
||||||
resolution:
|
resolution:
|
||||||
{
|
{
|
||||||
@@ -13687,6 +13880,14 @@ packages:
|
|||||||
"@types/react":
|
"@types/react":
|
||||||
optional: true
|
optional: true
|
||||||
|
|
||||||
|
use-sync-external-store@1.6.0:
|
||||||
|
resolution:
|
||||||
|
{
|
||||||
|
integrity: sha512-Pp6GSwGP/NrPIrxVFAIkOQeyw8lFenOHijQWkUTrDvrF4ALqylP2C/KCkeS9dpUM3KvYRQhna5vt7IL95+ZQ9w==,
|
||||||
|
}
|
||||||
|
peerDependencies:
|
||||||
|
react: ^16.8.0 || ^17.0.0 || ^18.0.0 || ^19.0.0
|
||||||
|
|
||||||
utf8-byte-length@1.0.5:
|
utf8-byte-length@1.0.5:
|
||||||
resolution:
|
resolution:
|
||||||
{
|
{
|
||||||
@@ -14227,6 +14428,45 @@ packages:
|
|||||||
integrity: sha512-gzUt/qt81nXsFGKIFcC3YnfEAx5NkunCfnDlvuBSSFS02bcXu4Lmea0AFIUwbLWxWPx3d9p8S5QoaujKcNQxcQ==,
|
integrity: sha512-gzUt/qt81nXsFGKIFcC3YnfEAx5NkunCfnDlvuBSSFS02bcXu4Lmea0AFIUwbLWxWPx3d9p8S5QoaujKcNQxcQ==,
|
||||||
}
|
}
|
||||||
|
|
||||||
|
zustand@4.5.7:
|
||||||
|
resolution:
|
||||||
|
{
|
||||||
|
integrity: sha512-CHOUy7mu3lbD6o6LJLfllpjkzhHXSBlX8B9+qPddUsIfeF5S/UZ5q0kmCsnRqT1UHFQZchNFDDzMbQsuesHWlw==,
|
||||||
|
}
|
||||||
|
engines: { node: ">=12.7.0" }
|
||||||
|
peerDependencies:
|
||||||
|
"@types/react": ">=16.8"
|
||||||
|
immer: ">=9.0.6"
|
||||||
|
react: ">=16.8"
|
||||||
|
peerDependenciesMeta:
|
||||||
|
"@types/react":
|
||||||
|
optional: true
|
||||||
|
immer:
|
||||||
|
optional: true
|
||||||
|
react:
|
||||||
|
optional: true
|
||||||
|
|
||||||
|
zustand@5.0.14:
|
||||||
|
resolution:
|
||||||
|
{
|
||||||
|
integrity: sha512-/8tAspM5LMPr28b3fwLYrtdj77ECpfZviaP75CMTnwO8ISyaE4GDIG/9rDDYq/cH9D2Xw2A2RXglLInmVBQB/g==,
|
||||||
|
}
|
||||||
|
engines: { node: ">=12.20.0" }
|
||||||
|
peerDependencies:
|
||||||
|
"@types/react": ">=18.0.0"
|
||||||
|
immer: ">=9.0.6"
|
||||||
|
react: ">=18.0.0"
|
||||||
|
use-sync-external-store: ">=1.2.0"
|
||||||
|
peerDependenciesMeta:
|
||||||
|
"@types/react":
|
||||||
|
optional: true
|
||||||
|
immer:
|
||||||
|
optional: true
|
||||||
|
react:
|
||||||
|
optional: true
|
||||||
|
use-sync-external-store:
|
||||||
|
optional: true
|
||||||
|
|
||||||
zwitch@2.0.4:
|
zwitch@2.0.4:
|
||||||
resolution:
|
resolution:
|
||||||
{
|
{
|
||||||
@@ -18444,6 +18684,27 @@ snapshots:
|
|||||||
dependencies:
|
dependencies:
|
||||||
"@types/node": 22.19.17
|
"@types/node": 22.19.17
|
||||||
|
|
||||||
|
"@types/d3-color@3.1.3": {}
|
||||||
|
|
||||||
|
"@types/d3-drag@3.0.7":
|
||||||
|
dependencies:
|
||||||
|
"@types/d3-selection": 3.0.11
|
||||||
|
|
||||||
|
"@types/d3-interpolate@3.0.4":
|
||||||
|
dependencies:
|
||||||
|
"@types/d3-color": 3.1.3
|
||||||
|
|
||||||
|
"@types/d3-selection@3.0.11": {}
|
||||||
|
|
||||||
|
"@types/d3-transition@3.0.9":
|
||||||
|
dependencies:
|
||||||
|
"@types/d3-selection": 3.0.11
|
||||||
|
|
||||||
|
"@types/d3-zoom@3.0.8":
|
||||||
|
dependencies:
|
||||||
|
"@types/d3-interpolate": 3.0.4
|
||||||
|
"@types/d3-selection": 3.0.11
|
||||||
|
|
||||||
"@types/debug@4.1.13":
|
"@types/debug@4.1.13":
|
||||||
dependencies:
|
dependencies:
|
||||||
"@types/ms": 2.1.0
|
"@types/ms": 2.1.0
|
||||||
@@ -18863,6 +19124,31 @@ snapshots:
|
|||||||
|
|
||||||
"@xtuc/long@4.2.2": {}
|
"@xtuc/long@4.2.2": {}
|
||||||
|
|
||||||
|
"@xyflow/react@12.11.2(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.4(react@19.2.4))(react@19.2.4)":
|
||||||
|
dependencies:
|
||||||
|
"@xyflow/system": 0.0.79
|
||||||
|
classcat: 5.0.5
|
||||||
|
react: 19.2.4
|
||||||
|
react-dom: 19.2.4(react@19.2.4)
|
||||||
|
zustand: 4.5.7(@types/react@19.2.14)(react@19.2.4)
|
||||||
|
optionalDependencies:
|
||||||
|
"@types/react": 19.2.14
|
||||||
|
"@types/react-dom": 19.2.3(@types/react@19.2.14)
|
||||||
|
transitivePeerDependencies:
|
||||||
|
- immer
|
||||||
|
|
||||||
|
"@xyflow/system@0.0.79":
|
||||||
|
dependencies:
|
||||||
|
"@types/d3-drag": 3.0.7
|
||||||
|
"@types/d3-interpolate": 3.0.4
|
||||||
|
"@types/d3-selection": 3.0.11
|
||||||
|
"@types/d3-transition": 3.0.9
|
||||||
|
"@types/d3-zoom": 3.0.8
|
||||||
|
d3-drag: 3.0.0
|
||||||
|
d3-interpolate: 3.0.1
|
||||||
|
d3-selection: 3.0.0
|
||||||
|
d3-zoom: 3.0.0
|
||||||
|
|
||||||
accepts@1.3.8:
|
accepts@1.3.8:
|
||||||
dependencies:
|
dependencies:
|
||||||
mime-types: 2.1.35
|
mime-types: 2.1.35
|
||||||
@@ -19237,6 +19523,8 @@ snapshots:
|
|||||||
|
|
||||||
cjs-module-lexer@2.2.0: {}
|
cjs-module-lexer@2.2.0: {}
|
||||||
|
|
||||||
|
classcat@5.0.5: {}
|
||||||
|
|
||||||
clean-stack@2.2.0: {}
|
clean-stack@2.2.0: {}
|
||||||
|
|
||||||
cli-cursor@5.0.0:
|
cli-cursor@5.0.0:
|
||||||
@@ -19394,6 +19682,42 @@ snapshots:
|
|||||||
find-pkg: 0.1.2
|
find-pkg: 0.1.2
|
||||||
fs-exists-sync: 0.1.0
|
fs-exists-sync: 0.1.0
|
||||||
|
|
||||||
|
d3-color@3.1.0: {}
|
||||||
|
|
||||||
|
d3-dispatch@3.0.1: {}
|
||||||
|
|
||||||
|
d3-drag@3.0.0:
|
||||||
|
dependencies:
|
||||||
|
d3-dispatch: 3.0.1
|
||||||
|
d3-selection: 3.0.0
|
||||||
|
|
||||||
|
d3-ease@3.0.1: {}
|
||||||
|
|
||||||
|
d3-interpolate@3.0.1:
|
||||||
|
dependencies:
|
||||||
|
d3-color: 3.1.0
|
||||||
|
|
||||||
|
d3-selection@3.0.0: {}
|
||||||
|
|
||||||
|
d3-timer@3.0.1: {}
|
||||||
|
|
||||||
|
d3-transition@3.0.1(d3-selection@3.0.0):
|
||||||
|
dependencies:
|
||||||
|
d3-color: 3.1.0
|
||||||
|
d3-dispatch: 3.0.1
|
||||||
|
d3-ease: 3.0.1
|
||||||
|
d3-interpolate: 3.0.1
|
||||||
|
d3-selection: 3.0.0
|
||||||
|
d3-timer: 3.0.1
|
||||||
|
|
||||||
|
d3-zoom@3.0.0:
|
||||||
|
dependencies:
|
||||||
|
d3-dispatch: 3.0.1
|
||||||
|
d3-drag: 3.0.0
|
||||||
|
d3-interpolate: 3.0.1
|
||||||
|
d3-selection: 3.0.0
|
||||||
|
d3-transition: 3.0.1(d3-selection@3.0.0)
|
||||||
|
|
||||||
data-urls@5.0.0:
|
data-urls@5.0.0:
|
||||||
dependencies:
|
dependencies:
|
||||||
whatwg-mimetype: 4.0.0
|
whatwg-mimetype: 4.0.0
|
||||||
@@ -23103,6 +23427,10 @@ snapshots:
|
|||||||
optionalDependencies:
|
optionalDependencies:
|
||||||
"@types/react": 19.2.14
|
"@types/react": 19.2.14
|
||||||
|
|
||||||
|
use-sync-external-store@1.6.0(react@19.2.4):
|
||||||
|
dependencies:
|
||||||
|
react: 19.2.4
|
||||||
|
|
||||||
utf8-byte-length@1.0.5: {}
|
utf8-byte-length@1.0.5: {}
|
||||||
|
|
||||||
util-deprecate@1.0.2: {}
|
util-deprecate@1.0.2: {}
|
||||||
@@ -23543,4 +23871,17 @@ snapshots:
|
|||||||
|
|
||||||
zod@3.25.76: {}
|
zod@3.25.76: {}
|
||||||
|
|
||||||
|
zustand@4.5.7(@types/react@19.2.14)(react@19.2.4):
|
||||||
|
dependencies:
|
||||||
|
use-sync-external-store: 1.6.0(react@19.2.4)
|
||||||
|
optionalDependencies:
|
||||||
|
"@types/react": 19.2.14
|
||||||
|
react: 19.2.4
|
||||||
|
|
||||||
|
zustand@5.0.14(@types/react@19.2.14)(react@19.2.4)(use-sync-external-store@1.6.0(react@19.2.4)):
|
||||||
|
optionalDependencies:
|
||||||
|
"@types/react": 19.2.14
|
||||||
|
react: 19.2.4
|
||||||
|
use-sync-external-store: 1.6.0(react@19.2.4)
|
||||||
|
|
||||||
zwitch@2.0.4: {}
|
zwitch@2.0.4: {}
|
||||||
|
|||||||
Reference in New Issue
Block a user