semantifold 0.9.0 → 0.10.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 +6 -3
- package/bin/semantifold.js +6 -0
- package/build/bin/semantifold.d.ts +3 -0
- package/build/bin/semantifold.d.ts.map +1 -0
- package/build/bin/semantifold.js +5 -0
- package/build/index.d.ts +8 -0
- package/build/index.d.ts.map +1 -1
- package/build/index.js +9 -1
- package/build/src/artifact-path.d.ts +16 -0
- package/build/src/artifact-path.d.ts.map +1 -1
- package/build/src/artifact-path.js +29 -3
- package/build/src/backends/c-check.d.ts +7 -0
- package/build/src/backends/c-check.d.ts.map +1 -0
- package/build/src/backends/c-check.js +65 -0
- package/build/src/backends/check-plan.d.ts +96 -0
- package/build/src/backends/check-plan.d.ts.map +1 -0
- package/build/src/backends/check-plan.js +135 -0
- package/build/src/backends/cpp-check.d.ts +7 -0
- package/build/src/backends/cpp-check.d.ts.map +1 -0
- package/build/src/backends/cpp-check.js +59 -0
- package/build/src/backends/csharp-check.d.ts +7 -0
- package/build/src/backends/csharp-check.d.ts.map +1 -0
- package/build/src/backends/csharp-check.js +125 -0
- package/build/src/backends/csharp.d.ts +1 -0
- package/build/src/backends/csharp.d.ts.map +1 -1
- package/build/src/backends/csharp.js +5 -4
- package/build/src/backends/dart-check.d.ts +7 -0
- package/build/src/backends/dart-check.d.ts.map +1 -0
- package/build/src/backends/dart-check.js +103 -0
- package/build/src/backends/dart.d.ts +2 -0
- package/build/src/backends/dart.d.ts.map +1 -1
- package/build/src/backends/dart.js +5 -5
- package/build/src/backends/go-check.d.ts +7 -0
- package/build/src/backends/go-check.d.ts.map +1 -0
- package/build/src/backends/go-check.js +77 -0
- package/build/src/backends/go.d.ts +1 -0
- package/build/src/backends/go.d.ts.map +1 -1
- package/build/src/backends/go.js +3 -3
- package/build/src/backends/java-check.d.ts +21 -0
- package/build/src/backends/java-check.d.ts.map +1 -0
- package/build/src/backends/java-check.js +73 -0
- package/build/src/backends/javascript-check.d.ts +7 -0
- package/build/src/backends/javascript-check.d.ts.map +1 -0
- package/build/src/backends/javascript-check.js +29 -0
- package/build/src/backends/kotlin-check.d.ts +7 -0
- package/build/src/backends/kotlin-check.d.ts.map +1 -0
- package/build/src/backends/kotlin-check.js +31 -0
- package/build/src/backends/php-check.d.ts +7 -0
- package/build/src/backends/php-check.d.ts.map +1 -0
- package/build/src/backends/php-check.js +21 -0
- package/build/src/backends/program.d.ts +7 -0
- package/build/src/backends/program.d.ts.map +1 -1
- package/build/src/backends/program.js +16 -1
- package/build/src/backends/python-check.d.ts +7 -0
- package/build/src/backends/python-check.d.ts.map +1 -0
- package/build/src/backends/python-check.js +28 -0
- package/build/src/backends/ruby-check.d.ts +7 -0
- package/build/src/backends/ruby-check.d.ts.map +1 -0
- package/build/src/backends/ruby-check.js +21 -0
- package/build/src/backends/rust-check.d.ts +7 -0
- package/build/src/backends/rust-check.d.ts.map +1 -0
- package/build/src/backends/rust-check.js +65 -0
- package/build/src/backends/swift-check.d.ts +7 -0
- package/build/src/backends/swift-check.d.ts.map +1 -0
- package/build/src/backends/swift-check.js +77 -0
- package/build/src/backends/typescript-check.d.ts +7 -0
- package/build/src/backends/typescript-check.d.ts.map +1 -0
- package/build/src/backends/typescript-check.js +33 -0
- package/build/src/backends/zig-check.d.ts +7 -0
- package/build/src/backends/zig-check.d.ts.map +1 -0
- package/build/src/backends/zig-check.js +70 -0
- package/build/src/diagnostic.d.ts +13 -1
- package/build/src/diagnostic.d.ts.map +1 -1
- package/build/src/diagnostic.js +14 -2
- package/build/src/frontends/program.d.ts +6 -0
- package/build/src/frontends/program.d.ts.map +1 -1
- package/build/src/frontends/program.js +9 -1
- package/build/src/language-registry.d.ts +54 -0
- package/build/src/language-registry.d.ts.map +1 -1
- package/build/src/language-registry.js +107 -5
- package/build/src/project-build.d.ts +172 -0
- package/build/src/project-build.d.ts.map +1 -0
- package/build/src/project-build.js +320 -0
- package/build/src/project-cli.d.ts +40 -0
- package/build/src/project-cli.d.ts.map +1 -0
- package/build/src/project-cli.js +145 -0
- package/build/src/project-manifest.d.ts +148 -0
- package/build/src/project-manifest.d.ts.map +1 -0
- package/build/src/project-manifest.js +432 -0
- package/build/src/project-reporter.d.ts +81 -0
- package/build/src/project-reporter.d.ts.map +1 -0
- package/build/src/project-reporter.js +293 -0
- package/build/src/project-snapshot.d.ts +129 -0
- package/build/src/project-snapshot.d.ts.map +1 -0
- package/build/src/project-snapshot.js +362 -0
- package/build/src/project-watch-reporter.d.ts +125 -0
- package/build/src/project-watch-reporter.d.ts.map +1 -0
- package/build/src/project-watch-reporter.js +280 -0
- package/build/src/project-watch.d.ts +133 -0
- package/build/src/project-watch.d.ts.map +1 -0
- package/build/src/project-watch.js +839 -0
- package/build/src/publication.d.ts +69 -5
- package/build/src/publication.d.ts.map +1 -1
- package/build/src/publication.js +246 -57
- package/build/src/semantic/types.d.ts +303 -2
- package/build/src/semantic/types.d.ts.map +1 -1
- package/build/src/semantic/types.js +79 -2
- package/build/src/subprocess.d.ts +8 -0
- package/build/src/subprocess.d.ts.map +1 -1
- package/build/src/subprocess.js +50 -9
- package/build/src/target-check.d.ts +52 -0
- package/build/src/target-check.d.ts.map +1 -0
- package/build/src/target-check.js +796 -0
- package/build/src/toolchains.d.ts.map +1 -1
- package/build/src/toolchains.js +3 -3
- package/docs/architecture.md +3 -1
- package/docs/c.md +4 -0
- package/docs/cpp.md +4 -0
- package/docs/dart.md +4 -0
- package/docs/generated-artifact-publication.md +11 -8
- package/docs/kotlin.md +2 -2
- package/docs/language-support.md +29 -3
- package/docs/project-build-cli.md +147 -0
- package/docs/project-watch.md +60 -0
- package/docs/rust.md +4 -0
- package/docs/swift.md +2 -0
- package/docs/testing.md +70 -3
- package/docs/watch-build-pipeline.md +39 -23
- package/docs/zig.md +2 -0
- package/examples/jsdoc-java-watch/expected-output.txt +3 -0
- package/examples/jsdoc-java-watch/semantifold.json +23 -0
- package/examples/jsdoc-java-watch/src/main.js +21 -0
- package/index.js +8 -0
- package/package.json +6 -1
- package/src/artifact-path.js +31 -2
- package/src/backends/c-check.js +80 -0
- package/src/backends/check-plan.js +147 -0
- package/src/backends/cpp-check.js +73 -0
- package/src/backends/csharp-check.js +139 -0
- package/src/backends/csharp.js +4 -3
- package/src/backends/dart-check.js +117 -0
- package/src/backends/dart.js +4 -4
- package/src/backends/go-check.js +89 -0
- package/src/backends/go.js +2 -2
- package/src/backends/java-check.js +77 -0
- package/src/backends/javascript-check.js +33 -0
- package/src/backends/kotlin-check.js +41 -0
- package/src/backends/php-check.js +23 -0
- package/src/backends/program.js +17 -0
- package/src/backends/python-check.js +30 -0
- package/src/backends/ruby-check.js +23 -0
- package/src/backends/rust-check.js +78 -0
- package/src/backends/swift-check.js +89 -0
- package/src/backends/typescript-check.js +37 -0
- package/src/backends/zig-check.js +81 -0
- package/src/diagnostic.js +9 -1
- package/src/frontends/program.js +9 -0
- package/src/language-registry.js +113 -4
- package/src/project-build.js +353 -0
- package/src/project-cli.js +155 -0
- package/src/project-manifest.js +479 -0
- package/src/project-reporter.js +320 -0
- package/src/project-snapshot.js +403 -0
- package/src/project-watch-reporter.js +303 -0
- package/src/project-watch.js +870 -0
- package/src/publication.js +275 -58
- package/src/semantic/types.js +87 -1
- package/src/subprocess.js +49 -8
- package/src/target-check.js +844 -0
- package/src/toolchains.js +3 -2
- package/tsconfig.json +1 -1
|
@@ -0,0 +1,135 @@
|
|
|
1
|
+
// @ts-check
|
|
2
|
+
import path from "node:path";
|
|
3
|
+
import { SemantifoldDiagnostic } from "../diagnostic.js";
|
|
4
|
+
import { deterministicEnvironment } from "../toolchains.js";
|
|
5
|
+
/**
|
|
6
|
+
* Resolves one target-declared discovered tool from immutable plan context.
|
|
7
|
+
* @param {Readonly<{tools: readonly import("../semantic/types.js").DiscoveredToolchain[]}>} context - Plan context.
|
|
8
|
+
* @param {string} id - Declared toolchain identity.
|
|
9
|
+
* @param {string} target - Target diagnostic identity.
|
|
10
|
+
* @returns {import("../semantic/types.js").DiscoveredToolchain} Exact tool.
|
|
11
|
+
*/
|
|
12
|
+
export function checkTool(context, id, target) {
|
|
13
|
+
const tool = context.tools.find(candidate => candidate.id == id);
|
|
14
|
+
if (!tool) {
|
|
15
|
+
throw new SemantifoldDiagnostic({
|
|
16
|
+
code: "INVALID_TARGET_CHECK_PLAN",
|
|
17
|
+
language: target,
|
|
18
|
+
message: `Target '${target}' developer checks require the declared '${id}' toolchain.`
|
|
19
|
+
});
|
|
20
|
+
}
|
|
21
|
+
return tool;
|
|
22
|
+
}
|
|
23
|
+
/**
|
|
24
|
+
* Resolves all staged artifacts matching one target-owned predicate.
|
|
25
|
+
* @param {Readonly<{artifacts: import("../semantic/types.js").GeneratedArtifactSet, sourcePath: string}>} context - Plan context.
|
|
26
|
+
* @param {(artifact: import("../semantic/types.js").GeneratedSetArtifact) => boolean} accepts - Target-owned artifact predicate.
|
|
27
|
+
* @param {string} target - Target diagnostic identity.
|
|
28
|
+
* @param {string} description - Required artifact description.
|
|
29
|
+
* @returns {readonly string[]} Ordered absolute artifact paths.
|
|
30
|
+
*/
|
|
31
|
+
export function checkArtifacts(context, accepts, target, description) {
|
|
32
|
+
const accepted = context.artifacts.artifacts.filter(accepts);
|
|
33
|
+
if (accepted.length == 0 || accepted.length != context.artifacts.artifacts.length) {
|
|
34
|
+
throw new SemantifoldDiagnostic({
|
|
35
|
+
code: "INVALID_TARGET_CHECK_PLAN",
|
|
36
|
+
language: target,
|
|
37
|
+
message: `Target '${target}' developer checks require ${description}.`
|
|
38
|
+
});
|
|
39
|
+
}
|
|
40
|
+
return Object.freeze(accepted.map(artifact => path.join(context.sourcePath, artifact.path))
|
|
41
|
+
.sort((left, right) => left.localeCompare(right, "en")));
|
|
42
|
+
}
|
|
43
|
+
/**
|
|
44
|
+
* Freezes one closed target-check stage request.
|
|
45
|
+
* @param {object} input - Complete stage data.
|
|
46
|
+
* @param {readonly string[]} input.argv - Exact argv.
|
|
47
|
+
* @param {string} input.cwd - Candidate-owned working directory.
|
|
48
|
+
* @param {Readonly<Record<string, string | undefined>>} [input.environment] - Target-owned environment additions.
|
|
49
|
+
* @param {readonly import("../semantic/types.js").TargetCheckEnvironmentPath[]} [input.environmentPaths] - Owned environment paths.
|
|
50
|
+
* @param {string | null} [input.inputHash] - Restore-input hash when applicable.
|
|
51
|
+
* @param {readonly string[]} input.inputs - Exact staged inputs read by the tool.
|
|
52
|
+
* @param {import("../semantic/types.js").TargetCheckOutputOwnership | null} input.output - Produced build ownership.
|
|
53
|
+
* @param {readonly import("../semantic/types.js").TargetCheckPathArgument[]} input.pathArguments - Owned argv paths.
|
|
54
|
+
* @param {import("../semantic/types.js").AcceptanceStage} input.stage - Stage identity.
|
|
55
|
+
* @param {import("../semantic/types.js").DiscoveredToolchain} input.tool - Exact tool.
|
|
56
|
+
* @param {readonly string[]} [input.transientPaths] - Owned cache/intermediate directories.
|
|
57
|
+
* @returns {import("../semantic/types.js").TargetCheckStageRequest} Immutable stage.
|
|
58
|
+
*/
|
|
59
|
+
export function checkStage(input) {
|
|
60
|
+
return Object.freeze({
|
|
61
|
+
argv: Object.freeze([...input.argv]),
|
|
62
|
+
cwd: input.cwd,
|
|
63
|
+
environment: deterministicEnvironment(input.environment ?? {}),
|
|
64
|
+
environmentPaths: Object.freeze([...(input.environmentPaths ?? [])]),
|
|
65
|
+
executable: input.tool.executable,
|
|
66
|
+
inputHash: input.inputHash ?? null,
|
|
67
|
+
inputs: Object.freeze([...input.inputs]),
|
|
68
|
+
output: input.output,
|
|
69
|
+
pathArguments: Object.freeze([...input.pathArguments]),
|
|
70
|
+
stage: input.stage,
|
|
71
|
+
tool: input.tool,
|
|
72
|
+
transientPaths: Object.freeze([...(input.transientPaths ?? [])])
|
|
73
|
+
});
|
|
74
|
+
}
|
|
75
|
+
/**
|
|
76
|
+
* Freezes one closed target-owned plan.
|
|
77
|
+
* @param {Readonly<{buildPath: string, projectId: string, sourcePath: string, targetId: string}>} context - Plan context.
|
|
78
|
+
* @param {string} target - Target identity.
|
|
79
|
+
* @param {readonly string[]} artifactPaths - Complete staged artifact vector.
|
|
80
|
+
* @param {readonly import("../semantic/types.js").TargetCheckStageRequest[]} stages - Ordered stages.
|
|
81
|
+
* @returns {import("../semantic/types.js").TargetCheckPlan} Immutable plan.
|
|
82
|
+
*/
|
|
83
|
+
export function checkPlan(context, target, artifactPaths, stages) {
|
|
84
|
+
return Object.freeze({
|
|
85
|
+
artifactPaths,
|
|
86
|
+
buildPath: context.buildPath,
|
|
87
|
+
mode: /** @type {const} */ ("developer-check"),
|
|
88
|
+
projectId: context.projectId,
|
|
89
|
+
schema: /** @type {const} */ ("SemantifoldTargetCheckPlan"),
|
|
90
|
+
sourcePath: context.sourcePath,
|
|
91
|
+
stages: Object.freeze([...stages]),
|
|
92
|
+
target,
|
|
93
|
+
targetId: context.targetId,
|
|
94
|
+
version: /** @type {const} */ (1)
|
|
95
|
+
});
|
|
96
|
+
}
|
|
97
|
+
/**
|
|
98
|
+
* Freezes one owned argv-path declaration.
|
|
99
|
+
* @param {number} index - Exact argv index.
|
|
100
|
+
* @param {"source" | "build"} ownership - Owning candidate subtree.
|
|
101
|
+
* @param {string} [prefix] - Optional non-path argument prefix.
|
|
102
|
+
* @returns {import("../semantic/types.js").TargetCheckPathArgument} Immutable declaration.
|
|
103
|
+
*/
|
|
104
|
+
export function pathArgument(index, ownership, prefix) {
|
|
105
|
+
return Object.freeze({ index, ownership, ...(prefix === undefined ? {} : { prefix }) });
|
|
106
|
+
}
|
|
107
|
+
/**
|
|
108
|
+
* Freezes one owned environment-directory declaration.
|
|
109
|
+
* @param {string} name - Exact environment variable.
|
|
110
|
+
* @param {"source" | "build"} ownership - Owning candidate subtree.
|
|
111
|
+
* @returns {import("../semantic/types.js").TargetCheckEnvironmentPath} Immutable declaration.
|
|
112
|
+
*/
|
|
113
|
+
export function environmentPath(name, ownership) {
|
|
114
|
+
return Object.freeze({ name, ownership });
|
|
115
|
+
}
|
|
116
|
+
/**
|
|
117
|
+
* Freezes one exact tool-executable environment binding.
|
|
118
|
+
* @param {string} name - Exact environment variable.
|
|
119
|
+
* @param {import("../semantic/types.js").DiscoveredToolchain} tool - Exact discovered tool.
|
|
120
|
+
* @returns {import("../semantic/types.js").TargetCheckEnvironmentPath} Immutable declaration.
|
|
121
|
+
*/
|
|
122
|
+
export function environmentTool(name, tool) {
|
|
123
|
+
return Object.freeze({ name, ownership: /** @type {const} */ ("tool"), tool });
|
|
124
|
+
}
|
|
125
|
+
/**
|
|
126
|
+
* Freezes build-output ownership metadata.
|
|
127
|
+
* @param {string} buildPath - Exact candidate build root.
|
|
128
|
+
* @param {string} mediaType - Output media type.
|
|
129
|
+
* @param {string} role - Language-neutral output role.
|
|
130
|
+
* @returns {import("../semantic/types.js").TargetCheckOutputOwnership} Immutable ownership.
|
|
131
|
+
*/
|
|
132
|
+
export function checkOutput(buildPath, mediaType, role) {
|
|
133
|
+
return Object.freeze({ mediaType, ownership: /** @type {const} */ ("build"), path: buildPath, role });
|
|
134
|
+
}
|
|
135
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY2hlY2stcGxhbi5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy9iYWNrZW5kcy9jaGVjay1wbGFuLmpzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLFlBQVk7QUFFWixPQUFPLElBQUksTUFBTSxXQUFXLENBQUE7QUFDNUIsT0FBTyxFQUFDLHFCQUFxQixFQUFDLE1BQU0sa0JBQWtCLENBQUE7QUFDdEQsT0FBTyxFQUFDLHdCQUF3QixFQUFDLE1BQU0sa0JBQWtCLENBQUE7QUFFekQ7Ozs7OztHQU1HO0FBQ0gsTUFBTSxVQUFVLFNBQVMsQ0FBQyxPQUFPLEVBQUUsRUFBRSxFQUFFLE1BQU07SUFDM0MsTUFBTSxJQUFJLEdBQUcsT0FBTyxDQUFDLEtBQUssQ0FBQyxJQUFJLENBQUMsU0FBUyxDQUFDLEVBQUUsQ0FBQyxTQUFTLENBQUMsRUFBRSxJQUFJLEVBQUUsQ0FBQyxDQUFBO0lBRWhFLElBQUksQ0FBQyxJQUFJLEVBQUUsQ0FBQztRQUNWLE1BQU0sSUFBSSxxQkFBcUIsQ0FBQztZQUM5QixJQUFJLEVBQUUsMkJBQTJCO1lBQ2pDLFFBQVEsRUFBRSxNQUFNO1lBQ2hCLE9BQU8sRUFBRSxXQUFXLE1BQU0sNENBQTRDLEVBQUUsY0FBYztTQUN2RixDQUFDLENBQUE7SUFDSixDQUFDO0lBRUQsT0FBTyxJQUFJLENBQUE7QUFDYixDQUFDO0FBRUQ7Ozs7Ozs7R0FPRztBQUNILE1BQU0sVUFBVSxjQUFjLENBQUMsT0FBTyxFQUFFLE9BQU8sRUFBRSxNQUFNLEVBQUUsV0FBVztJQUNsRSxNQUFNLFFBQVEsR0FBRyxPQUFPLENBQUMsU0FBUyxDQUFDLFNBQVMsQ0FBQyxNQUFNLENBQUMsT0FBTyxDQUFDLENBQUE7SUFFNUQsSUFBSSxRQUFRLENBQUMsTUFBTSxJQUFJLENBQUMsSUFBSSxRQUFRLENBQUMsTUFBTSxJQUFJLE9BQU8sQ0FBQyxTQUFTLENBQUMsU0FBUyxDQUFDLE1BQU0sRUFBRSxDQUFDO1FBQ2xGLE1BQU0sSUFB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QUFDLEVBQUMsTUFBTSxFQUFDLENBQUMsRUFBQyxDQUFDLENBQUE7QUFDckYsQ0FBQztBQUVEOzs7OztHQUtHO0FBQ0gsTUFBTSxVQUFVLGVBQWUsQ0FBQyxJQUFJLEVBQUUsU0FBUztJQUM3QyxPQUFPLE1BQU0sQ0FBQyxNQUFNLENBQUMsRUFBQyxJQUFJLEVBQUUsU0FBUyxFQUFDLENBQUMsQ0FBQTtBQUN6QyxDQUFDO0FBRUQ7Ozs7O0dBS0c7QUFDSCxNQUFNLFVBQVUsZUFBZSxDQUFDLElBQUksRUFBRSxJQUFJO0lBQ3hDLE9BQU8sTUFBTSxDQUFDLE1BQU0sQ0FBQyxFQUFDLElBQUksRUFBRSxTQUFTLEVBQUUsb0JBQW9CLENBQUMsQ0FBQyxNQUFNLENBQUMsRUFBRSxJQUFJLEVBQUMsQ0FBQyxDQUFBO0FBQzlFLENBQUM7QUFFRDs7Ozs7O0dBTUc7QUFDSCxNQUFNLFVBQVUsV0FBVyxDQUFDLFNBQVMsRUFBRSxTQUFTLEVBQUUsSUFBSTtJQUNwRCxPQUFPLE1BQU0sQ0FBQyxNQUFNLENBQUMsRUFBQyxTQUFTLEVBQUUsU0FBUyxFQUFFLG9CQUFvQixDQUFDLENBQUMsT0FBTyxDQUFDLEVBQUUsSUFBSSxFQUFFLFNBQVMsRUFBRSxJQUFJLEVBQUMsQ0FBQyxDQUFBO0FBQ3JHLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyIvLyBAdHMtY2hlY2tcblxuaW1wb3J0IHBhdGggZnJvbSBcIm5vZGU6cGF0aFwiXG5pbXBvcnQge1NlbWFudGlmb2xkRGlhZ25vc3RpY30gZnJvbSBcIi4uL2RpYWdub3N0aWMuanNcIlxuaW1wb3J0IHtkZXRlcm1pbmlzdGljRW52aXJvbm1lbnR9IGZyb20gXCIuLi90b29sY2hhaW5zLmpzXCJcblxuLyoqXG4gKiBSZXNvbHZlcyBvbmUgdGFyZ2V0LWRlY2xhcmVkIGRpc2NvdmVyZWQgdG9vbCBmcm9tIGltbXV0YWJsZSBwbGFuIGNvbnRleHQuXG4gKiBAcGFyYW0ge1JlYWRvbmx5PHt0b29sczogcmVhZG9ubHkgaW1wb3J0KFwiLi4vc2VtYW50aWMvdHlwZXMuanNcIikuRGlzY292ZXJlZFRvb2xjaGFpbltdfT59IGNvbnRleHQgLSBQbGFuIGNvbnRleHQuXG4gKiBAcGFyYW0ge3N0cmluZ30gaWQgLSBEZWNsYXJlZCB0b29sY2hhaW4gaWRlbnRpdHkuXG4gKiBAcGFyYW0ge3N0cmluZ30gdGFyZ2V0IC0gVGFyZ2V0IGRpYWdub3N0aWMgaWRlbnRpdHkuXG4gKiBAcmV0dXJucyB7aW1wb3J0KFwiLi4vc2VtYW50aWMvdHlwZXMuanNcIikuRGlzY292ZXJlZFRvb2xjaGFpbn0gRXhhY3QgdG9vbC5cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGNoZWNrVG9vbChjb250ZXh0LCBpZCwgdGFyZ2V0KSB7XG4gIGNvbnN0IHRvb2wgPSBjb250ZXh0LnRvb2xzLmZpbmQoY2FuZGlkYXRlID0+IGNhbmRpZGF0ZS5pZCA9PSBpZClcblxuICBpZiAoIXRvb2wpIHtcbiAgICB0aHJvdyBuZXcgU2VtYW50aWZvbGREaWFnbm9zdGljKHtcbiAgICAgIGNvZGU6IFwiSU5WQUxJRF9UQVJHRVRfQ0hFQ0tfUExBTlwiLFxuICAgICAgbGFuZ3VhZ2U6IHRhcmdldCxcbiAgICAgIG1lc3NhZ2U6IGBUYXJnZXQgJyR7dGFyZ2V0fScgZGV2ZWxvcGVyIGNoZWNrcyByZXF1aXJlIHRoZSBkZWNsYXJlZCAnJHtpZH0nIHRvb2xjaGFpbi5gXG4gICAgfSlcbiAgfVxuXG4gIHJldHVybiB0b29sXG59XG5cbi8qKlxuICogUmVzb2x2ZXMgYWxsIHN0YWdlZCBhcnRpZmFjdHMgbWF0Y2hpbmcgb25lIHRhcmdldC1vd25lZCBwcmVkaWNhdGUuXG4gKiBAcGFyYW0ge1JlYWRvbmx5PHthcnRpZmFjdHM6IGltcG9ydChcIi4uL3NlbWFudGljL3R5cGVzLmpzXCIpLkdlbmVyYXRlZEFydGlmYWN0U2V0LCBzb3VyY2VQYXRoOiBzdHJpbmd9Pn0gY29udGV4dCAtIFBsYW4gY29udGV4dC5cbiAqIEBwYXJhbSB7KGFydGlmYWN0OiBpbXBvcnQoXCIuLi9zZW1hbnRpYy90eXBlcy5qc1wiKS5HZW5lcmF0ZWRTZXRBcnRpZmFjdCkgPT4gYm9vbGVhbn0gYWNjZXB0cyAtIFRhcmdldC1vd25lZCBhcnRpZmFjdCBwcmVkaWNhdGUuXG4gKiBAcGFyYW0ge3N0cmluZ30gdGFyZ2V0IC0gVGFyZ2V0IGRpYWdub3N0aWMgaWRlbnRpdHkuXG4gKiBAcGFyYW0ge3N0cmluZ30gZGVzY3JpcHRpb24gLSBSZXF1aXJlZCBhcnRpZmFjdCBkZXNjcmlwdGlvbi5cbiAqIEByZXR1cm5zIHtyZWFkb25seSBzdHJpbmdbXX0gT3JkZXJlZCBhYnNvbHV0ZSBhcnRpZmFjdCBwYXRocy5cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGNoZWNrQXJ0aWZhY3RzKGNvbnRleHQsIGFjY2VwdHMsIHRhcmdldCwgZGVzY3JpcHRpb24pIHtcbiAgY29uc3QgYWNjZXB0ZWQgPSBjb250ZXh0LmFydGlmYWN0cy5hcnRpZmFjdHMuZmlsdGVyKGFjY2VwdHMpXG5cbiAgaWYgKGFjY2VwdGVkLmxlbmd0aCA9PSAwIHx8IGFjY2VwdGVkLmxlbmd0aCAhPSBjb250ZXh0LmFydGlmYWN0cy5hcnRpZmFjdHMubGVuZ3RoKSB7XG4gICAgdGhyb3cgbmV3IFNlbWFudGlmb2xkRGlhZ25vc3RpYyh7XG4gICAgICBjb2RlOiBcIklOVkFMSURfVEFSR0VUX0NIRUNLX1BMQU5cIixcbiAgICAgIGxhbmd1YWdlOiB0YXJnZXQsXG4gICAgICBtZXNzYWdlOiBgVGFyZ2V0ICcke3RhcmdldH0nIGRldmVsb3BlciBjaGVja3MgcmVxdWlyZSAke2Rlc2NyaXB0aW9ufS5gXG4gICAgfSlcbiAgfVxuXG4gIHJldHVybiBPYmplY3QuZnJlZXplKGFjY2VwdGVkLm1hcChhcnRpZmFjdCA9PiBwYXRoLmpvaW4oY29udGV4dC5zb3VyY2VQYXRoLCBhcnRpZmFjdC5wYXRoKSlcbiAgICAuc29ydCgobGVmdCwgcmlnaHQpID0+IGxlZnQubG9jYWxlQ29tcGFyZShyaWdodCwgXCJlblwiKSkpXG59XG5cbi8qKlxuICogRnJlZXplcyBvbmUgY2xvc2VkIHRhcmdldC1jaGVjayBzdGFnZSByZXF1ZXN0LlxuICogQHBhcmFtIHtvYmplY3R9IGlucHV0IC0gQ29tcGxldGUgc3RhZ2UgZGF0YS5cbiAqIEBwYXJhbSB7cmVhZG9ubHkgc3RyaW5nW119IGlucHV0LmFyZ3YgLSBFeGFjdCBhcmd2LlxuICogQHBhcmFtIHtzdHJpbmd9IGlucHV0LmN3ZCAtIENhbmRpZGF0ZS1vd25lZCB3b3JraW5nIGRpcmVjdG9yeS5cbiAqIEBwYXJhbSB7UmVhZG9ubHk8UmVjb3JkPHN0cmluZywgc3RyaW5nIHwgdW5kZWZpbmVkPj59IFtpbnB1dC5lbnZpcm9ubWVudF0gLSBUYXJnZXQtb3duZWQgZW52aXJvbm1lbnQgYWRkaXRpb25zLlxuICogQHBhcmFtIHtyZWFkb25seSBpbXBvcnQoXCIuLi9zZW1hbnRpYy90eXBlcy5qc1wiKS5UYXJnZXRDaGVja0Vudmlyb25tZW50UGF0aFtdfSBbaW5wdXQuZW52aXJvbm1lbnRQYXRoc10gLSBPd25lZCBlbnZpcm9ubWVudCBwYXRocy5cbiAqIEBwYXJhbSB7c3RyaW5nIHwgbnVsbH0gW2lucHV0LmlucHV0SGFzaF0gLSBSZXN0b3JlLWlucHV0IGhhc2ggd2hlbiBhcHBsaWNhYmxlLlxuICogQHBhcmFtIHtyZWFkb25seSBzdHJpbmdbXX0gaW5wdXQuaW5wdXRzIC0gRXhhY3Qgc3RhZ2VkIGlucHV0cyByZWFkIGJ5IHRoZSB0b29sLlxuICogQHBhcmFtIHtpbXBvcnQoXCIuLi9zZW1hbnRpYy90eXBlcy5qc1wiKS5UYXJnZXRDaGVja091dHB1dE93bmVyc2hpcCB8IG51bGx9IGlucHV0Lm91dHB1dCAtIFByb2R1Y2VkIGJ1aWxkIG93bmVyc2hpcC5cbiAqIEBwYXJhbSB7cmVhZG9ubHkgaW1wb3J0KFwiLi4vc2VtYW50aWMvdHlwZXMuanNcIikuVGFyZ2V0Q2hlY2tQYXRoQXJndW1lbnRbXX0gaW5wdXQucGF0aEFyZ3VtZW50cyAtIE93bmVkIGFyZ3YgcGF0aHMuXG4gKiBAcGFyYW0ge2ltcG9ydChcIi4uL3NlbWFudGljL3R5cGVzLmpzXCIpLkFjY2VwdGFuY2VTdGFnZX0gaW5wdXQuc3RhZ2UgLSBTdGFnZSBpZGVudGl0eS5cbiAqIEBwYXJhbSB7aW1wb3J0KFwiLi4vc2VtYW50aWMvdHlwZXMuanNcIikuRGlzY292ZXJlZFRvb2xjaGFpbn0gaW5wdXQudG9vbCAtIEV4YWN0IHRvb2wuXG4gKiBAcGFyYW0ge3JlYWRvbmx5IHN0cmluZ1tdfSBbaW5wdXQudHJhbnNpZW50UGF0aHNdIC0gT3duZWQgY2FjaGUvaW50ZXJtZWRpYXRlIGRpcmVjdG9yaWVzLlxuICogQHJldHVybnMge2ltcG9ydChcIi4uL3NlbWFudGljL3R5cGVzLmpzXCIpLlRhcmdldENoZWNrU3RhZ2VSZXF1ZXN0fSBJbW11dGFibGUgc3RhZ2UuXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBjaGVja1N0YWdlKGlucHV0KSB7XG4gIHJldHVybiBPYmplY3QuZnJlZXplKHtcbiAgICBhcmd2OiBPYmplY3QuZnJlZXplKFsuLi5pbnB1dC5hcmd2XSksXG4gICAgY3dkOiBpbnB1dC5jd2QsXG4gICAgZW52aXJvbm1lbnQ6IGRldGVybWluaXN0aWNFbnZpcm9ubWVudChpbnB1dC5lbnZpcm9ubWVudCA/PyB7fSksXG4gICAgZW52aXJvbm1lbnRQYXRoczogT2JqZWN0LmZyZWV6ZShbLi4uKGlucHV0LmVudmlyb25tZW50UGF0aHMgPz8gW10pXSksXG4gICAgZXhlY3V0YWJsZTogaW5wdXQudG9vbC5leGVjdXRhYmxlLFxuICAgIGlucHV0SGFzaDogaW5wdXQuaW5wdXRIYXNoID8/IG51bGwsXG4gICAgaW5wdXRzOiBPYmplY3QuZnJlZXplKFsuLi5pbnB1dC5pbnB1dHNdKSxcbiAgICBvdXRwdXQ6IGlucHV0Lm91dHB1dCxcbiAgICBwYXRoQXJndW1lbnRzOiBPYmplY3QuZnJlZXplKFsuLi5pbnB1dC5wYXRoQXJndW1lbnRzXSksXG4gICAgc3RhZ2U6IGlucHV0LnN0YWdlLFxuICAgIHRvb2w6IGlucHV0LnRvb2wsXG4gICAgdHJhbnNpZW50UGF0aHM6IE9iamVjdC5mcmVlemUoWy4uLihpbnB1dC50cmFuc2llbnRQYXRocyA/PyBbXSldKVxuICB9KVxufVxuXG4vKipcbiAqIEZyZWV6ZXMgb25lIGNsb3NlZCB0YXJnZXQtb3duZWQgcGxhbi5cbiAqIEBwYXJhbSB7UmVhZG9ubHk8e2J1aWxkUGF0aDogc3RyaW5nLCBwcm9qZWN0SWQ6IHN0cmluZywgc291cmNlUGF0aDogc3RyaW5nLCB0YXJnZXRJZDogc3RyaW5nfT59IGNvbnRleHQgLSBQbGFuIGNvbnRleHQuXG4gKiBAcGFyYW0ge3N0cmluZ30gdGFyZ2V0IC0gVGFyZ2V0IGlkZW50aXR5LlxuICogQHBhcmFtIHtyZWFkb25seSBzdHJpbmdbXX0gYXJ0aWZhY3RQYXRocyAtIENvbXBsZXRlIHN0YWdlZCBhcnRpZmFjdCB2ZWN0b3IuXG4gKiBAcGFyYW0ge3JlYWRvbmx5IGltcG9ydChcIi4uL3NlbWFudGljL3R5cGVzLmpzXCIpLlRhcmdldENoZWNrU3RhZ2VSZXF1ZXN0W119IHN0YWdlcyAtIE9yZGVyZWQgc3RhZ2VzLlxuICogQHJldHVybnMge2ltcG9ydChcIi4uL3NlbWFudGljL3R5cGVzLmpzXCIpLlRhcmdldENoZWNrUGxhbn0gSW1tdXRhYmxlIHBsYW4uXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBjaGVja1BsYW4oY29udGV4dCwgdGFyZ2V0LCBhcnRpZmFjdFBhdGhzLCBzdGFnZXMpIHtcbiAgcmV0dXJuIE9iamVjdC5mcmVlemUoe1xuICAgIGFydGlmYWN0UGF0aHMsXG4gICAgYnVpbGRQYXRoOiBjb250ZXh0LmJ1aWxkUGF0aCxcbiAgICBtb2RlOiAvKiogQHR5cGUge2NvbnN0fSAqLyAoXCJkZXZlbG9wZXItY2hlY2tcIiksXG4gICAgcHJvamVjdElkOiBjb250ZXh0LnByb2plY3RJZCxcbiAgICBzY2hlbWE6IC8qKiBAdHlwZSB7Y29uc3R9ICovIChcIlNlbWFudGlmb2xkVGFyZ2V0Q2hlY2tQbGFuXCIpLFxuICAgIHNvdXJjZVBhdGg6IGNvbnRleHQuc291cmNlUGF0aCxcbiAgICBzdGFnZXM6IE9iamVjdC5mcmVlemUoWy4uLnN0YWdlc10pLFxuICAgIHRhcmdldCxcbiAgICB0YXJnZXRJZDogY29udGV4dC50YXJnZXRJZCxcbiAgICB2ZXJzaW9uOiAvKiogQHR5cGUge2NvbnN0fSAqLyAoMSlcbiAgfSlcbn1cblxuLyoqXG4gKiBGcmVlemVzIG9uZSBvd25lZCBhcmd2LXBhdGggZGVjbGFyYXRpb24uXG4gKiBAcGFyYW0ge251bWJlcn0gaW5kZXggLSBFeGFjdCBhcmd2IGluZGV4LlxuICogQHBhcmFtIHtcInNvdXJjZVwiIHwgXCJidWlsZFwifSBvd25lcnNoaXAgLSBPd25pbmcgY2FuZGlkYXRlIHN1YnRyZWUuXG4gKiBAcGFyYW0ge3N0cmluZ30gW3ByZWZpeF0gLSBPcHRpb25hbCBub24tcGF0aCBhcmd1bWVudCBwcmVmaXguXG4gKiBAcmV0dXJucyB7aW1wb3J0KFwiLi4vc2VtYW50aWMvdHlwZXMuanNcIikuVGFyZ2V0Q2hlY2tQYXRoQXJndW1lbnR9IEltbXV0YWJsZSBkZWNsYXJhdGlvbi5cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIHBhdGhBcmd1bWVudChpbmRleCwgb3duZXJzaGlwLCBwcmVmaXgpIHtcbiAgcmV0dXJuIE9iamVjdC5mcmVlemUoe2luZGV4LCBvd25lcnNoaXAsIC4uLihwcmVmaXggPT09IHVuZGVmaW5lZCA/IHt9IDoge3ByZWZpeH0pfSlcbn1cblxuLyoqXG4gKiBGcmVlemVzIG9uZSBvd25lZCBlbnZpcm9ubWVudC1kaXJlY3RvcnkgZGVjbGFyYXRpb24uXG4gKiBAcGFyYW0ge3N0cmluZ30gbmFtZSAtIEV4YWN0IGVudmlyb25tZW50IHZhcmlhYmxlLlxuICogQHBhcmFtIHtcInNvdXJjZVwiIHwgXCJidWlsZFwifSBvd25lcnNoaXAgLSBPd25pbmcgY2FuZGlkYXRlIHN1YnRyZWUuXG4gKiBAcmV0dXJucyB7aW1wb3J0KFwiLi4vc2VtYW50aWMvdHlwZXMuanNcIikuVGFyZ2V0Q2hlY2tFbnZpcm9ubWVudFBhdGh9IEltbXV0YWJsZSBkZWNsYXJhdGlvbi5cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGVudmlyb25tZW50UGF0aChuYW1lLCBvd25lcnNoaXApIHtcbiAgcmV0dXJuIE9iamVjdC5mcmVlemUoe25hbWUsIG93bmVyc2hpcH0pXG59XG5cbi8qKlxuICogRnJlZXplcyBvbmUgZXhhY3QgdG9vbC1leGVjdXRhYmxlIGVudmlyb25tZW50IGJpbmRpbmcuXG4gKiBAcGFyYW0ge3N0cmluZ30gbmFtZSAtIEV4YWN0IGVudmlyb25tZW50IHZhcmlhYmxlLlxuICogQHBhcmFtIHtpbXBvcnQoXCIuLi9zZW1hbnRpYy90eXBlcy5qc1wiKS5EaXNjb3ZlcmVkVG9vbGNoYWlufSB0b29sIC0gRXhhY3QgZGlzY292ZXJlZCB0b29sLlxuICogQHJldHVybnMge2ltcG9ydChcIi4uL3NlbWFudGljL3R5cGVzLmpzXCIpLlRhcmdldENoZWNrRW52aXJvbm1lbnRQYXRofSBJbW11dGFibGUgZGVjbGFyYXRpb24uXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBlbnZpcm9ubWVudFRvb2wobmFtZSwgdG9vbCkge1xuICByZXR1cm4gT2JqZWN0LmZyZWV6ZSh7bmFtZSwgb3duZXJzaGlwOiAvKiogQHR5cGUge2NvbnN0fSAqLyAoXCJ0b29sXCIpLCB0b29sfSlcbn1cblxuLyoqXG4gKiBGcmVlemVzIGJ1aWxkLW91dHB1dCBvd25lcnNoaXAgbWV0YWRhdGEuXG4gKiBAcGFyYW0ge3N0cmluZ30gYnVpbGRQYXRoIC0gRXhhY3QgY2FuZGlkYXRlIGJ1aWxkIHJvb3QuXG4gKiBAcGFyYW0ge3N0cmluZ30gbWVkaWFUeXBlIC0gT3V0cHV0IG1lZGlhIHR5cGUuXG4gKiBAcGFyYW0ge3N0cmluZ30gcm9sZSAtIExhbmd1YWdlLW5ldXRyYWwgb3V0cHV0IHJvbGUuXG4gKiBAcmV0dXJucyB7aW1wb3J0KFwiLi4vc2VtYW50aWMvdHlwZXMuanNcIikuVGFyZ2V0Q2hlY2tPdXRwdXRPd25lcnNoaXB9IEltbXV0YWJsZSBvd25lcnNoaXAuXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBjaGVja091dHB1dChidWlsZFBhdGgsIG1lZGlhVHlwZSwgcm9sZSkge1xuICByZXR1cm4gT2JqZWN0LmZyZWV6ZSh7bWVkaWFUeXBlLCBvd25lcnNoaXA6IC8qKiBAdHlwZSB7Y29uc3R9ICovIChcImJ1aWxkXCIpLCBwYXRoOiBidWlsZFBhdGgsIHJvbGV9KVxufVxuIl19
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Constructs C++'s strict Clang C++20/libstdc++ compile/link plan.
|
|
3
|
+
* @param {import("../language-registry.js").TargetCheckPlanContext} context - Validated candidate context.
|
|
4
|
+
* @returns {import("../semantic/types.js").TargetCheckPlan} Immutable C++ plan.
|
|
5
|
+
*/
|
|
6
|
+
export declare function createCppCheckPlan(context: import("../language-registry.js").TargetCheckPlanContext): import("../semantic/types.js").TargetCheckPlan;
|
|
7
|
+
//# sourceMappingURL=cpp-check.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"cpp-check.d.ts","sourceRoot":"","sources":["../../../src/backends/cpp-check.js"],"names":[],"mappings":"AAoBA;;;;GAIG;AACH,wBAAgB,kBAAkB,CAAC,OAAO,EAH/B,OAAO,yBAAyB,EAAE,sBAGH,GAF7B,OAAO,sBAAsB,EAAE,eAAe,CAiD1D"}
|
|
@@ -0,0 +1,59 @@
|
|
|
1
|
+
// @ts-check
|
|
2
|
+
import path from "node:path";
|
|
3
|
+
import { SemantifoldDiagnostic } from "../diagnostic.js";
|
|
4
|
+
import { checkArtifacts, checkOutput, checkPlan, checkStage, checkTool, environmentPath, pathArgument } from "./check-plan.js";
|
|
5
|
+
const compilerFlags = Object.freeze([
|
|
6
|
+
"--no-default-config", "--driver-mode=g++", "-std=c++20", "-stdlib=libstdc++", "-Wall", "-Wextra", "-Werror",
|
|
7
|
+
"-pedantic-errors", "-Wconversion", "-Wsign-conversion", "-Wshadow", "-Wformat=2", "-fno-exceptions", "-fno-rtti",
|
|
8
|
+
"-ftrapv", "-finput-charset=UTF-8", "-fexec-charset=UTF-8", "-fno-color-diagnostics", "-O0"
|
|
9
|
+
]);
|
|
10
|
+
/**
|
|
11
|
+
* Constructs C++'s strict Clang C++20/libstdc++ compile/link plan.
|
|
12
|
+
* @param {import("../language-registry.js").TargetCheckPlanContext} context - Validated candidate context.
|
|
13
|
+
* @returns {import("../semantic/types.js").TargetCheckPlan} Immutable C++ plan.
|
|
14
|
+
*/
|
|
15
|
+
export function createCppCheckPlan(context) {
|
|
16
|
+
const tool = checkTool(context, "clangpp", "cpp");
|
|
17
|
+
const artifacts = checkArtifacts(context, artifact => artifact.path.endsWith(".cpp"), "cpp", "only staged '.cpp' translation units");
|
|
18
|
+
if (artifacts.length != 1 || artifacts[0] != path.join(context.sourcePath, "program.cpp")) {
|
|
19
|
+
throw new SemantifoldDiagnostic({ code: "INVALID_TARGET_CHECK_PLAN", language: "cpp",
|
|
20
|
+
message: "C++ developer checks require the exact producer-owned 'program.cpp' translation unit." });
|
|
21
|
+
}
|
|
22
|
+
const objects = path.join(context.buildPath, "objects");
|
|
23
|
+
const temporary = path.join(context.buildPath, "tmp");
|
|
24
|
+
const environment = { TMPDIR: temporary };
|
|
25
|
+
const environmentPaths = [environmentPath("TMPDIR", "build")];
|
|
26
|
+
const objectPaths = artifacts.map((_, index) => path.join(objects, `${String(index).padStart(6, "0")}.o`));
|
|
27
|
+
const stages = artifacts.map((source, index) => {
|
|
28
|
+
const argv = [...compilerFlags, "-c", source, "-o", objectPaths[index]];
|
|
29
|
+
return checkStage({
|
|
30
|
+
argv,
|
|
31
|
+
cwd: context.sourcePath,
|
|
32
|
+
environment,
|
|
33
|
+
environmentPaths,
|
|
34
|
+
inputs: [source],
|
|
35
|
+
output: null,
|
|
36
|
+
pathArguments: [pathArgument(argv.length - 3, "source"), pathArgument(argv.length - 1, "build")],
|
|
37
|
+
stage: /** @type {const} */ ("compile"),
|
|
38
|
+
tool,
|
|
39
|
+
transientPaths: [objects]
|
|
40
|
+
});
|
|
41
|
+
});
|
|
42
|
+
const binary = path.join(context.buildPath, "semantifold-cpp");
|
|
43
|
+
const linkArgv = ["--no-default-config", "--driver-mode=g++", "-stdlib=libstdc++", "-O0", ...objectPaths, "-o", binary];
|
|
44
|
+
stages.push(checkStage({
|
|
45
|
+
argv: linkArgv,
|
|
46
|
+
cwd: context.sourcePath,
|
|
47
|
+
environment,
|
|
48
|
+
environmentPaths,
|
|
49
|
+
inputs: objectPaths,
|
|
50
|
+
output: checkOutput(context.buildPath, "application/x-executable", "linker-output"),
|
|
51
|
+
pathArguments: [...objectPaths.map((_, index) => pathArgument(index + 4, "build")),
|
|
52
|
+
pathArgument(linkArgv.length - 1, "build")],
|
|
53
|
+
stage: "link",
|
|
54
|
+
tool,
|
|
55
|
+
transientPaths: [objects]
|
|
56
|
+
}));
|
|
57
|
+
return checkPlan(context, "cpp", artifacts, stages);
|
|
58
|
+
}
|
|
59
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY3BwLWNoZWNrLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vc3JjL2JhY2tlbmRzL2NwcC1jaGVjay5qcyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxZQUFZO0FBRVosT0FBTyxJQUFJLE1BQU0sV0FBVyxDQUFBO0FBQzVCLE9BQU8sRUFBQyxxQkFBcUIsRUFBQyxNQUFNLGtCQUFrQixDQUFBO0FBQ3RELE9BQU8sRUFDTCxjQUFjLEVBQ2QsV0FBVyxFQUNYLFNBQVMsRUFDVCxVQUFVLEVBQ1YsU0FBUyxFQUNULGVBQWUsRUFDZixZQUFZLEVBQ2IsTUFBTSxpQkFBaUIsQ0FBQTtBQUV4QixNQUFNLGFBQWEsR0FBRyxNQUFNLENBQUMsTUFBTSxDQUFDO0lBQ2xDLHFCQUFxQixFQUFFLG1CQUFtQixFQUFFLFlBQVksRUFBRSxtQkFBbUIsRUFBRSxPQUFPLEVBQUUsU0FBUyxFQUFFLFNBQVM7SUFDNUcsa0JBQWtCLEVBQUUsY0FBYyxFQUFFLG1CQUFtQixFQUFFLFVBQVUsRUFBRSxZQUFZLEVBQUUsaUJBQWlCLEVBQUUsV0FBVztJQUNqSCxTQUFTLEVBQUUsdUJBQXVCLEVBQUUsc0JBQXNCLEVBQUUsd0JBQXdCLEVBQUUsS0FBSztDQUM1RixDQUFDLENBQUE7QUFFRjs7OztHQUlHO0FBQ0gsTUFBTSxVQUFVLGtCQUFrQixDQUFDLE9BQU87SUFDeEMsTUFBTSxJQUFJLEdBQUcsU0FBUyxDQUFDLE9BQU8sRUFBRSxTQUFTLEVBQUUsS0FBSyxDQUFDLENBQUE7SUFDakQsTUFBTSxTQUFTLEdBQUcsY0FBYyxDQUFDLE9BQU8sRUFBRSxRQUFRLENBQUMsRUFBRSxDQUFDLFFBQVEsQ0FBQyxJQUFJLENBQUMsUUFBUSxDQUFDLE1BQU0sQ0FBQyxFQUFFLEtBQUssRUFBRSxzQ0FBc0MsQ0FBQyxDQUFBO0lBRXBJLElBQUksU0FBUyxDQUFDLE1BQU0sSUFBSSxDQUFDLElBQUksU0FBUyxDQUFDLENBQUMsQ0FBQyxJQUFJLElBQUksQ0FBQyxJ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QUFFLENBQUMsT0FBTyxDQUFDO0tBQzFCLENBQUMsQ0FBQyxDQUFBO0lBRUgsT0FBTyxTQUFTLENBQUMsT0FBTyxFQUFFLEtBQUssRUFBRSxTQUFTLEVBQUUsTUFBTSxDQUFDLENBQUE7QUFDckQsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbIi8vIEB0cy1jaGVja1xuXG5pbXBvcnQgcGF0aCBmcm9tIFwibm9kZTpwYXRoXCJcbmltcG9ydCB7U2VtYW50aWZvbGREaWFnbm9zdGljfSBmcm9tIFwiLi4vZGlhZ25vc3RpYy5qc1wiXG5pbXBvcnQge1xuICBjaGVja0FydGlmYWN0cyxcbiAgY2hlY2tPdXRwdXQsXG4gIGNoZWNrUGxhbixcbiAgY2hlY2tTdGFnZSxcbiAgY2hlY2tUb29sLFxuICBlbnZpcm9ubWVudFBhdGgsXG4gIHBhdGhBcmd1bWVudFxufSBmcm9tIFwiLi9jaGVjay1wbGFuLmpzXCJcblxuY29uc3QgY29tcGlsZXJGbGFncyA9IE9iamVjdC5mcmVlemUoW1xuICBcIi0tbm8tZGVmYXVsdC1jb25maWdcIiwgXCItLWRyaXZlci1tb2RlPWcrK1wiLCBcIi1zdGQ9YysrMjBcIiwgXCItc3RkbGliPWxpYnN0ZGMrK1wiLCBcIi1XYWxsXCIsIFwiLVdleHRyYVwiLCBcIi1XZXJyb3JcIixcbiAgXCItcGVkYW50aWMtZXJyb3JzXCIsIFwiLVdjb252ZXJzaW9uXCIsIFwiLVdzaWduLWNvbnZlcnNpb25cIiwgXCItV3NoYWRvd1wiLCBcIi1XZm9ybWF0PTJcIiwgXCItZm5vLWV4Y2VwdGlvbnNcIiwgXCItZm5vLXJ0dGlcIixcbiAgXCItZnRyYXB2XCIsIFwiLWZpbnB1dC1jaGFyc2V0PVVURi04XCIsIFwiLWZleGVjLWNoYXJzZXQ9VVRGLThcIiwgXCItZm5vLWNvbG9yLWRpYWdub3N0aWNzXCIsIFwiLU8wXCJcbl0pXG5cbi8qKlxuICogQ29uc3RydWN0cyBDKysncyBzdHJpY3QgQ2xhbmcgQysrMjAvbGlic3RkYysrIGNvbXBpbGUvbGluayBwbGFuLlxuICogQHBhcmFtIHtpbXBvcnQoXCIuLi9sYW5ndWFnZS1yZWdpc3RyeS5qc1wiKS5UYXJnZXRDaGVja1BsYW5Db250ZXh0fSBjb250ZXh0IC0gVmFsaWRhdGVkIGNhbmRpZGF0ZSBjb250ZXh0LlxuICogQHJldHVybnMge2ltcG9ydChcIi4uL3NlbWFudGljL3R5cGVzLmpzXCIpLlRhcmdldENoZWNrUGxhbn0gSW1tdXRhYmxlIEMrKyBwbGFuLlxuICovXG5leHBvcnQgZnVuY3Rpb24gY3JlYXRlQ3BwQ2hlY2tQbGFuKGNvbnRleHQpIHtcbiAgY29uc3QgdG9vbCA9IGNoZWNrVG9vbChjb250ZXh0LCBcImNsYW5ncHBcIiwgXCJjcHBcIilcbiAgY29uc3QgYXJ0aWZhY3RzID0gY2hlY2tBcnRpZmFjdHMoY29udGV4dCwgYXJ0aWZhY3QgPT4gYXJ0aWZhY3QucGF0aC5lbmRzV2l0aChcIi5jcHBcIiksIFwiY3BwXCIsIFwib25seSBzdGFnZWQgJy5jcHAnIHRyYW5zbGF0aW9uIHVuaXRzXCIpXG5cbiAgaWYgKGFydGlmYWN0cy5sZW5ndGggIT0gMSB8fCBhcnRpZmFjdHNbMF0gIT0gcGF0aC5qb2luKGNvbnRleHQuc291cmNlUGF0aCwgXCJwcm9ncmFtLmNwcFwiKSkge1xuICAgIHRocm93IG5ldyBTZW1hbnRpZm9sZERpYWdub3N0aWMoe2NvZGU6IFwiSU5WQUxJRF9UQVJHRVRfQ0hFQ0tfUExBTlwiLCBsYW5ndWFnZTogXCJjcHBcIixcbiAgICAgIG1lc3NhZ2U6IFwiQysrIGRldmVsb3BlciBjaGVja3MgcmVxdWlyZSB0aGUgZXhhY3QgcHJvZHVjZXItb3duZWQgJ3Byb2dyYW0uY3BwJyB0cmFuc2xhdGlvbiB1bml0LlwifSlcbiAgfVxuICBjb25zdCBvYmplY3RzID0gcGF0aC5qb2luKGNvbnRleHQuYnVpbGRQYXRoLCBcIm9iamVjdHNcIilcbiAgY29uc3QgdGVtcG9yYXJ5ID0gcGF0aC5qb2luKGNvbnRleHQuYnVpbGRQYXRoLCBcInRtcFwiKVxuICBjb25zdCBlbnZpcm9ubWVudCA9IHtUTVBESVI6IHRlbXBvcmFyeX1cbiAgY29uc3QgZW52aXJvbm1lbnRQYXRocyA9IFtlbnZpcm9ubWVudFBhdGgoXCJUTVBESVJcIiwgXCJidWlsZFwiKV1cbiAgY29uc3Qgb2JqZWN0UGF0aHMgPSBhcnRpZmFjdHMubWFwKChfLCBpbmRleCkgPT4gcGF0aC5qb2luKG9iamVjdHMsIGAke1N0cmluZyhpbmRleCkucGFkU3RhcnQoNiwgXCIwXCIpfS5vYCkpXG4gIGNvbnN0IHN0YWdlcyA9IGFydGlmYWN0cy5tYXAoKHNvdXJjZSwgaW5kZXgpID0+IHtcbiAgICBjb25zdCBhcmd2ID0gWy4uLmNvbXBpbGVyRmxhZ3MsIFwiLWNcIiwgc291cmNlLCBcIi1vXCIsIG9iamVjdFBhdGhzW2luZGV4XV1cblxuICAgIHJldHVybiBjaGVja1N0YWdlKHtcbiAgICAgIGFyZ3YsXG4gICAgICBjd2Q6IGNvbnRleHQuc291cmNlUGF0aCxcbiAgICAgIGVudmlyb25tZW50LFxuICAgICAgZW52aXJvbm1lbnRQYXRocyxcbiAgICAgIGlucHV0czogW3NvdXJjZV0sXG4gICAgICBvdXRwdXQ6IG51bGwsXG4gICAgICBwYXRoQXJndW1lbnRzOiBbcGF0aEFyZ3VtZW50KGFyZ3YubGVuZ3RoIC0gMywgXCJzb3VyY2VcIiksIHBhdGhBcmd1bWVudChhcmd2Lmxlbmd0aCAtIDEsIFwiYnVpbGRcIildLFxuICAgICAgc3RhZ2U6IC8qKiBAdHlwZSB7Y29uc3R9ICovIChcImNvbXBpbGVcIiksXG4gICAgICB0b29sLFxuICAgICAgdHJhbnNpZW50UGF0aHM6IFtvYmplY3RzXVxuICAgIH0pXG4gIH0pXG4gIGNvbnN0IGJpbmFyeSA9IHBhdGguam9pbihjb250ZXh0LmJ1aWxkUGF0aCwgXCJzZW1hbnRpZm9sZC1jcHBcIilcbiAgY29uc3QgbGlua0FyZ3YgPSBbXCItLW5vLWRlZmF1bHQtY29uZmlnXCIsIFwiLS1kcml2ZXItbW9kZT1nKytcIiwgXCItc3RkbGliPWxpYnN0ZGMrK1wiLCBcIi1PMFwiLCAuLi5vYmplY3RQYXRocywgXCItb1wiLCBiaW5hcnldXG5cbiAgc3RhZ2VzLnB1c2goY2hlY2tTdGFnZSh7XG4gICAgYXJndjogbGlua0FyZ3YsXG4gICAgY3dkOiBjb250ZXh0LnNvdXJjZVBhdGgsXG4gICAgZW52aXJvbm1lbnQsXG4gICAgZW52aXJvbm1lbnRQYXRocyxcbiAgICBpbnB1dHM6IG9iamVjdFBhdGhzLFxuICAgIG91dHB1dDogY2hlY2tPdXRwdXQoY29udGV4dC5idWlsZFBhdGgsIFwiYXBwbGljYXRpb24veC1leGVjdXRhYmxlXCIsIFwibGlua2VyLW91dHB1dFwiKSxcbiAgICBwYXRoQXJndW1lbnRzOiBbLi4ub2JqZWN0UGF0aHMubWFwKChfLCBpbmRleCkgPT4gcGF0aEFyZ3VtZW50KGluZGV4ICsgNCwgXCJidWlsZFwiKSksXG4gICAgICBwYXRoQXJndW1lbnQobGlua0FyZ3YubGVuZ3RoIC0gMSwgXCJidWlsZFwiKV0sXG4gICAgc3RhZ2U6IFwibGlua1wiLFxuICAgIHRvb2wsXG4gICAgdHJhbnNpZW50UGF0aHM6IFtvYmplY3RzXVxuICB9KSlcblxuICByZXR1cm4gY2hlY2tQbGFuKGNvbnRleHQsIFwiY3BwXCIsIGFydGlmYWN0cywgc3RhZ2VzKVxufVxuIl19
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Constructs C#'s offline restore and non-executing build plan.
|
|
3
|
+
* @param {import("../language-registry.js").TargetCheckPlanContext} context - Validated candidate context.
|
|
4
|
+
* @returns {import("../semantic/types.js").TargetCheckPlan} Immutable C# plan.
|
|
5
|
+
*/
|
|
6
|
+
export declare function createCSharpCheckPlan(context: import("../language-registry.js").TargetCheckPlanContext): import("../semantic/types.js").TargetCheckPlan;
|
|
7
|
+
//# sourceMappingURL=csharp-check.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"csharp-check.d.ts","sourceRoot":"","sources":["../../../src/backends/csharp-check.js"],"names":[],"mappings":"AAgBA;;;;GAIG;AACH,wBAAgB,qBAAqB,CAAC,OAAO,EAHlC,OAAO,yBAAyB,EAAE,sBAGA,GAFhC,OAAO,sBAAsB,EAAE,eAAe,CAuH1D"}
|
|
@@ -0,0 +1,125 @@
|
|
|
1
|
+
// @ts-check
|
|
2
|
+
import { createHash } from "node:crypto";
|
|
3
|
+
import path from "node:path";
|
|
4
|
+
import { SemantifoldDiagnostic } from "../diagnostic.js";
|
|
5
|
+
import { checkArtifacts, checkOutput, checkPlan, checkStage, checkTool, environmentPath, pathArgument } from "./check-plan.js";
|
|
6
|
+
import { csharpProjectManifest } from "./csharp.js";
|
|
7
|
+
/**
|
|
8
|
+
* Constructs C#'s offline restore and non-executing build plan.
|
|
9
|
+
* @param {import("../language-registry.js").TargetCheckPlanContext} context - Validated candidate context.
|
|
10
|
+
* @returns {import("../semantic/types.js").TargetCheckPlan} Immutable C# plan.
|
|
11
|
+
*/
|
|
12
|
+
export function createCSharpCheckPlan(context) {
|
|
13
|
+
const tool = checkTool(context, "dotnet", "csharp");
|
|
14
|
+
const artifacts = checkArtifacts(context, artifact => artifact.path.endsWith(".cs") ||
|
|
15
|
+
artifact.path == "Semantifold.csproj" || artifact.path == "packages.lock.json", "csharp", "only staged C# source and canonical project/lock artifacts");
|
|
16
|
+
const projects = context.artifacts.artifacts.filter(artifact => artifact.path == "Semantifold.csproj");
|
|
17
|
+
const sources = artifacts.filter(artifact => artifact.endsWith(".cs"));
|
|
18
|
+
if (projects.length != 1 || projects[0].contentKind != "text" || projects[0].role != "manifest" ||
|
|
19
|
+
projects[0].content != csharpProjectManifest) {
|
|
20
|
+
throw new SemantifoldDiagnostic({
|
|
21
|
+
code: "INVALID_TARGET_CHECK_PLAN",
|
|
22
|
+
language: "csharp",
|
|
23
|
+
message: "C# developer checks require the exact producer-owned 'Semantifold.csproj' artifact."
|
|
24
|
+
});
|
|
25
|
+
}
|
|
26
|
+
if (sources.length == 0) {
|
|
27
|
+
throw new SemantifoldDiagnostic({
|
|
28
|
+
code: "INVALID_TARGET_CHECK_PLAN",
|
|
29
|
+
language: "csharp",
|
|
30
|
+
message: "C# developer checks require at least one staged '.cs' artifact."
|
|
31
|
+
});
|
|
32
|
+
}
|
|
33
|
+
const restoreArtifacts = context.artifacts.artifacts
|
|
34
|
+
.filter(artifact => artifact.path == "Semantifold.csproj" || artifact.path == "packages.lock.json")
|
|
35
|
+
.sort((left, right) => left.path.localeCompare(right.path, "en"));
|
|
36
|
+
const restoreInputs = Object.freeze(restoreArtifacts.map(artifact => path.join(context.sourcePath, artifact.path)));
|
|
37
|
+
const restoreHash = createHash("sha256");
|
|
38
|
+
for (const artifact of restoreArtifacts) {
|
|
39
|
+
const contentLength = typeof artifact.content == "string" ? Buffer.byteLength(artifact.content) : artifact.content.byteLength;
|
|
40
|
+
restoreHash.update(`${Buffer.byteLength(artifact.path)}:`).update(artifact.path)
|
|
41
|
+
.update(`${contentLength}:`).update(artifact.content);
|
|
42
|
+
}
|
|
43
|
+
const inputHash = restoreHash.digest("hex");
|
|
44
|
+
const projectPath = path.join(context.sourcePath, projects[0].path);
|
|
45
|
+
const packages = path.join(context.buildPath, "nuget-packages");
|
|
46
|
+
const intermediatePath = path.join(context.buildPath, "obj");
|
|
47
|
+
const intermediate = `${intermediatePath}/`;
|
|
48
|
+
const output = path.join(context.buildPath, "bin");
|
|
49
|
+
const compileItems = sources.map(source => path.relative(context.sourcePath, source).split(path.sep).join("/")).join("%3B");
|
|
50
|
+
const isolatedProjectProperties = [
|
|
51
|
+
"--property:ImportDirectoryBuildProps=false",
|
|
52
|
+
"--property:ImportDirectoryBuildTargets=false"
|
|
53
|
+
];
|
|
54
|
+
const restoreArgv = [
|
|
55
|
+
"restore", projectPath, "--source", context.sourcePath, "--packages", packages, "--no-cache", "--force",
|
|
56
|
+
"--disable-parallel",
|
|
57
|
+
...(restoreArtifacts.some(artifact => artifact.path == "packages.lock.json") ? ["--locked-mode"] : []),
|
|
58
|
+
"--nologo", ...isolatedProjectProperties, `--property:BaseIntermediateOutputPath=${intermediate}`,
|
|
59
|
+
`--property:MSBuildProjectExtensionsPath=${intermediate}`
|
|
60
|
+
];
|
|
61
|
+
const compileArgv = [
|
|
62
|
+
"build", projectPath, "--configuration", "Release", "--no-restore", "--nologo", "--warnaserror",
|
|
63
|
+
"--disable-build-servers", "--output", output, ...isolatedProjectProperties,
|
|
64
|
+
`--property:SemantifoldCompileItems=${compileItems}`, "--property:UseSharedCompilation=false",
|
|
65
|
+
`--property:BaseIntermediateOutputPath=${intermediate}`,
|
|
66
|
+
`--property:MSBuildProjectExtensionsPath=${intermediate}`
|
|
67
|
+
];
|
|
68
|
+
const environment = {
|
|
69
|
+
DOTNET_CLI_HOME: path.join(context.buildPath, "dotnet-home"),
|
|
70
|
+
DOTNET_CLI_TELEMETRY_OPTOUT: "1",
|
|
71
|
+
DOTNET_CLI_USE_MSBUILD_SERVER: "0",
|
|
72
|
+
DOTNET_CLI_WORKLOAD_UPDATE_NOTIFY_DISABLE: "1",
|
|
73
|
+
DOTNET_NOLOGO: "1",
|
|
74
|
+
DOTNET_SKIP_FIRST_TIME_EXPERIENCE: "1",
|
|
75
|
+
DOTNET_SYSTEM_GLOBALIZATION_INVARIANT: "1",
|
|
76
|
+
HOME: path.join(context.buildPath, "home"),
|
|
77
|
+
NUGET_HTTP_CACHE_PATH: path.join(context.buildPath, "nuget-http-cache"),
|
|
78
|
+
NUGET_PACKAGES: packages,
|
|
79
|
+
NUGET_PLUGINS_CACHE_PATH: path.join(context.buildPath, "nuget-plugins-cache"),
|
|
80
|
+
TMPDIR: path.join(context.buildPath, "tmp"),
|
|
81
|
+
XDG_CACHE_HOME: path.join(context.buildPath, "cache")
|
|
82
|
+
};
|
|
83
|
+
const environmentPaths = [
|
|
84
|
+
environmentPath("DOTNET_CLI_HOME", "build"), environmentPath("HOME", "build"),
|
|
85
|
+
environmentPath("NUGET_HTTP_CACHE_PATH", "build"), environmentPath("NUGET_PACKAGES", "build"),
|
|
86
|
+
environmentPath("NUGET_PLUGINS_CACHE_PATH", "build"), environmentPath("TMPDIR", "build"),
|
|
87
|
+
environmentPath("XDG_CACHE_HOME", "build")
|
|
88
|
+
];
|
|
89
|
+
const ownedOutput = checkOutput(context.buildPath, "application/octet-stream", "compiler-output");
|
|
90
|
+
const restore = checkStage({
|
|
91
|
+
argv: restoreArgv,
|
|
92
|
+
cwd: context.sourcePath,
|
|
93
|
+
environment,
|
|
94
|
+
environmentPaths,
|
|
95
|
+
inputHash,
|
|
96
|
+
inputs: restoreInputs,
|
|
97
|
+
output: null,
|
|
98
|
+
pathArguments: [
|
|
99
|
+
pathArgument(1, "source"), pathArgument(3, "source"), pathArgument(5, "build"),
|
|
100
|
+
pathArgument(restoreArgv.length - 2, "build", "--property:BaseIntermediateOutputPath="),
|
|
101
|
+
pathArgument(restoreArgv.length - 1, "build", "--property:MSBuildProjectExtensionsPath=")
|
|
102
|
+
],
|
|
103
|
+
stage: "restore",
|
|
104
|
+
tool,
|
|
105
|
+
transientPaths: [intermediatePath]
|
|
106
|
+
});
|
|
107
|
+
const compile = checkStage({
|
|
108
|
+
argv: compileArgv,
|
|
109
|
+
cwd: context.sourcePath,
|
|
110
|
+
environment,
|
|
111
|
+
environmentPaths,
|
|
112
|
+
inputs: artifacts,
|
|
113
|
+
output: ownedOutput,
|
|
114
|
+
pathArguments: [
|
|
115
|
+
pathArgument(1, "source"), pathArgument(9, "build"),
|
|
116
|
+
pathArgument(compileArgv.length - 2, "build", "--property:BaseIntermediateOutputPath="),
|
|
117
|
+
pathArgument(compileArgv.length - 1, "build", "--property:MSBuildProjectExtensionsPath=")
|
|
118
|
+
],
|
|
119
|
+
stage: "compile",
|
|
120
|
+
tool,
|
|
121
|
+
transientPaths: [intermediatePath]
|
|
122
|
+
});
|
|
123
|
+
return checkPlan(context, "csharp", artifacts, [restore, compile]);
|
|
124
|
+
}
|
|
125
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY3NoYXJwLWNoZWNrLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vc3JjL2JhY2tlbmRzL2NzaGFycC1jaGVjay5qcyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxZQUFZO0FBRVosT0FBTyxFQUFDLFVBQVUsRUFBQyxNQUFNLGFBQWEsQ0FBQTtBQUN0QyxPQUFPLElBQUksTUFBTSxXQUFXLENBQUE7QUFDNUIsT0FBTyxFQUFDLHFCQUFxQixFQUFDLE1BQU0sa0JBQWtCLENBQUE7QUFDdEQsT0FBTyxFQUNMLGNBQWMsRUFDZCxXQUFXLEVBQ1gsU0FBUyxFQUNULFVBQVUsRUFDVixTQUFTLEVBQ1QsZUFBZSxFQUNmLFlBQVksRUFDYixNQUFNLGlCQUFpQixDQUFBO0FBQ3hCLE9BQU8sRUFBQyxxQkFBcUIsRUFBQyxNQUFNLGFBQWEsQ0FBQTtBQUVqRDs7OztHQUlHO0FBQ0gsTUFBTSxVQUFVLHFCQUFxQixDQUFDLE9BQU87SUFDM0MsTUFBTSxJQUFJLEdBQUcsU0FBUyxDQUFDLE9BQU8sRUFBRSxRQUFRLEVBQUUsUUFBUSxDQUFDLENBQUE7SUFDbkQsTUFBTSxTQUFTLEdBQUcsY0FBYyxDQUFDLE9BQU8sRUFBRSxRQUFRLENBQUMsRUFBRSxDQUFDLFFBQVEsQ0FBQyxJQUFJLENBQUMsUUFBUSxDQUFDLEtBQUssQ0FBQztRQUNqRixRQUFRLENBQUMsSUFBSSxJQUFJLG9CQUFvQixJQUFJLFFBQVEsQ0FBQyxJQUFJLElBQUksb0JBQW9CLEVBQ2hGLFFBQVEsRUFBRSw0REFBNEQsQ0FBQyxDQUFBO0lBQ3ZFLE1BQU0sUUFBUSxHQUFHLE9BQU8sQ0FBQyxTQUFTLENBQUMsU0FBUyxDQUFDLE1BQU0sQ0FBQyxRQUFRLENBQUMsRUFBRSxDQUFDLFFBQVEsQ0FBQyxJQUFJLElBQUksb0JBQW9CLENBQUMsQ0FBQTtJQUN0RyxNQUFNLE9BQU8sR0FBRyxTQUFTLENBQUMsTUFBTSxDQUFDLFFBQVEsQ0FBQyxFQUFFLENBQUMsUUFBUSxDQUFD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QUssRUFBRSxTQUFTO1FBQ2hCLElBQUk7UUFDSixjQUFjLEVBQUUsQ0FBQyxnQkFBZ0IsQ0FBQztLQUNuQyxDQUFDLENBQUE7SUFFRixPQUFPLFNBQVMsQ0FBQyxPQUFPLEVBQUUsUUFBUSxFQUFFLFNBQVMsRUFBRSxDQUFDLE9BQU8sRUFBRSxPQUFPLENBQUMsQ0FBQyxDQUFBO0FBQ3BFLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyIvLyBAdHMtY2hlY2tcblxuaW1wb3J0IHtjcmVhdGVIYXNofSBmcm9tIFwibm9kZTpjcnlwdG9cIlxuaW1wb3J0IHBhdGggZnJvbSBcIm5vZGU6cGF0aFwiXG5pbXBvcnQge1NlbWFudGlmb2xkRGlhZ25vc3RpY30gZnJvbSBcIi4uL2RpYWdub3N0aWMuanNcIlxuaW1wb3J0IHtcbiAgY2hlY2tBcnRpZmFjdHMsXG4gIGNoZWNrT3V0cHV0LFxuICBjaGVja1BsYW4sXG4gIGNoZWNrU3RhZ2UsXG4gIGNoZWNrVG9vbCxcbiAgZW52aXJvbm1lbnRQYXRoLFxuICBwYXRoQXJndW1lbnRcbn0gZnJvbSBcIi4vY2hlY2stcGxhbi5qc1wiXG5pbXBvcnQge2NzaGFycFByb2plY3RNYW5pZmVzdH0gZnJvbSBcIi4vY3NoYXJwLmpzXCJcblxuLyoqXG4gKiBDb25zdHJ1Y3RzIEMjJ3Mgb2ZmbGluZSByZXN0b3JlIGFuZCBub24tZXhlY3V0aW5nIGJ1aWxkIHBsYW4uXG4gKiBAcGFyYW0ge2ltcG9ydChcIi4uL2xhbmd1YWdlLXJlZ2lzdHJ5LmpzXCIpLlRhcmdldENoZWNrUGxhbkNvbnRleHR9IGNvbnRleHQgLSBWYWxpZGF0ZWQgY2FuZGlkYXRlIGNvbnRleHQuXG4gKiBAcmV0dXJucyB7aW1wb3J0KFwiLi4vc2VtYW50aWMvdHlwZXMuanNcIikuVGFyZ2V0Q2hlY2tQbGFufSBJbW11dGFibGUgQyMgcGxhbi5cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGNyZWF0ZUNTaGFycENoZWNrUGxhbihjb250ZXh0KSB7XG4gIGNvbnN0IHRvb2wgPSBjaGVja1Rvb2woY29udGV4dCwgXCJkb3RuZXRcIiwgXCJjc2hhcnBcIilcbiAgY29uc3QgYXJ0aWZhY3RzID0gY2hlY2tBcnRpZmFjdHMoY29udGV4dCwgYXJ0aWZhY3QgPT4gYXJ0aWZhY3QucGF0aC5lbmRzV2l0aChcIi5jc1wiKSB8fFxuICAgIGFydGlmYWN0LnBhdGggPT0gXCJTZW1hbnRpZm9sZC5jc3Byb2pcIiB8fCBhcnRpZmFjdC5wYXRoID09IFwicGFja2FnZXMubG9jay5qc29uXCIsXG4gIFwiY3NoYXJwXCIsIFwib25seSBzdGFnZWQgQyMgc291cmNlIGFuZCBjYW5vbmljYWwgcHJvamVjdC9sb2NrIGFydGlmYWN0c1wiKVxuICBjb25zdCBwcm9qZWN0cyA9IGNvbnRleHQuYXJ0aWZhY3RzLmFydGlmYWN0cy5maWx0ZXIoYXJ0aWZhY3QgPT4gYXJ0aWZhY3QucGF0aCA9PSBcIlNlbWFudGlmb2xkLmNzcHJvalwiKVxuICBjb25zdCBzb3VyY2VzID0gYXJ0aWZhY3RzLmZpbHRlcihhcnRpZmFjdCA9PiBhcnRpZmFjdC5lbmRzV2l0aChcIi5jc1wiKSlcblxuICBpZiAocHJvamVjdHMubGVuZ3RoICE9IDEgfHwgcHJvamVjdHNbMF0uY29udGVudEtpbmQgIT0gXCJ0ZXh0XCIgfHwgcHJvamVjdHNbMF0ucm9sZSAhPSBcIm1hbmlmZXN0XCIgfHxcbiAgICBwcm9qZWN0c1swXS5jb250ZW50ICE9IGNzaGFycFByb2plY3RNYW5pZmVzdCkge1xuICAgIHRocm93IG5ldyBTZW1hbnRpZm9sZERpYWdub3N0aWMoe1xuICAgICAgY29kZTogXCJJTlZBTElEX1RBUkdFVF9DSEVDS19QTEFOXCIsXG4gICAgICBsYW5ndWFnZTogXCJjc2hhcnBcIixcbiAgICAgIG1lc3NhZ2U6IFwiQyMgZGV2ZWxvcGVyIGNoZWNrcyByZXF1aXJlIHRoZSBleGFjdCBwcm9kdWNlci1vd25lZCAnU2VtYW50aWZvbGQuY3Nwcm9qJyBhcnRpZmFjdC5cIlxuICAgIH0pXG4gIH1cbiAgaWYgKHNvdXJjZXMubGVuZ3RoID09IDApIHtcbiAgICB0aHJvdyBuZXcgU2VtYW50aWZvbGREaWFnbm9zdGljKHtcbiAgICAgIGNvZGU6IFwiSU5WQUxJRF9UQVJHRVRfQ0hFQ0tfUExBTlwiLFxuICAgICAgbGFuZ3VhZ2U6IFwiY3NoYXJwXCIsXG4gICAgICBtZXNzYWdlOiBcIkMjIGRldmVsb3BlciBjaGVja3MgcmVxdWlyZSBhdCBsZWFzdCBvbmUgc3RhZ2VkICcuY3MnIGFydGlmYWN0LlwiXG4gICAgfSlcbiAgfVxuICBjb25zdCByZXN0b3JlQXJ0aWZhY3RzID0gY29udGV4dC5hcnRpZmFjdHMuYXJ0aWZhY3RzXG4gICAgLmZpbHRlcihhcnRpZmFjdCA9PiBhcnRpZmFjdC5wYXRoID09IFwiU2VtYW50aWZvbGQuY3Nwcm9qXCIgfHwgYXJ0aWZhY3QucGF0aCA9PSBcInBhY2thZ2VzLmxvY2suanNvblwiKVxuICAgIC5zb3J0KChsZWZ0LCByaWdodCkgPT4gbGVmdC5wYXRoLmxvY2FsZUNvbXBhcmUocmlnaHQucGF0aCwgXCJlblwiKSlcbiAgY29uc3QgcmVzdG9yZUlucHV0cyA9IE9iamVjdC5mcmVlemUocmVzdG9yZUFydGlmYWN0cy5tYXAoYXJ0aWZhY3QgPT4gcGF0aC5qb2luKGNvbnRleHQuc291cmNlUGF0aCwgYXJ0aWZhY3QucGF0aCkpKVxuICBjb25zdCByZXN0b3JlSGFzaCA9IGNyZWF0ZUhhc2goXCJzaGEyNTZcIilcblxuICBmb3IgKGNvbnN0IGFydGlmYWN0IG9mIHJlc3RvcmVBcnRpZmFjdHMpIHtcbiAgICBjb25zdCBjb250ZW50TGVuZ3RoID0gdHlwZW9mIGFydGlmYWN0LmNvbnRlbnQgPT0gXCJzdHJpbmdcIiA/IEJ1ZmZlci5ieXRlTGVuZ3RoKGFydGlmYWN0LmNvbnRlbnQpIDogYXJ0aWZhY3QuY29udGVudC5ieXRlTGVuZ3RoXG5cbiAgICByZXN0b3JlSGFzaC51cGRhdGUoYCR7QnVmZmVyLmJ5dGVMZW5ndGgoYXJ0aWZhY3QucGF0aCl9OmApLnVwZGF0ZShhcnRpZmFjdC5wYXRoKVxuICAgICAgLnVwZGF0ZShgJHtjb250ZW50TGVuZ3RofTpgKS51cGRhdGUoYXJ0aWZhY3QuY29udGVudClcbiAgfVxuICBjb25zdCBpbnB1dEhhc2ggPSByZXN0b3JlSGFzaC5kaWdlc3QoXCJoZXhcIilcbiAgY29uc3QgcHJvamVjdFBhdGggPSBwYXRoLmpvaW4oY29udGV4dC5zb3VyY2VQYXRoLCBwcm9qZWN0c1swXS5wYXRoKVxuICBjb25zdCBwYWNrYWdlcyA9IHBhdGguam9pbihjb250ZXh0LmJ1aWxkUGF0aCwgXCJudWdldC1wYWNrYWdlc1wiKVxuICBjb25zdCBpbnRlcm1lZGlhdGVQYXRoID0gcGF0aC5qb2luKGNvbnRleHQuYnVpbGRQYXRoLCBcIm9ialwiKVxuICBjb25zdCBpbnRlcm1lZGlhdGUgPSBgJHtpbnRlcm1lZGlhdGVQYXRofS9gXG4gIGNvbnN0IG91dHB1dCA9IHBhdGguam9pbihjb250ZXh0LmJ1aWxkUGF0aCwgXCJiaW5cIilcbiAgY29uc3QgY29tcGlsZUl0ZW1zID0gc291cmNlcy5tYXAoc291cmNlID0+IHBhdGgucmVsYXRpdmUoY29udGV4dC5zb3VyY2VQYXRoLCBzb3VyY2UpLnNwbGl0KHBhdGguc2VwKS5qb2luKFwiL1wiKSkuam9pbihcIiUzQlwiKVxuICBjb25zdCBpc29sYXRlZFByb2plY3RQcm9wZXJ0aWVzID0gW1xuICAgIFwiLS1wcm9wZXJ0eTpJbXBvcnREaXJlY3RvcnlCdWlsZFByb3BzPWZhbHNlXCIsXG4gICAgXCItLXByb3BlcnR5OkltcG9ydERpcmVjdG9yeUJ1aWxkVGFyZ2V0cz1mYWxzZVwiXG4gIF1cbiAgY29uc3QgcmVzdG9yZUFyZ3YgPSBbXG4gICAgXCJyZXN0b3JlXCIsIHByb2plY3RQYXRoLCBcIi0tc291cmNlXCIsIGNvbnRleHQuc291cmNlUGF0aCwgXCItLXBhY2thZ2VzXCIsIHBhY2thZ2VzLCBcIi0tbm8tY2FjaGVcIiwgXCItLWZvcmNlXCIsXG4gICAgXCItLWRpc2FibGUtcGFyYWxsZWxcIixcbiAgICAuLi4ocmVzdG9yZUFydGlmYWN0cy5zb21lKGFydGlmYWN0ID0+IGFydGlmYWN0LnBhdGggPT0gXCJwYWNrYWdlcy5sb2NrLmpzb25cIikgPyBbXCItLWxvY2tlZC1tb2RlXCJdIDogW10pLFxuICAgIFwiLS1ub2xvZ29cIiwgLi4uaXNvbGF0ZWRQcm9qZWN0UHJvcGVydGllcywgYC0tcHJvcGVydHk6QmFzZUludGVybWVkaWF0ZU91dHB1dFBhdGg9JHtpbnRlcm1lZGlhdGV9YCxcbiAgICBgLS1wcm9wZXJ0eTpNU0J1aWxkUHJvamVjdEV4dGVuc2lvbnNQYXRoPSR7aW50ZXJtZWRpYXRlfWBcbiAgXVxuICBjb25zdCBjb21waWxlQXJndiA9IFtcbiAgICBcImJ1aWxkXCIsIHByb2plY3RQYXRoLCBcIi0tY29uZmlndXJhdGlvblwiLCBcIlJlbGVhc2VcIiwgXCItLW5vLXJlc3RvcmVcIiwgXCItLW5vbG9nb1wiLCBcIi0td2FybmFzZXJyb3JcIixcbiAgICBcIi0tZGlzYWJsZS1idWlsZC1zZXJ2ZXJzXCIsIFwiLS1vdXRwdXRcIiwgb3V0cHV0LCAuLi5pc29sYXRlZFByb2plY3RQcm9wZXJ0aWVzLFxuICAgIGAtLXByb3BlcnR5OlNlbWFudGlmb2xkQ29tcGlsZUl0ZW1zPSR7Y29tcGlsZUl0ZW1zfWAsIFwiLS1wcm9wZXJ0eTpVc2VTaGFyZWRDb21waWxhdGlvbj1mYWxzZVwiLFxuICAgIGAtLXByb3BlcnR5OkJhc2VJbnRlcm1lZGlhdGVPdXRwdXRQYXRoPSR7aW50ZXJtZWRpYXRlfWAsXG4gICAgYC0tcHJvcGVydHk6TVNCdWlsZFByb2plY3RFeHRlbnNpb25zUGF0aD0ke2ludGVybWVkaWF0ZX1gXG4gIF1cbiAgY29uc3QgZW52aXJvbm1lbnQgPSB7XG4gICAgRE9UTkVUX0NMSV9IT01FOiBwYXRoLmpvaW4oY29udGV4dC5idWlsZFBhdGgsIFwiZG90bmV0LWhvbWVcIiksXG4gICAgRE9UTkVUX0NMSV9URUxFTUVUUllfT1BUT1VUOiBcIjFcIixcbiAgICBET1RORVRfQ0xJX1VTRV9NU0JVSUxEX1NFUlZFUjogXCIwXCIsXG4gICAgRE9UTkVUX0NMSV9XT1JLTE9BRF9VUERBVEVfTk9USUZZX0RJU0FCTEU6IFwiMVwiLFxuICAgIERPVE5FVF9OT0xPR086IFwiMVwiLFxuICAgIERPVE5FVF9TS0lQX0ZJUlNUX1RJTUVfRVhQRVJJRU5DRTogXCIxXCIsXG4gICAgRE9UTkVUX1NZU1RFTV9HTE9CQUxJWkFUSU9OX0lOVkFSSUFOVDogXCIxXCIsXG4gICAgSE9NRTogcGF0aC5qb2luKGNvbnRleHQuYnVpbGRQYXRoLCBcImhvbWVcIiksXG4gICAgTlVHRVRfSFRUUF9DQUNIRV9QQVRIOiBwYXRoLmpvaW4oY29udGV4dC5idWlsZFBhdGgsIFwibnVnZXQtaHR0cC1jYWNoZVwiKSxcbiAgICBOVUdFVF9QQUNLQUdFUzogcGFja2FnZXMsXG4gICAgTlVHRVRfUExVR0lOU19DQUNIRV9QQVRIOiBwYXRoLmpvaW4oY29udGV4dC5idWlsZFBhdGgsIFwibnVnZXQtcGx1Z2lucy1jYWNoZVwiKSxcbiAgICBUTVBESVI6IHBhdGguam9pbihjb250ZXh0LmJ1aWxkUGF0aCwgXCJ0bXBcIiksXG4gICAgWERHX0NBQ0hFX0hPTUU6IHBhdGguam9pbihjb250ZXh0LmJ1aWxkUGF0aCwgXCJjYWNoZVwiKVxuICB9XG4gIGNvbnN0IGVudmlyb25tZW50UGF0aHMgPSBbXG4gICAgZW52aXJvbm1lbnRQYXRoKFwiRE9UTkVUX0NMSV9IT01FXCIsIFwiYnVpbGRcIiksIGVudmlyb25tZW50UGF0aChcIkhPTUVcIiwgXCJidWlsZFwiKSxcbiAgICBlbnZpcm9ubWVudFBhdGgoXCJOVUdFVF9IVFRQX0NBQ0hFX1BBVEhcIiwgXCJidWlsZFwiKSwgZW52aXJvbm1lbnRQYXRoKFwiTlVHRVRfUEFDS0FHRVNcIiwgXCJidWlsZFwiKSxcbiAgICBlbnZpcm9ubWVudFBhdGgoXCJOVUdFVF9QTFVHSU5TX0NBQ0hFX1BBVEhcIiwgXCJidWlsZFwiKSwgZW52aXJvbm1lbnRQYXRoKFwiVE1QRElSXCIsIFwiYnVpbGRcIiksXG4gICAgZW52aXJvbm1lbnRQYXRoKFwiWERHX0NBQ0hFX0hPTUVcIiwgXCJidWlsZFwiKVxuICBdXG4gIGNvbnN0IG93bmVkT3V0cHV0ID0gY2hlY2tPdXRwdXQoY29udGV4dC5idWlsZFBhdGgsIFwiYXBwbGljYXRpb24vb2N0ZXQtc3RyZWFtXCIsIFwiY29tcGlsZXItb3V0cHV0XCIpXG4gIGNvbnN0IHJlc3RvcmUgPSBjaGVja1N0YWdlKHtcbiAgICBhcmd2OiByZXN0b3JlQXJndixcbiAgICBjd2Q6IGNvbnRleHQuc291cmNlUGF0aCxcbiAgICBlbnZpcm9ubWVudCxcbiAgICBlbnZpcm9ubWVudFBhdGhzLFxuICAgIGlucHV0SGFzaCxcbiAgICBpbnB1dHM6IHJlc3RvcmVJbnB1dHMsXG4gICAgb3V0cHV0OiBudWxsLFxuICAgIHBhdGhBcmd1bWVudHM6IFtcbiAgICAgIHBhdGhBcmd1bWVudCgxLCBcInNvdXJjZVwiKSwgcGF0aEFyZ3VtZW50KDMsIFwic291cmNlXCIpLCBwYXRoQXJndW1lbnQoNSwgXCJidWlsZFwiKSxcbiAgICAgIHBhdGhBcmd1bWVudChyZXN0b3JlQXJndi5sZW5ndGggLSAyLCBcImJ1aWxkXCIsIFwiLS1wcm9wZXJ0eTpCYXNlSW50ZXJtZWRpYXRlT3V0cHV0UGF0aD1cIiksXG4gICAgICBwYXRoQXJndW1lbnQocmVzdG9yZUFyZ3YubGVuZ3RoIC0gMSwgXCJidWlsZFwiLCBcIi0tcHJvcGVydHk6TVNCdWlsZFByb2plY3RFeHRlbnNpb25zUGF0aD1cIilcbiAgICBdLFxuICAgIHN0YWdlOiBcInJlc3RvcmVcIixcbiAgICB0b29sLFxuICAgIHRyYW5zaWVudFBhdGhzOiBbaW50ZXJtZWRpYXRlUGF0aF1cbiAgfSlcbiAgY29uc3QgY29tcGlsZSA9IGNoZWNrU3RhZ2Uoe1xuICAgIGFyZ3Y6IGNvbXBpbGVBcmd2LFxuICAgIGN3ZDogY29udGV4dC5zb3VyY2VQYXRoLFxuICAgIGVudmlyb25tZW50LFxuICAgIGVudmlyb25tZW50UGF0aHMsXG4gICAgaW5wdXRzOiBhcnRpZmFjdHMsXG4gICAgb3V0cHV0OiBvd25lZE91dHB1dCxcbiAgICBwYXRoQXJndW1lbnRzOiBbXG4gICAgICBwYXRoQXJndW1lbnQoMSwgXCJzb3VyY2VcIiksIHBhdGhBcmd1bWVudCg5LCBcImJ1aWxkXCIpLFxuICAgICAgcGF0aEFyZ3VtZW50KGNvbXBpbGVBcmd2Lmxlbmd0aCAtIDIsIFwiYnVpbGRcIiwgXCItLXByb3BlcnR5OkJhc2VJbnRlcm1lZGlhdGVPdXRwdXRQYXRoPVwiKSxcbiAgICAgIHBhdGhBcmd1bWVudChjb21waWxlQXJndi5sZW5ndGggLSAxLCBcImJ1aWxkXCIsIFwiLS1wcm9wZXJ0eTpNU0J1aWxkUHJvamVjdEV4dGVuc2lvbnNQYXRoPVwiKVxuICAgIF0sXG4gICAgc3RhZ2U6IFwiY29tcGlsZVwiLFxuICAgIHRvb2wsXG4gICAgdHJhbnNpZW50UGF0aHM6IFtpbnRlcm1lZGlhdGVQYXRoXVxuICB9KVxuXG4gIHJldHVybiBjaGVja1BsYW4oY29udGV4dCwgXCJjc2hhcnBcIiwgYXJ0aWZhY3RzLCBbcmVzdG9yZSwgY29tcGlsZV0pXG59XG4iXX0=
|
|
@@ -1,3 +1,4 @@
|
|
|
1
|
+
export declare const csharpProjectManifest = "<Project Sdk=\"Microsoft.NET.Sdk\">\n <PropertyGroup>\n <OutputType>Exe</OutputType>\n <TargetFramework>net10.0</TargetFramework>\n <LangVersion>14.0</LangVersion>\n <Nullable>enable</Nullable>\n <TreatWarningsAsErrors>true</TreatWarningsAsErrors>\n <WarningLevel>10</WarningLevel>\n <CheckForOverflowUnderflow>true</CheckForOverflowUnderflow>\n <AllowUnsafeBlocks>false</AllowUnsafeBlocks>\n <ImplicitUsings>disable</ImplicitUsings>\n <EnableNETAnalyzers>false</EnableNETAnalyzers>\n <InvariantGlobalization>true</InvariantGlobalization>\n <PredefinedCulturesOnly>true</PredefinedCulturesOnly>\n <Deterministic>true</Deterministic>\n <ContinuousIntegrationBuild>true</ContinuousIntegrationBuild>\n <DebugType>none</DebugType>\n <UseAppHost>false</UseAppHost>\n <EnableDefaultCompileItems>false</EnableDefaultCompileItems>\n <SemantifoldCompileItems Condition=\"'$(SemantifoldCompileItems)' == ''\">Program.cs</SemantifoldCompileItems>\n <AssemblyName>Semantifold</AssemblyName>\n <RootNamespace>Semantifold.Generated</RootNamespace>\n <StartupObject>Semantifold.Generated.Program</StartupObject>\n <PathMap>$(MSBuildProjectDirectory)=/_/</PathMap>\n </PropertyGroup>\n <ItemGroup>\n <Compile Include=\"$(SemantifoldCompileItems)\" />\n </ItemGroup>\n</Project>\n";
|
|
1
2
|
/**
|
|
2
3
|
* Emits one deterministic two-file C# project candidate.
|
|
3
4
|
* @param {{filename?: string, mapDirective?: unknown, module: import("../semantic/types.js").SemanticModule, sourceMapFilename?: unknown, sources?: {filename: string, content: string, language?: import("../semantic/types.js").SemanticLanguage}[]}} input - Backend request.
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"csharp.d.ts","sourceRoot":"","sources":["../../../src/backends/csharp.js"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"csharp.d.ts","sourceRoot":"","sources":["../../../src/backends/csharp.js"],"names":[],"mappings":"AAQA,eAAO,MAAM,qBAAqB,6zCA6BjC,CAAA;AAED;;;;GAIG;AACH,wBAAgB,qBAAqB,CAAC,EAAC,QAAQ,EAAE,YAAY,EAAE,MAAM,EAAE,iBAAiB,EAAE,OAAO,EAAC,EAHvF;IAAC,QAAQ,CAAC,EAAE,MAAM,CAAC;IAAC,YAAY,CAAC,EAAE,OAAO,CAAC;IAAC,MAAM,EAAE,OAAO,sBAAsB,EAAE,cAAc,CAAC;IAAC,iBAAiB,CAAC,EAAE,OAAO,CAAC;IAAC,OAAO,CAAC,EAAE;QAAC,QAAQ,EAAE,MAAM,CAAC;QAAC,OAAO,EAAE,MAAM,CAAC;QAAC,QAAQ,CAAC,EAAE,OAAO,sBAAsB,EAAE,gBAAgB,CAAA;KAAC,EAAE,CAAA;CAGpJ,GAFrF;IAAC,SAAS,EAAE,OAAO,sBAAsB,EAAE,oBAAoB,EAAE,CAAC;IAAC,MAAM,EAAE,MAAM,CAAA;CAAC,CAsC9F"}
|