@manifesto-ai/codegen 0.1.0 → 0.1.2
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 +2 -2
- package/dist/index.d.ts +114 -10
- package/dist/index.js +543 -13
- package/dist/index.js.map +1 -1
- package/package.json +4 -4
- package/dist/header.d.ts +0 -13
- package/dist/header.d.ts.map +0 -1
- package/dist/header.js +0 -18
- package/dist/header.js.map +0 -1
- package/dist/index.d.ts.map +0 -1
- package/dist/path-safety.d.ts +0 -16
- package/dist/path-safety.d.ts.map +0 -1
- package/dist/path-safety.js +0 -47
- package/dist/path-safety.js.map +0 -1
- package/dist/plugins/index.d.ts +0 -5
- package/dist/plugins/index.d.ts.map +0 -1
- package/dist/plugins/index.js +0 -3
- package/dist/plugins/index.js.map +0 -1
- package/dist/plugins/ts-plugin.d.ts +0 -11
- package/dist/plugins/ts-plugin.d.ts.map +0 -1
- package/dist/plugins/ts-plugin.js +0 -202
- package/dist/plugins/ts-plugin.js.map +0 -1
- package/dist/plugins/zod-plugin.d.ts +0 -6
- package/dist/plugins/zod-plugin.d.ts.map +0 -1
- package/dist/plugins/zod-plugin.js +0 -138
- package/dist/plugins/zod-plugin.js.map +0 -1
- package/dist/runner.d.ts +0 -13
- package/dist/runner.d.ts.map +0 -1
- package/dist/runner.js +0 -126
- package/dist/runner.js.map +0 -1
- package/dist/stable-hash.d.ts +0 -7
- package/dist/stable-hash.d.ts.map +0 -1
- package/dist/stable-hash.js +0 -11
- package/dist/stable-hash.js.map +0 -1
- package/dist/types.d.ts +0 -50
- package/dist/types.d.ts.map +0 -1
- package/dist/types.js +0 -2
- package/dist/types.js.map +0 -1
- package/dist/virtual-fs.d.ts +0 -27
- package/dist/virtual-fs.d.ts.map +0 -1
- package/dist/virtual-fs.js +0 -74
- package/dist/virtual-fs.js.map +0 -1
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"zod-plugin.js","sourceRoot":"","sources":["../../src/plugins/zod-plugin.ts"],"names":[],"mappings":"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"}
|
package/dist/runner.d.ts
DELETED
|
@@ -1,13 +0,0 @@
|
|
|
1
|
-
import type { GenerateOptions, GenerateResult } from "./types.js";
|
|
2
|
-
/**
|
|
3
|
-
* Generate typed artifacts from a DomainSchema using plugins.
|
|
4
|
-
*
|
|
5
|
-
* This is the sole entry point for codegen. It orchestrates:
|
|
6
|
-
* - Plugin name uniqueness validation (GEN-2)
|
|
7
|
-
* - Sequential plugin execution (GEN-3, GEN-7)
|
|
8
|
-
* - FilePatch composition with collision detection
|
|
9
|
-
* - Error gating (GEN-5, GEN-8)
|
|
10
|
-
* - outDir clean + file flush (GEN-1)
|
|
11
|
-
*/
|
|
12
|
-
export declare function generate(opts: GenerateOptions): Promise<GenerateResult>;
|
|
13
|
-
//# sourceMappingURL=runner.d.ts.map
|
package/dist/runner.d.ts.map
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"runner.d.ts","sourceRoot":"","sources":["../src/runner.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAIV,eAAe,EACf,cAAc,EACf,MAAM,YAAY,CAAC;AAMpB;;;;;;;;;GASG;AACH,wBAAsB,QAAQ,CAAC,IAAI,EAAE,eAAe,GAAG,OAAO,CAAC,cAAc,CAAC,CAqG7E"}
|
package/dist/runner.js
DELETED
|
@@ -1,126 +0,0 @@
|
|
|
1
|
-
import * as fs from "node:fs/promises";
|
|
2
|
-
import * as nodePath from "node:path";
|
|
3
|
-
import { VirtualFS } from "./virtual-fs.js";
|
|
4
|
-
import { validatePath } from "./path-safety.js";
|
|
5
|
-
import { stableHash } from "./stable-hash.js";
|
|
6
|
-
import { generateHeader } from "./header.js";
|
|
7
|
-
/**
|
|
8
|
-
* Generate typed artifacts from a DomainSchema using plugins.
|
|
9
|
-
*
|
|
10
|
-
* This is the sole entry point for codegen. It orchestrates:
|
|
11
|
-
* - Plugin name uniqueness validation (GEN-2)
|
|
12
|
-
* - Sequential plugin execution (GEN-3, GEN-7)
|
|
13
|
-
* - FilePatch composition with collision detection
|
|
14
|
-
* - Error gating (GEN-5, GEN-8)
|
|
15
|
-
* - outDir clean + file flush (GEN-1)
|
|
16
|
-
*/
|
|
17
|
-
export async function generate(opts) {
|
|
18
|
-
const diagnostics = [];
|
|
19
|
-
const allArtifacts = {};
|
|
20
|
-
const vfs = new VirtualFS();
|
|
21
|
-
// GEN-2: Validate plugin name uniqueness
|
|
22
|
-
const nameError = validatePluginNames(opts.plugins);
|
|
23
|
-
if (nameError) {
|
|
24
|
-
return {
|
|
25
|
-
files: [],
|
|
26
|
-
artifacts: {},
|
|
27
|
-
diagnostics: [nameError],
|
|
28
|
-
};
|
|
29
|
-
}
|
|
30
|
-
// GEN-3, GEN-7: Execute plugins sequentially in array order
|
|
31
|
-
for (const plugin of opts.plugins) {
|
|
32
|
-
const ctx = {
|
|
33
|
-
schema: opts.schema,
|
|
34
|
-
sourceId: opts.sourceId,
|
|
35
|
-
outDir: opts.outDir,
|
|
36
|
-
artifacts: Object.freeze({ ...allArtifacts }), // PLG-9: frozen snapshot
|
|
37
|
-
helpers: { stableHash },
|
|
38
|
-
};
|
|
39
|
-
let output;
|
|
40
|
-
try {
|
|
41
|
-
output = await plugin.generate(ctx);
|
|
42
|
-
}
|
|
43
|
-
catch (err) {
|
|
44
|
-
// Convert plugin exceptions to error diagnostics (errors as values)
|
|
45
|
-
diagnostics.push({
|
|
46
|
-
level: "error",
|
|
47
|
-
plugin: plugin.name,
|
|
48
|
-
message: `Plugin threw: ${err instanceof Error ? err.message : String(err)}`,
|
|
49
|
-
});
|
|
50
|
-
continue;
|
|
51
|
-
}
|
|
52
|
-
// GEN-4: Merge plugin diagnostics
|
|
53
|
-
if (output.diagnostics) {
|
|
54
|
-
diagnostics.push(...output.diagnostics);
|
|
55
|
-
}
|
|
56
|
-
// Validate and apply patches
|
|
57
|
-
for (const patch of output.patches) {
|
|
58
|
-
const validation = validatePath(patch.path);
|
|
59
|
-
if (!validation.valid) {
|
|
60
|
-
diagnostics.push({
|
|
61
|
-
level: "error",
|
|
62
|
-
plugin: plugin.name,
|
|
63
|
-
message: `Invalid path "${patch.path}": ${validation.reason}`,
|
|
64
|
-
});
|
|
65
|
-
continue;
|
|
66
|
-
}
|
|
67
|
-
// Apply with normalized path
|
|
68
|
-
const normalizedPatch = patch.op === "set"
|
|
69
|
-
? { op: "set", path: validation.normalized, content: patch.content }
|
|
70
|
-
: { op: "delete", path: validation.normalized };
|
|
71
|
-
const collision = vfs.applyPatch(normalizedPatch, plugin.name);
|
|
72
|
-
if (collision) {
|
|
73
|
-
diagnostics.push(collision);
|
|
74
|
-
}
|
|
75
|
-
}
|
|
76
|
-
// PLG-8: Store artifacts at allArtifacts[plugin.name]
|
|
77
|
-
if (output.artifacts) {
|
|
78
|
-
allArtifacts[plugin.name] = output.artifacts;
|
|
79
|
-
}
|
|
80
|
-
}
|
|
81
|
-
// Collect files from VFS
|
|
82
|
-
const files = vfs.getFiles();
|
|
83
|
-
// GEN-5, GEN-8: Error gate — no disk mutation on error
|
|
84
|
-
const hasErrors = diagnostics.some((d) => d.level === "error");
|
|
85
|
-
if (hasErrors) {
|
|
86
|
-
return { files, artifacts: allArtifacts, diagnostics };
|
|
87
|
-
}
|
|
88
|
-
// GEN-1: Clean outDir before write
|
|
89
|
-
await fs.rm(opts.outDir, { recursive: true, force: true });
|
|
90
|
-
// Build header
|
|
91
|
-
const header = generateHeader({
|
|
92
|
-
sourceId: opts.sourceId,
|
|
93
|
-
schemaHash: opts.schema.hash,
|
|
94
|
-
stamp: opts.stamp,
|
|
95
|
-
});
|
|
96
|
-
// Flush files to disk (GEN-6: OS path conversion only at write time)
|
|
97
|
-
for (const file of files) {
|
|
98
|
-
const absPath = nodePath.join(opts.outDir, ...file.path.split("/"));
|
|
99
|
-
const dir = nodePath.dirname(absPath);
|
|
100
|
-
await fs.mkdir(dir, { recursive: true });
|
|
101
|
-
await fs.writeFile(absPath, header + file.content, "utf-8");
|
|
102
|
-
}
|
|
103
|
-
return { files, artifacts: allArtifacts, diagnostics };
|
|
104
|
-
}
|
|
105
|
-
function validatePluginNames(plugins) {
|
|
106
|
-
const seen = new Set();
|
|
107
|
-
for (const plugin of plugins) {
|
|
108
|
-
if (!plugin.name) {
|
|
109
|
-
return {
|
|
110
|
-
level: "error",
|
|
111
|
-
plugin: "",
|
|
112
|
-
message: "Plugin name must not be empty (PLG-1)",
|
|
113
|
-
};
|
|
114
|
-
}
|
|
115
|
-
if (seen.has(plugin.name)) {
|
|
116
|
-
return {
|
|
117
|
-
level: "error",
|
|
118
|
-
plugin: plugin.name,
|
|
119
|
-
message: `Duplicate plugin name "${plugin.name}" (GEN-2)`,
|
|
120
|
-
};
|
|
121
|
-
}
|
|
122
|
-
seen.add(plugin.name);
|
|
123
|
-
}
|
|
124
|
-
return undefined;
|
|
125
|
-
}
|
|
126
|
-
//# sourceMappingURL=runner.js.map
|
package/dist/runner.js.map
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"runner.js","sourceRoot":"","sources":["../src/runner.ts"],"names":[],"mappings":"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"}
|
package/dist/stable-hash.d.ts
DELETED
|
@@ -1,7 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* Deterministic hash function (DET-1).
|
|
3
|
-
* Same input always produces the same output.
|
|
4
|
-
* Uses Core's canonical form (sorted keys, no undefined) + SHA-256.
|
|
5
|
-
*/
|
|
6
|
-
export declare function stableHash(input: unknown): string;
|
|
7
|
-
//# sourceMappingURL=stable-hash.d.ts.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"stable-hash.d.ts","sourceRoot":"","sources":["../src/stable-hash.ts"],"names":[],"mappings":"AAEA;;;;GAIG;AACH,wBAAgB,UAAU,CAAC,KAAK,EAAE,OAAO,GAAG,MAAM,CAGjD"}
|
package/dist/stable-hash.js
DELETED
|
@@ -1,11 +0,0 @@
|
|
|
1
|
-
import { toCanonical, sha256Sync } from "@manifesto-ai/core";
|
|
2
|
-
/**
|
|
3
|
-
* Deterministic hash function (DET-1).
|
|
4
|
-
* Same input always produces the same output.
|
|
5
|
-
* Uses Core's canonical form (sorted keys, no undefined) + SHA-256.
|
|
6
|
-
*/
|
|
7
|
-
export function stableHash(input) {
|
|
8
|
-
const canonical = toCanonical(input);
|
|
9
|
-
return sha256Sync(canonical);
|
|
10
|
-
}
|
|
11
|
-
//# sourceMappingURL=stable-hash.js.map
|
package/dist/stable-hash.js.map
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"stable-hash.js","sourceRoot":"","sources":["../src/stable-hash.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,WAAW,EAAE,UAAU,EAAE,MAAM,oBAAoB,CAAC;AAE7D;;;;GAIG;AACH,MAAM,UAAU,UAAU,CAAC,KAAc;IACvC,MAAM,SAAS,GAAG,WAAW,CAAC,KAAK,CAAC,CAAC;IACrC,OAAO,UAAU,CAAC,SAAS,CAAC,CAAC;AAC/B,CAAC"}
|
package/dist/types.d.ts
DELETED
|
@@ -1,50 +0,0 @@
|
|
|
1
|
-
import type { DomainSchema } from "@manifesto-ai/core";
|
|
2
|
-
export type { DomainSchema };
|
|
3
|
-
export type Diagnostic = {
|
|
4
|
-
readonly level: "warn" | "error";
|
|
5
|
-
readonly plugin: string;
|
|
6
|
-
readonly message: string;
|
|
7
|
-
};
|
|
8
|
-
export type FilePatch = {
|
|
9
|
-
readonly op: "set";
|
|
10
|
-
readonly path: string;
|
|
11
|
-
readonly content: string;
|
|
12
|
-
} | {
|
|
13
|
-
readonly op: "delete";
|
|
14
|
-
readonly path: string;
|
|
15
|
-
};
|
|
16
|
-
export interface CodegenHelpers {
|
|
17
|
-
stableHash(input: unknown): string;
|
|
18
|
-
}
|
|
19
|
-
export interface CodegenContext {
|
|
20
|
-
readonly schema: DomainSchema;
|
|
21
|
-
readonly sourceId?: string;
|
|
22
|
-
readonly outDir: string;
|
|
23
|
-
readonly artifacts: Readonly<Record<string, unknown>>;
|
|
24
|
-
readonly helpers: CodegenHelpers;
|
|
25
|
-
}
|
|
26
|
-
export interface CodegenOutput {
|
|
27
|
-
readonly patches: readonly FilePatch[];
|
|
28
|
-
readonly artifacts?: Readonly<Record<string, unknown>>;
|
|
29
|
-
readonly diagnostics?: readonly Diagnostic[];
|
|
30
|
-
}
|
|
31
|
-
export interface CodegenPlugin {
|
|
32
|
-
readonly name: string;
|
|
33
|
-
generate(ctx: CodegenContext): CodegenOutput | Promise<CodegenOutput>;
|
|
34
|
-
}
|
|
35
|
-
export interface GenerateOptions {
|
|
36
|
-
readonly schema: DomainSchema;
|
|
37
|
-
readonly outDir: string;
|
|
38
|
-
readonly plugins: readonly CodegenPlugin[];
|
|
39
|
-
readonly sourceId?: string;
|
|
40
|
-
readonly stamp?: boolean;
|
|
41
|
-
}
|
|
42
|
-
export interface GenerateResult {
|
|
43
|
-
readonly files: ReadonlyArray<{
|
|
44
|
-
readonly path: string;
|
|
45
|
-
readonly content: string;
|
|
46
|
-
}>;
|
|
47
|
-
readonly artifacts: Readonly<Record<string, unknown>>;
|
|
48
|
-
readonly diagnostics: readonly Diagnostic[];
|
|
49
|
-
}
|
|
50
|
-
//# sourceMappingURL=types.d.ts.map
|
package/dist/types.d.ts.map
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../src/types.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,oBAAoB,CAAC;AAEvD,YAAY,EAAE,YAAY,EAAE,CAAC;AAE7B,MAAM,MAAM,UAAU,GAAG;IACvB,QAAQ,CAAC,KAAK,EAAE,MAAM,GAAG,OAAO,CAAC;IACjC,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAC;IACxB,QAAQ,CAAC,OAAO,EAAE,MAAM,CAAC;CAC1B,CAAC;AAEF,MAAM,MAAM,SAAS,GACjB;IAAE,QAAQ,CAAC,EAAE,EAAE,KAAK,CAAC;IAAC,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;IAAC,QAAQ,CAAC,OAAO,EAAE,MAAM,CAAA;CAAE,GACvE;IAAE,QAAQ,CAAC,EAAE,EAAE,QAAQ,CAAC;IAAC,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAA;CAAE,CAAC;AAErD,MAAM,WAAW,cAAc;IAC7B,UAAU,CAAC,KAAK,EAAE,OAAO,GAAG,MAAM,CAAC;CACpC;AAED,MAAM,WAAW,cAAc;IAC7B,QAAQ,CAAC,MAAM,EAAE,YAAY,CAAC;IAC9B,QAAQ,CAAC,QAAQ,CAAC,EAAE,MAAM,CAAC;IAC3B,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAC;IACxB,QAAQ,CAAC,SAAS,EAAE,QAAQ,CAAC,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC,CAAC;IACtD,QAAQ,CAAC,OAAO,EAAE,cAAc,CAAC;CAClC;AAED,MAAM,WAAW,aAAa;IAC5B,QAAQ,CAAC,OAAO,EAAE,SAAS,SAAS,EAAE,CAAC;IACvC,QAAQ,CAAC,SAAS,CAAC,EAAE,QAAQ,CAAC,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC,CAAC;IACvD,QAAQ,CAAC,WAAW,CAAC,EAAE,SAAS,UAAU,EAAE,CAAC;CAC9C;AAED,MAAM,WAAW,aAAa;IAC5B,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;IACtB,QAAQ,CAAC,GAAG,EAAE,cAAc,GAAG,aAAa,GAAG,OAAO,CAAC,aAAa,CAAC,CAAC;CACvE;AAED,MAAM,WAAW,eAAe;IAC9B,QAAQ,CAAC,MAAM,EAAE,YAAY,CAAC;IAC9B,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAC;IACxB,QAAQ,CAAC,OAAO,EAAE,SAAS,aAAa,EAAE,CAAC;IAC3C,QAAQ,CAAC,QAAQ,CAAC,EAAE,MAAM,CAAC;IAC3B,QAAQ,CAAC,KAAK,CAAC,EAAE,OAAO,CAAC;CAC1B;AAED,MAAM,WAAW,cAAc;IAC7B,QAAQ,CAAC,KAAK,EAAE,aAAa,CAAC;QAAE,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;QAAC,QAAQ,CAAC,OAAO,EAAE,MAAM,CAAA;KAAE,CAAC,CAAC;IACnF,QAAQ,CAAC,SAAS,EAAE,QAAQ,CAAC,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC,CAAC;IACtD,QAAQ,CAAC,WAAW,EAAE,SAAS,UAAU,EAAE,CAAC;CAC7C"}
|
package/dist/types.js
DELETED
package/dist/types.js.map
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"types.js","sourceRoot":"","sources":["../src/types.ts"],"names":[],"mappings":""}
|
package/dist/virtual-fs.d.ts
DELETED
|
@@ -1,27 +0,0 @@
|
|
|
1
|
-
import type { Diagnostic, FilePatch } from "./types.js";
|
|
2
|
-
/**
|
|
3
|
-
* Virtual filesystem for composing FilePatch operations.
|
|
4
|
-
*
|
|
5
|
-
* Maintains an in-memory FS and detects collisions per FP-5, FP-6, FP-7.
|
|
6
|
-
* Paths are assumed to be already validated/normalized.
|
|
7
|
-
*/
|
|
8
|
-
export declare class VirtualFS {
|
|
9
|
-
private readonly files;
|
|
10
|
-
private readonly deleted;
|
|
11
|
-
/**
|
|
12
|
-
* Apply a FilePatch to the virtual FS.
|
|
13
|
-
* Returns a Diagnostic if a collision/warning condition is detected.
|
|
14
|
-
*/
|
|
15
|
-
applyPatch(patch: FilePatch, pluginName: string): Diagnostic | undefined;
|
|
16
|
-
private applySet;
|
|
17
|
-
private applyDelete;
|
|
18
|
-
/**
|
|
19
|
-
* Get all files in deterministic (lexicographic) order (DET-5).
|
|
20
|
-
*/
|
|
21
|
-
getFiles(): Array<{
|
|
22
|
-
path: string;
|
|
23
|
-
content: string;
|
|
24
|
-
}>;
|
|
25
|
-
has(path: string): boolean;
|
|
26
|
-
}
|
|
27
|
-
//# sourceMappingURL=virtual-fs.d.ts.map
|
package/dist/virtual-fs.d.ts.map
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"virtual-fs.d.ts","sourceRoot":"","sources":["../src/virtual-fs.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,UAAU,EAAE,SAAS,EAAE,MAAM,YAAY,CAAC;AAOxD;;;;;GAKG;AACH,qBAAa,SAAS;IACpB,OAAO,CAAC,QAAQ,CAAC,KAAK,CAAgC;IACtD,OAAO,CAAC,QAAQ,CAAC,OAAO,CAAqB;IAE7C;;;OAGG;IACH,UAAU,CAAC,KAAK,EAAE,SAAS,EAAE,UAAU,EAAE,MAAM,GAAG,UAAU,GAAG,SAAS;IAOxE,OAAO,CAAC,QAAQ;IAqBhB,OAAO,CAAC,WAAW;IA4BnB;;OAEG;IACH,QAAQ,IAAI,KAAK,CAAC;QAAE,IAAI,EAAE,MAAM,CAAC;QAAC,OAAO,EAAE,MAAM,CAAA;KAAE,CAAC;IAMpD,GAAG,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO;CAG3B"}
|
package/dist/virtual-fs.js
DELETED
|
@@ -1,74 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* Virtual filesystem for composing FilePatch operations.
|
|
3
|
-
*
|
|
4
|
-
* Maintains an in-memory FS and detects collisions per FP-5, FP-6, FP-7.
|
|
5
|
-
* Paths are assumed to be already validated/normalized.
|
|
6
|
-
*/
|
|
7
|
-
export class VirtualFS {
|
|
8
|
-
files = new Map();
|
|
9
|
-
deleted = new Set();
|
|
10
|
-
/**
|
|
11
|
-
* Apply a FilePatch to the virtual FS.
|
|
12
|
-
* Returns a Diagnostic if a collision/warning condition is detected.
|
|
13
|
-
*/
|
|
14
|
-
applyPatch(patch, pluginName) {
|
|
15
|
-
if (patch.op === "set") {
|
|
16
|
-
return this.applySet(patch.path, patch.content, pluginName);
|
|
17
|
-
}
|
|
18
|
-
return this.applyDelete(patch.path, pluginName);
|
|
19
|
-
}
|
|
20
|
-
applySet(path, content, pluginName) {
|
|
21
|
-
const existing = this.files.get(path);
|
|
22
|
-
if (existing) {
|
|
23
|
-
// FP-5: Duplicate set on same path -> error
|
|
24
|
-
const samePlugin = existing.source === pluginName;
|
|
25
|
-
return {
|
|
26
|
-
level: "error",
|
|
27
|
-
plugin: pluginName,
|
|
28
|
-
message: samePlugin
|
|
29
|
-
? `Duplicate set on "${path}" within plugin "${pluginName}"`
|
|
30
|
-
: `File "${path}" already set by plugin "${existing.source}", cannot be set again by "${pluginName}"`,
|
|
31
|
-
};
|
|
32
|
-
}
|
|
33
|
-
// delete-then-set is allowed (intentional regeneration)
|
|
34
|
-
this.deleted.delete(path);
|
|
35
|
-
this.files.set(path, { content, source: pluginName });
|
|
36
|
-
return undefined;
|
|
37
|
-
}
|
|
38
|
-
applyDelete(path, pluginName) {
|
|
39
|
-
const existing = this.files.get(path);
|
|
40
|
-
if (!existing && !this.deleted.has(path)) {
|
|
41
|
-
// FP-7: Delete on nonexistent path -> warn
|
|
42
|
-
return {
|
|
43
|
-
level: "warn",
|
|
44
|
-
plugin: pluginName,
|
|
45
|
-
message: `Delete on nonexistent path "${path}"`,
|
|
46
|
-
};
|
|
47
|
-
}
|
|
48
|
-
if (existing) {
|
|
49
|
-
// FP-6: set-then-delete -> allowed with warning
|
|
50
|
-
this.files.delete(path);
|
|
51
|
-
this.deleted.add(path);
|
|
52
|
-
return {
|
|
53
|
-
level: "warn",
|
|
54
|
-
plugin: pluginName,
|
|
55
|
-
message: `File "${path}" set by plugin "${existing.source}" is being deleted by "${pluginName}". Prior work is voided.`,
|
|
56
|
-
};
|
|
57
|
-
}
|
|
58
|
-
// Already deleted - just track it
|
|
59
|
-
this.deleted.add(path);
|
|
60
|
-
return undefined;
|
|
61
|
-
}
|
|
62
|
-
/**
|
|
63
|
-
* Get all files in deterministic (lexicographic) order (DET-5).
|
|
64
|
-
*/
|
|
65
|
-
getFiles() {
|
|
66
|
-
const entries = Array.from(this.files.entries());
|
|
67
|
-
entries.sort(([a], [b]) => a.localeCompare(b));
|
|
68
|
-
return entries.map(([path, { content }]) => ({ path, content }));
|
|
69
|
-
}
|
|
70
|
-
has(path) {
|
|
71
|
-
return this.files.has(path);
|
|
72
|
-
}
|
|
73
|
-
}
|
|
74
|
-
//# sourceMappingURL=virtual-fs.js.map
|
package/dist/virtual-fs.js.map
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"virtual-fs.js","sourceRoot":"","sources":["../src/virtual-fs.ts"],"names":[],"mappings":"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"}
|