@trojanbox-vcp-test/site-edit-engine 0.1.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.
- package/README.md +85 -0
- package/dist/execute-integration/execute-fixture-harness.d.ts +25 -0
- package/dist/execute-integration/execute-fixture-harness.js +37 -0
- package/dist/index.d.ts +3 -0
- package/dist/index.js +2 -0
- package/dist/internal/ast/diagnostics/index.d.ts +5 -0
- package/dist/internal/ast/diagnostics/index.js +25 -0
- package/dist/internal/ast/history/index.d.ts +15 -0
- package/dist/internal/ast/history/index.js +62 -0
- package/dist/internal/ast/index.d.ts +8 -0
- package/dist/internal/ast/index.js +5 -0
- package/dist/internal/ast/locators/index.d.ts +1 -0
- package/dist/internal/ast/locators/index.js +1 -0
- package/dist/internal/ast/locators/resolve-locator.d.ts +16 -0
- package/dist/internal/ast/locators/resolve-locator.js +920 -0
- package/dist/internal/ast/parser/SourceParser.d.ts +30 -0
- package/dist/internal/ast/parser/SourceParser.js +49 -0
- package/dist/internal/ast/parser/index.d.ts +21 -0
- package/dist/internal/ast/parser/index.js +64 -0
- package/dist/internal/ast/primitives/conditional/conditional-primitives.d.ts +18 -0
- package/dist/internal/ast/primitives/conditional/conditional-primitives.js +237 -0
- package/dist/internal/ast/primitives/conditional/index.d.ts +1 -0
- package/dist/internal/ast/primitives/conditional/index.js +1 -0
- package/dist/internal/ast/primitives/imports/add-import.d.ts +18 -0
- package/dist/internal/ast/primitives/imports/add-import.js +111 -0
- package/dist/internal/ast/primitives/imports/index.d.ts +2 -0
- package/dist/internal/ast/primitives/imports/index.js +2 -0
- package/dist/internal/ast/primitives/imports/remove-import.d.ts +15 -0
- package/dist/internal/ast/primitives/imports/remove-import.js +72 -0
- package/dist/internal/ast/primitives/index.d.ts +10 -0
- package/dist/internal/ast/primitives/index.js +10 -0
- package/dist/internal/ast/primitives/jsx/index.d.ts +4 -0
- package/dist/internal/ast/primitives/jsx/index.js +4 -0
- package/dist/internal/ast/primitives/jsx/insert-child.d.ts +11 -0
- package/dist/internal/ast/primitives/jsx/insert-child.js +69 -0
- package/dist/internal/ast/primitives/jsx/move-node.d.ts +9 -0
- package/dist/internal/ast/primitives/jsx/move-node.js +76 -0
- package/dist/internal/ast/primitives/jsx/remove-node.d.ts +7 -0
- package/dist/internal/ast/primitives/jsx/remove-node.js +36 -0
- package/dist/internal/ast/primitives/jsx/update-text.d.ts +8 -0
- package/dist/internal/ast/primitives/jsx/update-text.js +81 -0
- package/dist/internal/ast/primitives/next/index.d.ts +1 -0
- package/dist/internal/ast/primitives/next/index.js +1 -0
- package/dist/internal/ast/primitives/next/next-primitives.d.ts +43 -0
- package/dist/internal/ast/primitives/next/next-primitives.js +211 -0
- package/dist/internal/ast/primitives/shared.d.ts +60 -0
- package/dist/internal/ast/primitives/shared.js +176 -0
- package/dist/internal/ast/primitives/style/class-expression.d.ts +23 -0
- package/dist/internal/ast/primitives/style/class-expression.js +174 -0
- package/dist/internal/ast/primitives/style/index.d.ts +1 -0
- package/dist/internal/ast/primitives/style/index.js +1 -0
- package/dist/internal/ast/primitives/style/style-primitives.d.ts +49 -0
- package/dist/internal/ast/primitives/style/style-primitives.js +555 -0
- package/dist/internal/ast/primitives/values/index.d.ts +1 -0
- package/dist/internal/ast/primitives/values/index.js +1 -0
- package/dist/internal/ast/primitives/values/value-primitives.d.ts +42 -0
- package/dist/internal/ast/primitives/values/value-primitives.js +158 -0
- package/dist/internal/ast/printer/SourcePrinter.d.ts +21 -0
- package/dist/internal/ast/printer/SourcePrinter.js +76 -0
- package/dist/internal/ast/printer/index.d.ts +6 -0
- package/dist/internal/ast/printer/index.js +126 -0
- package/dist/internal/ast/types.d.ts +190 -0
- package/dist/internal/ast/types.js +1 -0
- package/dist/internal/capability/capability-resolver.d.ts +16 -0
- package/dist/internal/capability/capability-resolver.js +127 -0
- package/dist/internal/classname-source.d.ts +24 -0
- package/dist/internal/classname-source.js +220 -0
- package/dist/internal/contracts/IEditEngineRuntime.d.ts +18 -0
- package/dist/internal/contracts/IEditEngineRuntime.js +1 -0
- package/dist/internal/domain/EditDiagnostic.d.ts +38 -0
- package/dist/internal/domain/EditDiagnostic.js +43 -0
- package/dist/internal/events/event-bus.d.ts +14 -0
- package/dist/internal/events/event-bus.js +21 -0
- package/dist/internal/graph/graph-builder.d.ts +12 -0
- package/dist/internal/graph/graph-builder.js +1371 -0
- package/dist/internal/graph/import-resolver.d.ts +31 -0
- package/dist/internal/graph/import-resolver.js +109 -0
- package/dist/internal/graph/project-graph-builder.d.ts +32 -0
- package/dist/internal/graph/project-graph-builder.js +133 -0
- package/dist/internal/graph/types.d.ts +114 -0
- package/dist/internal/graph/types.js +6 -0
- package/dist/internal/history/undo-redo.d.ts +28 -0
- package/dist/internal/history/undo-redo.js +42 -0
- package/dist/internal/index.d.ts +2 -0
- package/dist/internal/index.js +1 -0
- package/dist/internal/planner/planner.d.ts +104 -0
- package/dist/internal/planner/planner.js +2533 -0
- package/dist/internal/planner/types.d.ts +275 -0
- package/dist/internal/planner/types.js +6 -0
- package/dist/internal/protocol/boundary.d.ts +10 -0
- package/dist/internal/protocol/boundary.js +3 -0
- package/dist/internal/protocol/capability.d.ts +47 -0
- package/dist/internal/protocol/capability.js +8 -0
- package/dist/internal/protocol/error.d.ts +43 -0
- package/dist/internal/protocol/error.js +38 -0
- package/dist/internal/protocol/event.d.ts +39 -0
- package/dist/internal/protocol/event.js +3 -0
- package/dist/internal/protocol/identity.d.ts +26 -0
- package/dist/internal/protocol/identity.js +30 -0
- package/dist/internal/protocol/operation.d.ts +224 -0
- package/dist/internal/protocol/operation.js +8 -0
- package/dist/internal/protocol/render.d.ts +212 -0
- package/dist/internal/protocol/render.js +3 -0
- package/dist/internal/protocol.d.ts +9 -0
- package/dist/internal/protocol.js +2 -0
- package/dist/internal/provenance/binding-graph.d.ts +39 -0
- package/dist/internal/provenance/binding-graph.js +184 -0
- package/dist/internal/provenance/capability-policy.d.ts +15 -0
- package/dist/internal/provenance/capability-policy.js +96 -0
- package/dist/internal/provenance/data-source-classifier.d.ts +14 -0
- package/dist/internal/provenance/data-source-classifier.js +281 -0
- package/dist/internal/provenance/resolve-text-provenance.d.ts +45 -0
- package/dist/internal/provenance/resolve-text-provenance.js +3090 -0
- package/dist/internal/provenance/types.d.ts +89 -0
- package/dist/internal/provenance/types.js +1 -0
- package/dist/internal/render/component-semantic.d.ts +11 -0
- package/dist/internal/render/component-semantic.js +141 -0
- package/dist/internal/render/content-model.d.ts +3 -0
- package/dist/internal/render/content-model.js +89 -0
- package/dist/internal/render/media-model.d.ts +3 -0
- package/dist/internal/render/media-model.js +45 -0
- package/dist/internal/render/provenance-types.d.ts +33 -0
- package/dist/internal/render/provenance-types.js +1 -0
- package/dist/internal/render/render-projection.d.ts +24 -0
- package/dist/internal/render/render-projection.js +281 -0
- package/dist/internal/render/tailwind-style-model.d.ts +19 -0
- package/dist/internal/render/tailwind-style-model.js +1187 -0
- package/dist/internal/runtime/EditEngineRuntime.d.ts +25 -0
- package/dist/internal/runtime/EditEngineRuntime.js +89 -0
- package/dist/internal/runtime/EditEngineRuntimeSnapshot.d.ts +31 -0
- package/dist/internal/runtime/EditEngineRuntimeSnapshot.js +15 -0
- package/dist/internal/runtime/InternalEditEngine.d.ts +44 -0
- package/dist/internal/runtime/InternalEditEngine.js +1391 -0
- package/dist/internal/runtime.d.ts +3 -0
- package/dist/internal/runtime.js +1 -0
- package/dist/internal/topology/topology.d.ts +6 -0
- package/dist/internal/topology/topology.js +98 -0
- package/dist/internal/topology/types.d.ts +35 -0
- package/dist/internal/topology/types.js +5 -0
- package/dist/internal/types.d.ts +1 -0
- package/dist/internal/types.js +1 -0
- package/dist/internal/writeback/in-memory-fs.d.ts +7 -0
- package/dist/internal/writeback/in-memory-fs.js +44 -0
- package/dist/internal/writeback/types.d.ts +45 -0
- package/dist/internal/writeback/types.js +7 -0
- package/dist/internal/writeback/writeback-service.d.ts +7 -0
- package/dist/internal/writeback/writeback-service.js +568 -0
- package/dist/internal-adapter.d.ts +18 -0
- package/dist/internal-adapter.js +350 -0
- package/dist/next-app-router-fs.d.ts +2 -0
- package/dist/next-app-router-fs.js +64 -0
- package/dist/next-app-router.d.ts +11 -0
- package/dist/next-app-router.js +140 -0
- package/dist/preview-runtime.d.ts +394 -0
- package/dist/preview-runtime.js +102 -0
- package/dist/public-file-system.d.ts +7 -0
- package/dist/public-file-system.js +1 -0
- package/dist/runtime-sync.d.ts +95 -0
- package/dist/runtime-sync.js +321 -0
- package/dist/runtime.d.ts +340 -0
- package/dist/runtime.js +134 -0
- package/dist/site-edit-instrumentation.d.ts +19 -0
- package/dist/site-edit-instrumentation.js +322 -0
- package/dist/snapshot-file-system.d.ts +19 -0
- package/dist/snapshot-file-system.js +49 -0
- package/dist/source-watcher.d.ts +20 -0
- package/dist/source-watcher.js +150 -0
- package/dist/source-writeback-test-harness.d.ts +244 -0
- package/dist/source-writeback-test-harness.js +119 -0
- package/dist/types.d.ts +68 -0
- package/dist/types.js +1 -0
- package/dist/webpack-loader.cjs +592 -0
- package/dist/webpack-loader.d.ts +27 -0
- package/package.json +66 -0
|
@@ -0,0 +1,25 @@
|
|
|
1
|
+
import type { SiteEditGetClassNameSourceResult, SiteEditObjectCapabilities, SiteEditSetClassNameSourceRequest, SiteEditSetClassNameSourceResult } from "@trojanbox-vcp-test/contracts";
|
|
2
|
+
import type { DesignerEvent, OperationRequest, OperationResult, RenderDocument, RenderObjectDetail } from "../protocol.js";
|
|
3
|
+
import type { IEditEngineRuntime } from "../contracts/IEditEngineRuntime.js";
|
|
4
|
+
import type { EditEngineRuntimeOptions } from "./EditEngineRuntimeSnapshot.js";
|
|
5
|
+
export declare class EditEngineRuntime implements IEditEngineRuntime {
|
|
6
|
+
private readonly engine;
|
|
7
|
+
private readonly options;
|
|
8
|
+
constructor(options: EditEngineRuntimeOptions);
|
|
9
|
+
get status(): IEditEngineRuntime["status"];
|
|
10
|
+
registerRoute(routeId: string, entryFile: string): void;
|
|
11
|
+
setActiveRoute(routeId: string): Promise<void>;
|
|
12
|
+
getDocument(routeId: string): RenderDocument;
|
|
13
|
+
getObjectCapabilities(key: string, routeId?: string): SiteEditObjectCapabilities;
|
|
14
|
+
getRenderDetail(key: string, routeId?: string): RenderObjectDetail;
|
|
15
|
+
getClassNameSource(key: string, routeId?: string): SiteEditGetClassNameSourceResult;
|
|
16
|
+
setClassNameSource(request: SiteEditSetClassNameSourceRequest): Promise<SiteEditSetClassNameSourceResult>;
|
|
17
|
+
execute(request: OperationRequest): Promise<OperationResult>;
|
|
18
|
+
undo(): Promise<OperationResult>;
|
|
19
|
+
redo(): Promise<OperationResult>;
|
|
20
|
+
notifyFileChanged(file: string): void;
|
|
21
|
+
subscribe(listener: (event: DesignerEvent) => void): () => void;
|
|
22
|
+
dispose(): void;
|
|
23
|
+
private createFileSystem;
|
|
24
|
+
}
|
|
25
|
+
export declare function createEditEngineRuntime(options: EditEngineRuntimeOptions): IEditEngineRuntime;
|
|
@@ -0,0 +1,89 @@
|
|
|
1
|
+
import fs from "node:fs/promises";
|
|
2
|
+
import path from "node:path";
|
|
3
|
+
import { createInternalEditEngine, } from "./InternalEditEngine.js";
|
|
4
|
+
export class EditEngineRuntime {
|
|
5
|
+
constructor(options) {
|
|
6
|
+
this.options = options;
|
|
7
|
+
this.engine = createInternalEditEngine({
|
|
8
|
+
...options,
|
|
9
|
+
fileSystem: this.createFileSystem(),
|
|
10
|
+
});
|
|
11
|
+
}
|
|
12
|
+
get status() {
|
|
13
|
+
return this.engine.status;
|
|
14
|
+
}
|
|
15
|
+
registerRoute(routeId, entryFile) {
|
|
16
|
+
this.engine.registerRoute(routeId, entryFile);
|
|
17
|
+
}
|
|
18
|
+
async setActiveRoute(routeId) {
|
|
19
|
+
await this.engine.setActiveRoute(routeId);
|
|
20
|
+
}
|
|
21
|
+
getDocument(routeId) {
|
|
22
|
+
return this.engine.getDocument(routeId);
|
|
23
|
+
}
|
|
24
|
+
getObjectCapabilities(key, routeId) {
|
|
25
|
+
return this.engine.getObjectCapabilities(key, routeId);
|
|
26
|
+
}
|
|
27
|
+
getRenderDetail(key, routeId) {
|
|
28
|
+
return this.engine.getRenderDetail(key, routeId);
|
|
29
|
+
}
|
|
30
|
+
getClassNameSource(key, routeId) {
|
|
31
|
+
return this.engine.getClassNameSource(key, routeId);
|
|
32
|
+
}
|
|
33
|
+
setClassNameSource(request) {
|
|
34
|
+
return this.engine.setClassNameSource(request);
|
|
35
|
+
}
|
|
36
|
+
execute(request) {
|
|
37
|
+
return this.engine.execute(request);
|
|
38
|
+
}
|
|
39
|
+
undo() {
|
|
40
|
+
return this.engine.undo();
|
|
41
|
+
}
|
|
42
|
+
redo() {
|
|
43
|
+
return this.engine.redo();
|
|
44
|
+
}
|
|
45
|
+
notifyFileChanged(file) {
|
|
46
|
+
this.engine.notifyFileChanged(file);
|
|
47
|
+
}
|
|
48
|
+
subscribe(listener) {
|
|
49
|
+
return this.engine.subscribe(listener);
|
|
50
|
+
}
|
|
51
|
+
dispose() {
|
|
52
|
+
this.engine.dispose();
|
|
53
|
+
}
|
|
54
|
+
createFileSystem() {
|
|
55
|
+
if (this.options.fileSystem) {
|
|
56
|
+
return this.options.fileSystem;
|
|
57
|
+
}
|
|
58
|
+
const versions = new Map();
|
|
59
|
+
const { projectRoot } = this.options;
|
|
60
|
+
return {
|
|
61
|
+
async readFile(file) {
|
|
62
|
+
return fs.readFile(path.join(projectRoot, file), "utf8");
|
|
63
|
+
},
|
|
64
|
+
async writeFile(file, content) {
|
|
65
|
+
await fs.writeFile(path.join(projectRoot, file), content, "utf8");
|
|
66
|
+
},
|
|
67
|
+
async exists(file) {
|
|
68
|
+
try {
|
|
69
|
+
await fs.access(path.join(projectRoot, file));
|
|
70
|
+
return true;
|
|
71
|
+
}
|
|
72
|
+
catch {
|
|
73
|
+
return false;
|
|
74
|
+
}
|
|
75
|
+
},
|
|
76
|
+
getVersion(file) {
|
|
77
|
+
return versions.get(file) ?? 0;
|
|
78
|
+
},
|
|
79
|
+
bumpVersion(file) {
|
|
80
|
+
const nextVersion = (versions.get(file) ?? 0) + 1;
|
|
81
|
+
versions.set(file, nextVersion);
|
|
82
|
+
return nextVersion;
|
|
83
|
+
},
|
|
84
|
+
};
|
|
85
|
+
}
|
|
86
|
+
}
|
|
87
|
+
export function createEditEngineRuntime(options) {
|
|
88
|
+
return new EditEngineRuntime(options);
|
|
89
|
+
}
|
|
@@ -0,0 +1,31 @@
|
|
|
1
|
+
import type { DesignerEvent, RenderDocument, RenderObjectDetail } from "../protocol.js";
|
|
2
|
+
import type { ExternalSourceResolver, FunctionCallContract } from "../provenance/types.js";
|
|
3
|
+
import type { ProjectFileSystem } from "../types.js";
|
|
4
|
+
import type { ExternalWritebackAdapter } from "../writeback/types.js";
|
|
5
|
+
export type { ExternalSourceResolver, FunctionCallContract, } from "../provenance/types.js";
|
|
6
|
+
export type { ProjectFileSystem } from "../types.js";
|
|
7
|
+
export type { ExternalWritebackAdapter } from "../writeback/types.js";
|
|
8
|
+
export type RuntimeRouteConfig = {
|
|
9
|
+
routeId: string;
|
|
10
|
+
entryFile: string;
|
|
11
|
+
};
|
|
12
|
+
export type EditEngineRuntimeOptions = {
|
|
13
|
+
projectRoot: string;
|
|
14
|
+
fileSystem?: ProjectFileSystem;
|
|
15
|
+
externalAdapters?: ExternalWritebackAdapter[];
|
|
16
|
+
externalSourceResolvers?: ExternalSourceResolver[];
|
|
17
|
+
functionCallContracts?: FunctionCallContract[];
|
|
18
|
+
onEvent?: (event: DesignerEvent) => void;
|
|
19
|
+
dev?: boolean;
|
|
20
|
+
routes: RuntimeRouteConfig[];
|
|
21
|
+
};
|
|
22
|
+
export declare class EditEngineRuntimeSnapshot {
|
|
23
|
+
readonly routeId: string;
|
|
24
|
+
readonly initialDocument: RenderDocument;
|
|
25
|
+
readonly initialDetails: Record<string, RenderObjectDetail>;
|
|
26
|
+
constructor(routeId: string, initialDocument: RenderDocument, initialDetails: Record<string, RenderObjectDetail>);
|
|
27
|
+
static capture(routeId: string, runtime: Pick<{
|
|
28
|
+
getDocument(routeId: string): RenderDocument;
|
|
29
|
+
getRenderDetail(key: string): RenderObjectDetail;
|
|
30
|
+
}, "getDocument" | "getRenderDetail">): EditEngineRuntimeSnapshot;
|
|
31
|
+
}
|
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
export class EditEngineRuntimeSnapshot {
|
|
2
|
+
constructor(routeId, initialDocument, initialDetails) {
|
|
3
|
+
this.routeId = routeId;
|
|
4
|
+
this.initialDocument = initialDocument;
|
|
5
|
+
this.initialDetails = initialDetails;
|
|
6
|
+
}
|
|
7
|
+
static capture(routeId, runtime) {
|
|
8
|
+
const initialDocument = runtime.getDocument(routeId);
|
|
9
|
+
const initialDetails = Object.fromEntries(initialDocument.entries.map((entry) => [
|
|
10
|
+
entry.key,
|
|
11
|
+
runtime.getRenderDetail(entry.key),
|
|
12
|
+
]));
|
|
13
|
+
return new EditEngineRuntimeSnapshot(routeId, initialDocument, initialDetails);
|
|
14
|
+
}
|
|
15
|
+
}
|
|
@@ -0,0 +1,44 @@
|
|
|
1
|
+
import type { SiteEditGetClassNameSourceResult, SiteEditObjectCapabilities, SiteEditSetClassNameSourceRequest, SiteEditSetClassNameSourceResult } from "@trojanbox-vcp-test/contracts";
|
|
2
|
+
import type { RenderDocument, RenderObjectDetail, OperationRequest, OperationResult, DesignerEvent } from "../protocol.js";
|
|
3
|
+
import type { ProjectFileSystem } from "./EditEngineRuntimeSnapshot.js";
|
|
4
|
+
import type { ExternalSourceResolver, FunctionCallContract } from "../provenance/types.js";
|
|
5
|
+
import type { ExternalWritebackAdapter } from "../writeback/types.js";
|
|
6
|
+
/**
|
|
7
|
+
* Engine 配置。
|
|
8
|
+
*/
|
|
9
|
+
export interface InternalEditEngineConfig {
|
|
10
|
+
projectRoot: string;
|
|
11
|
+
routes?: Array<{
|
|
12
|
+
routeId: string;
|
|
13
|
+
entryFile: string;
|
|
14
|
+
}>;
|
|
15
|
+
fileSystem?: ProjectFileSystem;
|
|
16
|
+
externalAdapters?: ExternalWritebackAdapter[];
|
|
17
|
+
externalSourceResolvers?: ExternalSourceResolver[];
|
|
18
|
+
functionCallContracts?: FunctionCallContract[];
|
|
19
|
+
onEvent?: (event: DesignerEvent) => void;
|
|
20
|
+
dev?: boolean;
|
|
21
|
+
}
|
|
22
|
+
/**
|
|
23
|
+
* DesignerEngine —— 核心引擎接口。
|
|
24
|
+
*/
|
|
25
|
+
export interface InternalEditEngine {
|
|
26
|
+
readonly status: "idle" | "building" | "ready" | "disposed";
|
|
27
|
+
dispose(): void;
|
|
28
|
+
registerRoute(routeId: string, entryFile: string): void;
|
|
29
|
+
setActiveRoute(routeId: string): Promise<void>;
|
|
30
|
+
getDocument(routeId: string): RenderDocument;
|
|
31
|
+
getObjectCapabilities(key: string, routeId?: string): SiteEditObjectCapabilities;
|
|
32
|
+
getRenderDetail(key: string, routeId?: string): RenderObjectDetail;
|
|
33
|
+
getClassNameSource(key: string, routeId?: string): SiteEditGetClassNameSourceResult;
|
|
34
|
+
setClassNameSource(request: SiteEditSetClassNameSourceRequest): Promise<SiteEditSetClassNameSourceResult>;
|
|
35
|
+
execute(request: OperationRequest): Promise<OperationResult>;
|
|
36
|
+
undo(): Promise<OperationResult>;
|
|
37
|
+
redo(): Promise<OperationResult>;
|
|
38
|
+
notifyFileChanged(file: string): void;
|
|
39
|
+
subscribe(listener: (event: DesignerEvent) => void): () => void;
|
|
40
|
+
}
|
|
41
|
+
/**
|
|
42
|
+
* 创建 DesignerEngine 实例。
|
|
43
|
+
*/
|
|
44
|
+
export declare function createInternalEditEngine(config: InternalEditEngineConfig): InternalEditEngine;
|