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.
Files changed (171) hide show
  1. package/README.md +6 -3
  2. package/bin/semantifold.js +6 -0
  3. package/build/bin/semantifold.d.ts +3 -0
  4. package/build/bin/semantifold.d.ts.map +1 -0
  5. package/build/bin/semantifold.js +5 -0
  6. package/build/index.d.ts +8 -0
  7. package/build/index.d.ts.map +1 -1
  8. package/build/index.js +9 -1
  9. package/build/src/artifact-path.d.ts +16 -0
  10. package/build/src/artifact-path.d.ts.map +1 -1
  11. package/build/src/artifact-path.js +29 -3
  12. package/build/src/backends/c-check.d.ts +7 -0
  13. package/build/src/backends/c-check.d.ts.map +1 -0
  14. package/build/src/backends/c-check.js +65 -0
  15. package/build/src/backends/check-plan.d.ts +96 -0
  16. package/build/src/backends/check-plan.d.ts.map +1 -0
  17. package/build/src/backends/check-plan.js +135 -0
  18. package/build/src/backends/cpp-check.d.ts +7 -0
  19. package/build/src/backends/cpp-check.d.ts.map +1 -0
  20. package/build/src/backends/cpp-check.js +59 -0
  21. package/build/src/backends/csharp-check.d.ts +7 -0
  22. package/build/src/backends/csharp-check.d.ts.map +1 -0
  23. package/build/src/backends/csharp-check.js +125 -0
  24. package/build/src/backends/csharp.d.ts +1 -0
  25. package/build/src/backends/csharp.d.ts.map +1 -1
  26. package/build/src/backends/csharp.js +5 -4
  27. package/build/src/backends/dart-check.d.ts +7 -0
  28. package/build/src/backends/dart-check.d.ts.map +1 -0
  29. package/build/src/backends/dart-check.js +103 -0
  30. package/build/src/backends/dart.d.ts +2 -0
  31. package/build/src/backends/dart.d.ts.map +1 -1
  32. package/build/src/backends/dart.js +5 -5
  33. package/build/src/backends/go-check.d.ts +7 -0
  34. package/build/src/backends/go-check.d.ts.map +1 -0
  35. package/build/src/backends/go-check.js +77 -0
  36. package/build/src/backends/go.d.ts +1 -0
  37. package/build/src/backends/go.d.ts.map +1 -1
  38. package/build/src/backends/go.js +3 -3
  39. package/build/src/backends/java-check.d.ts +21 -0
  40. package/build/src/backends/java-check.d.ts.map +1 -0
  41. package/build/src/backends/java-check.js +73 -0
  42. package/build/src/backends/javascript-check.d.ts +7 -0
  43. package/build/src/backends/javascript-check.d.ts.map +1 -0
  44. package/build/src/backends/javascript-check.js +29 -0
  45. package/build/src/backends/kotlin-check.d.ts +7 -0
  46. package/build/src/backends/kotlin-check.d.ts.map +1 -0
  47. package/build/src/backends/kotlin-check.js +31 -0
  48. package/build/src/backends/php-check.d.ts +7 -0
  49. package/build/src/backends/php-check.d.ts.map +1 -0
  50. package/build/src/backends/php-check.js +21 -0
  51. package/build/src/backends/program.d.ts +7 -0
  52. package/build/src/backends/program.d.ts.map +1 -1
  53. package/build/src/backends/program.js +16 -1
  54. package/build/src/backends/python-check.d.ts +7 -0
  55. package/build/src/backends/python-check.d.ts.map +1 -0
  56. package/build/src/backends/python-check.js +28 -0
  57. package/build/src/backends/ruby-check.d.ts +7 -0
  58. package/build/src/backends/ruby-check.d.ts.map +1 -0
  59. package/build/src/backends/ruby-check.js +21 -0
  60. package/build/src/backends/rust-check.d.ts +7 -0
  61. package/build/src/backends/rust-check.d.ts.map +1 -0
  62. package/build/src/backends/rust-check.js +65 -0
  63. package/build/src/backends/swift-check.d.ts +7 -0
  64. package/build/src/backends/swift-check.d.ts.map +1 -0
  65. package/build/src/backends/swift-check.js +77 -0
  66. package/build/src/backends/typescript-check.d.ts +7 -0
  67. package/build/src/backends/typescript-check.d.ts.map +1 -0
  68. package/build/src/backends/typescript-check.js +33 -0
  69. package/build/src/backends/zig-check.d.ts +7 -0
  70. package/build/src/backends/zig-check.d.ts.map +1 -0
  71. package/build/src/backends/zig-check.js +70 -0
  72. package/build/src/diagnostic.d.ts +13 -1
  73. package/build/src/diagnostic.d.ts.map +1 -1
  74. package/build/src/diagnostic.js +14 -2
  75. package/build/src/frontends/program.d.ts +6 -0
  76. package/build/src/frontends/program.d.ts.map +1 -1
  77. package/build/src/frontends/program.js +9 -1
  78. package/build/src/language-registry.d.ts +54 -0
  79. package/build/src/language-registry.d.ts.map +1 -1
  80. package/build/src/language-registry.js +107 -5
  81. package/build/src/project-build.d.ts +172 -0
  82. package/build/src/project-build.d.ts.map +1 -0
  83. package/build/src/project-build.js +320 -0
  84. package/build/src/project-cli.d.ts +40 -0
  85. package/build/src/project-cli.d.ts.map +1 -0
  86. package/build/src/project-cli.js +145 -0
  87. package/build/src/project-manifest.d.ts +148 -0
  88. package/build/src/project-manifest.d.ts.map +1 -0
  89. package/build/src/project-manifest.js +432 -0
  90. package/build/src/project-reporter.d.ts +81 -0
  91. package/build/src/project-reporter.d.ts.map +1 -0
  92. package/build/src/project-reporter.js +293 -0
  93. package/build/src/project-snapshot.d.ts +129 -0
  94. package/build/src/project-snapshot.d.ts.map +1 -0
  95. package/build/src/project-snapshot.js +362 -0
  96. package/build/src/project-watch-reporter.d.ts +125 -0
  97. package/build/src/project-watch-reporter.d.ts.map +1 -0
  98. package/build/src/project-watch-reporter.js +280 -0
  99. package/build/src/project-watch.d.ts +133 -0
  100. package/build/src/project-watch.d.ts.map +1 -0
  101. package/build/src/project-watch.js +839 -0
  102. package/build/src/publication.d.ts +69 -5
  103. package/build/src/publication.d.ts.map +1 -1
  104. package/build/src/publication.js +246 -57
  105. package/build/src/semantic/types.d.ts +303 -2
  106. package/build/src/semantic/types.d.ts.map +1 -1
  107. package/build/src/semantic/types.js +79 -2
  108. package/build/src/subprocess.d.ts +8 -0
  109. package/build/src/subprocess.d.ts.map +1 -1
  110. package/build/src/subprocess.js +50 -9
  111. package/build/src/target-check.d.ts +52 -0
  112. package/build/src/target-check.d.ts.map +1 -0
  113. package/build/src/target-check.js +796 -0
  114. package/build/src/toolchains.d.ts.map +1 -1
  115. package/build/src/toolchains.js +3 -3
  116. package/docs/architecture.md +3 -1
  117. package/docs/c.md +4 -0
  118. package/docs/cpp.md +4 -0
  119. package/docs/dart.md +4 -0
  120. package/docs/generated-artifact-publication.md +11 -8
  121. package/docs/kotlin.md +2 -2
  122. package/docs/language-support.md +29 -3
  123. package/docs/project-build-cli.md +147 -0
  124. package/docs/project-watch.md +60 -0
  125. package/docs/rust.md +4 -0
  126. package/docs/swift.md +2 -0
  127. package/docs/testing.md +70 -3
  128. package/docs/watch-build-pipeline.md +39 -23
  129. package/docs/zig.md +2 -0
  130. package/examples/jsdoc-java-watch/expected-output.txt +3 -0
  131. package/examples/jsdoc-java-watch/semantifold.json +23 -0
  132. package/examples/jsdoc-java-watch/src/main.js +21 -0
  133. package/index.js +8 -0
  134. package/package.json +6 -1
  135. package/src/artifact-path.js +31 -2
  136. package/src/backends/c-check.js +80 -0
  137. package/src/backends/check-plan.js +147 -0
  138. package/src/backends/cpp-check.js +73 -0
  139. package/src/backends/csharp-check.js +139 -0
  140. package/src/backends/csharp.js +4 -3
  141. package/src/backends/dart-check.js +117 -0
  142. package/src/backends/dart.js +4 -4
  143. package/src/backends/go-check.js +89 -0
  144. package/src/backends/go.js +2 -2
  145. package/src/backends/java-check.js +77 -0
  146. package/src/backends/javascript-check.js +33 -0
  147. package/src/backends/kotlin-check.js +41 -0
  148. package/src/backends/php-check.js +23 -0
  149. package/src/backends/program.js +17 -0
  150. package/src/backends/python-check.js +30 -0
  151. package/src/backends/ruby-check.js +23 -0
  152. package/src/backends/rust-check.js +78 -0
  153. package/src/backends/swift-check.js +89 -0
  154. package/src/backends/typescript-check.js +37 -0
  155. package/src/backends/zig-check.js +81 -0
  156. package/src/diagnostic.js +9 -1
  157. package/src/frontends/program.js +9 -0
  158. package/src/language-registry.js +113 -4
  159. package/src/project-build.js +353 -0
  160. package/src/project-cli.js +155 -0
  161. package/src/project-manifest.js +479 -0
  162. package/src/project-reporter.js +320 -0
  163. package/src/project-snapshot.js +403 -0
  164. package/src/project-watch-reporter.js +303 -0
  165. package/src/project-watch.js +870 -0
  166. package/src/publication.js +275 -58
  167. package/src/semantic/types.js +87 -1
  168. package/src/subprocess.js +49 -8
  169. package/src/target-check.js +844 -0
  170. package/src/toolchains.js +3 -2
  171. 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,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY3BwLWNoZWNrLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vc3JjL2JhY2tlbmRzL2NwcC1jaGVjay5qcyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxZQUFZO0FBRVosT0FBTyxJQUFJLE1BQU0sV0FBVyxDQUFBO0FBQzVCLE9BQU8sRUFBQyxxQkFBcUIsRUFBQyxNQUFNLGtCQUFrQixDQUFBO0FBQ3RELE9BQU8sRUFDTCxjQUFjLEVBQ2QsV0FBVyxFQUNYLFNBQVMsRUFDVCxVQUFVLEVBQ1YsU0FBUyxFQUNULGVBQWUsRUFDZixZQUFZLEVBQ2IsTUFBTSxpQkFBaUIsQ0FBQTtBQUV4QixNQUFNLGFBQWEsR0FBRyxNQUFNLENBQUMsTUFBTSxDQUFDO0lBQ2xDLHFCQUFxQixFQUFFLG1CQUFtQixFQUFFLFlBQVksRUFBRSxtQkFBbUIsRUFBRSxPQUFPLEVBQUUsU0FBUyxFQUFFLFNBQVM7SUFDNUcsa0JBQWtCLEVBQUUsY0FBYyxFQUFFLG1CQUFtQixFQUFFLFVBQVUsRUFBRSxZQUFZLEVBQUUsaUJBQWlCLEVBQUUsV0FBVztJQUNqSCxTQUFTLEVBQUUsdUJBQXVCLEVBQUUsc0JBQXNCLEVBQUUsd0JBQXdCLEVBQUUsS0FBSztDQUM1RixDQUFDLENBQUE7QUFFRjs7OztHQUlHO0FBQ0gsTUFBTSxVQUFVLGtCQUFrQixDQUFDLE9BQU87SUFDeEMsTUFBTSxJQUFJLEdBQUcsU0FBUyxDQUFDLE9BQU8sRUFBRSxTQUFTLEVBQUUsS0FBSyxDQUFDLENBQUE7SUFDakQsTUFBTSxTQUFTLEdBQUcsY0FBYyxDQUFDLE9BQU8sRUFBRSxRQUFRLENBQUMsRUFBRSxDQUFDLFFBQVEsQ0FBQyxJQUFJLENBQUMsUUFBUSxDQUFDLE1BQU0sQ0FBQyxFQUFFLEtBQUssRUFBRSxzQ0FBc0MsQ0FBQyxDQUFBO0lBRXBJLElBQUksU0FBUyxDQUFDLE1BQU0sSUFBSSxDQUFDLElBQUksU0FBUyxDQUFDLENBQUMsQ0FBQyxJQUFJLElBQUksQ0FBQyxJQUFJLENBQUMsT0FBTyxDQUFDLFVBQVUsRUFBRSxhQUFhLENBQUMsRUFBRSxDQUFDO1FBQzFGLE1BQU0sSUFBSSxxQkFBcUIsQ0FBQyxFQUFDLElBQUksRUFBRSwyQkFBMkIsRUFBRSxRQUFRLEVBQUUsS0FBSztZQUNqRixPQUFPLEVBQUUsdUZBQXVGLEVBQUMsQ0FBQyxDQUFBO0lBQ3RHLENBQUM7SUFDRCxNQUFNLE9BQU8sR0FBRyxJQUFJLENBQUMsSUFBSSxDQUFDLE9BQU8sQ0FBQyxTQUFTLEVBQUUsU0FBUyxDQUFDLENBQUE7SUFDdkQsTUFBTSxTQUFTLEdBQUcsSUFBSSxDQUFDLElBQUksQ0FBQyxPQUFPLENBQUMsU0FBUyxFQUFFLEtBQUssQ0FBQyxDQUFBO0lBQ3JELE1BQU0sV0FBVyxHQUFHLEVBQUMsTUFBTSxFQUFFLFNBQVMsRUFBQyxDQUFBO0lBQ3ZDLE1BQU0sZ0JBQWdCLEdBQUcsQ0FBQyxlQUFlLENBQUMsUUFBUSxFQUFFLE9BQU8sQ0FBQyxDQUFDLENBQUE7SUFDN0QsTUFBTSxXQUFXLEdBQUcsU0FBUyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsRUFBRSxLQUFLLEVBQUUsRUFBRSxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsT0FBTyxFQUFFLEdBQUcsTUFBTSxDQUFDLEtBQUssQ0FBQyxDQUFDLFFBQVEsQ0FBQyxDQUFDLEVBQUUsR0FBRyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUE7SUFDMUcsTUFBTSxNQUFNLEdBQUcsU0FBUyxDQUFDLEdBQUcsQ0FBQyxDQUFDLE1BQU0sRUFBRSxLQUFLLEVBQUUsRUFBRTtRQUM3QyxNQUFNLElBQUksR0FBRyxDQUFDLEdBQUcsYUFBYSxFQUFFLElBQUksRUFBRSxNQUFNLEVBQUUsSUFBSSxFQUFFLFdBQVcsQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFBO1FBRXZFLE9BQU8sVUFBVSxDQUFDO1lBQ2hCLElBQUk7WUFDSixHQUFHLEVBQUUsT0FBTyxDQUFDLFVBQVU7WUFDdkIsV0FBVztZQUNYLGdCQUFnQjtZQUNoQixNQUFNLEVBQUUsQ0FBQyxNQUFNLENBQUM7WUFDaEIsTUFBTSxFQUFFLElBQUk7WUFDWixhQUFhLEVBQUUsQ0FBQyxZQUFZLENBQUMsSUFBSSxDQUFDLE1BQU0sR0FBRyxDQUFDLEVBQUUsUUFBUSxDQUFDLEVBQUUsWUFBWSxDQUFDLElBQUksQ0FBQyxNQUFNLEdBQUcsQ0FBQyxFQUFFLE9BQU8sQ0FBQyxDQUFDO1lBQ2hHLEtBQUssRUFBRSxvQkFBb0IsQ0FBQyxDQUFDLFNBQVMsQ0FBQztZQUN2QyxJQUFJO1lBQ0osY0FBYyxFQUFFLENBQUMsT0FBTyxDQUFDO1NBQzFCLENBQUMsQ0FBQTtJQUNKLENBQUMsQ0FBQyxDQUFBO0lBQ0YsTUFBTSxNQUFNLEdBQUcsSUFBSSxDQUFDLElBQUksQ0FBQyxPQUFPLENBQUMsU0FBUyxFQUFFLGlCQUFpQixDQUFDLENBQUE7SUFDOUQsTUFBTSxRQUFRLEdBQUcsQ0FBQyxxQkFBcUIsRUFBRSxtQkFBbUIsRUFBRSxtQkFBbUIsRUFBRSxLQUFLLEVBQUUsR0FBRyxXQUFXLEVBQUUsSUFBSSxFQUFFLE1BQU0sQ0FBQyxDQUFBO0lBRXZILE1BQU0sQ0FBQyxJQUFJLENBQUMsVUFBVSxDQUFDO1FBQ3JCLElBQUksRUFBRSxRQUFRO1FBQ2QsR0FBRyxFQUFFLE9BQU8sQ0FBQyxVQUFVO1FBQ3ZCLFdBQVc7UUFDWCxnQkFBZ0I7UUFDaEIsTUFBTSxFQUFFLFdBQVc7UUFDbkIsTUFBTSxFQUFFLFdBQVcsQ0FBQyxPQUFPLENBQUMsU0FBUyxFQUFFLDBCQUEwQixFQUFFLGVBQWUsQ0FBQztRQUNuRixhQUFhLEVBQUUsQ0FBQyxHQUFHLFdBQVcsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLEVBQUUsS0FBSyxFQUFFLEVBQUUsQ0FBQyxZQUFZLENBQUMsS0FBSyxHQUFHLENBQUMsRUFBRSxPQUFPLENBQUMsQ0FBQztZQUNoRixZQUFZLENBQUMsUUFBUSxDQUFDLE1BQU0sR0FBRyxDQUFDLEVBQUUsT0FBTyxDQUFDLENBQUM7UUFDN0MsS0FBSyxFQUFFLE1BQU07UUFDYixJQUFJO1FBQ0osY0FBYyxFQUFFLENBQUMsT0FBTyxDQUFDO0tBQzFCLENBQUMsQ0FBQyxDQUFBO0lBRUgsT0FBTyxTQUFTLENBQUMsT0FBTyxFQUFFLEtBQUssRUFBRSxTQUFTLEVBQUUsTUFBTSxDQUFDLENBQUE7QUFDckQsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbIi8vIEB0cy1jaGVja1xuXG5pbXBvcnQgcGF0aCBmcm9tIFwibm9kZTpwYXRoXCJcbmltcG9ydCB7U2VtYW50aWZvbGREaWFnbm9zdGljfSBmcm9tIFwiLi4vZGlhZ25vc3RpYy5qc1wiXG5pbXBvcnQge1xuICBjaGVja0FydGlmYWN0cyxcbiAgY2hlY2tPdXRwdXQsXG4gIGNoZWNrUGxhbixcbiAgY2hlY2tTdGFnZSxcbiAgY2hlY2tUb29sLFxuICBlbnZpcm9ubWVudFBhdGgsXG4gIHBhdGhBcmd1bWVudFxufSBmcm9tIFwiLi9jaGVjay1wbGFuLmpzXCJcblxuY29uc3QgY29tcGlsZXJGbGFncyA9IE9iamVjdC5mcmVlemUoW1xuICBcIi0tbm8tZGVmYXVsdC1jb25maWdcIiwgXCItLWRyaXZlci1tb2RlPWcrK1wiLCBcIi1zdGQ9YysrMjBcIiwgXCItc3RkbGliPWxpYnN0ZGMrK1wiLCBcIi1XYWxsXCIsIFwiLVdleHRyYVwiLCBcIi1XZXJyb3JcIixcbiAgXCItcGVkYW50aWMtZXJyb3JzXCIsIFwiLVdjb252ZXJzaW9uXCIsIFwiLVdzaWduLWNvbnZlcnNpb25cIiwgXCItV3NoYWRvd1wiLCBcIi1XZm9ybWF0PTJcIiwgXCItZm5vLWV4Y2VwdGlvbnNcIiwgXCItZm5vLXJ0dGlcIixcbiAgXCItZnRyYXB2XCIsIFwiLWZpbnB1dC1jaGFyc2V0PVVURi04XCIsIFwiLWZleGVjLWNoYXJzZXQ9VVRGLThcIiwgXCItZm5vLWNvbG9yLWRpYWdub3N0aWNzXCIsIFwiLU8wXCJcbl0pXG5cbi8qKlxuICogQ29uc3RydWN0cyBDKysncyBzdHJpY3QgQ2xhbmcgQysrMjAvbGlic3RkYysrIGNvbXBpbGUvbGluayBwbGFuLlxuICogQHBhcmFtIHtpbXBvcnQoXCIuLi9sYW5ndWFnZS1yZWdpc3RyeS5qc1wiKS5UYXJnZXRDaGVja1BsYW5Db250ZXh0fSBjb250ZXh0IC0gVmFsaWRhdGVkIGNhbmRpZGF0ZSBjb250ZXh0LlxuICogQHJldHVybnMge2ltcG9ydChcIi4uL3NlbWFudGljL3R5cGVzLmpzXCIpLlRhcmdldENoZWNrUGxhbn0gSW1tdXRhYmxlIEMrKyBwbGFuLlxuICovXG5leHBvcnQgZnVuY3Rpb24gY3JlYXRlQ3BwQ2hlY2tQbGFuKGNvbnRleHQpIHtcbiAgY29uc3QgdG9vbCA9IGNoZWNrVG9vbChjb250ZXh0LCBcImNsYW5ncHBcIiwgXCJjcHBcIilcbiAgY29uc3QgYXJ0aWZhY3RzID0gY2hlY2tBcnRpZmFjdHMoY29udGV4dCwgYXJ0aWZhY3QgPT4gYXJ0aWZhY3QucGF0aC5lbmRzV2l0aChcIi5jcHBcIiksIFwiY3BwXCIsIFwib25seSBzdGFnZWQgJy5jcHAnIHRyYW5zbGF0aW9uIHVuaXRzXCIpXG5cbiAgaWYgKGFydGlmYWN0cy5sZW5ndGggIT0gMSB8fCBhcnRpZmFjdHNbMF0gIT0gcGF0aC5qb2luKGNvbnRleHQuc291cmNlUGF0aCwgXCJwcm9ncmFtLmNwcFwiKSkge1xuICAgIHRocm93IG5ldyBTZW1hbnRpZm9sZERpYWdub3N0aWMoe2NvZGU6IFwiSU5WQUxJRF9UQVJHRVRfQ0hFQ0tfUExBTlwiLCBsYW5ndWFnZTogXCJjcHBcIixcbiAgICAgIG1lc3NhZ2U6IFwiQysrIGRldmVsb3BlciBjaGVja3MgcmVxdWlyZSB0aGUgZXhhY3QgcHJvZHVjZXItb3duZWQgJ3Byb2dyYW0uY3BwJyB0cmFuc2xhdGlvbiB1bml0LlwifSlcbiAgfVxuICBjb25zdCBvYmplY3RzID0gcGF0aC5qb2luKGNvbnRleHQuYnVpbGRQYXRoLCBcIm9iamVjdHNcIilcbiAgY29uc3QgdGVtcG9yYXJ5ID0gcGF0aC5qb2luKGNvbnRleHQuYnVpbGRQYXRoLCBcInRtcFwiKVxuICBjb25zdCBlbnZpcm9ubWVudCA9IHtUTVBESVI6IHRlbXBvcmFyeX1cbiAgY29uc3QgZW52aXJvbm1lbnRQYXRocyA9IFtlbnZpcm9ubWVudFBhdGgoXCJUTVBESVJcIiwgXCJidWlsZFwiKV1cbiAgY29uc3Qgb2JqZWN0UGF0aHMgPSBhcnRpZmFjdHMubWFwKChfLCBpbmRleCkgPT4gcGF0aC5qb2luKG9iamVjdHMsIGAke1N0cmluZyhpbmRleCkucGFkU3RhcnQoNiwgXCIwXCIpfS5vYCkpXG4gIGNvbnN0IHN0YWdlcyA9IGFydGlmYWN0cy5tYXAoKHNvdXJjZSwgaW5kZXgpID0+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":"AAsCA;;;;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"}
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"}