@nx/dotnet 0.0.1 → 22.0.0-beta.9

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 (78) hide show
  1. package/README.md +117 -4
  2. package/README.md__tmpl__ +70 -0
  3. package/dist/analyzer/analyzer-client.d.ts +39 -0
  4. package/dist/analyzer/analyzer-client.d.ts.map +1 -0
  5. package/dist/analyzer/analyzer-client.js +227 -0
  6. package/dist/generators/init/init.d.ts +7 -0
  7. package/dist/generators/init/init.d.ts.map +1 -0
  8. package/dist/generators/init/init.js +107 -0
  9. package/dist/generators/init/schema.d.ts +6 -0
  10. package/dist/generators/init/schema.json +34 -0
  11. package/dist/index.d.ts +3 -0
  12. package/dist/index.d.ts.map +1 -0
  13. package/dist/index.js +4 -0
  14. package/dist/lib/Microsoft.Build.Locator.dll +0 -0
  15. package/dist/lib/MsbuildAnalyzer +0 -0
  16. package/dist/lib/MsbuildAnalyzer.deps.json +476 -0
  17. package/dist/lib/MsbuildAnalyzer.dll +0 -0
  18. package/dist/lib/MsbuildAnalyzer.dll.config +629 -0
  19. package/dist/lib/MsbuildAnalyzer.pdb +0 -0
  20. package/dist/lib/MsbuildAnalyzer.runtimeconfig.json +14 -0
  21. package/dist/plugin.d.ts +1 -1
  22. package/dist/plugin.d.ts.map +1 -1
  23. package/dist/plugin.js +3 -2
  24. package/dist/plugins/create-dependencies.d.ts +4 -0
  25. package/dist/plugins/create-dependencies.d.ts.map +1 -0
  26. package/dist/plugins/create-dependencies.js +47 -0
  27. package/dist/{src/plugins/plugin.d.ts → plugins/create-nodes.d.ts} +2 -3
  28. package/dist/plugins/create-nodes.d.ts.map +1 -0
  29. package/dist/plugins/create-nodes.js +48 -0
  30. package/dist/plugins/plugin.d.ts +5 -0
  31. package/dist/plugins/plugin.d.ts.map +1 -0
  32. package/dist/plugins/plugin.js +14 -0
  33. package/dist/tsconfig.lib.tsbuildinfo +1 -1
  34. package/dist/utils/cache.d.ts.map +1 -0
  35. package/dist/utils/has-dotnet-plugin.d.ts +3 -0
  36. package/dist/utils/has-dotnet-plugin.d.ts.map +1 -0
  37. package/dist/utils/has-dotnet-plugin.js +8 -0
  38. package/dist/utils/versions.d.ts +2 -0
  39. package/dist/utils/versions.d.ts.map +1 -0
  40. package/dist/utils/versions.js +5 -0
  41. package/generators.json +10 -0
  42. package/migrations.json +4 -0
  43. package/package.json +48 -59
  44. package/dist/package.json +0 -84
  45. package/dist/src/index.d.ts +0 -2
  46. package/dist/src/index.d.ts.map +0 -1
  47. package/dist/src/index.js +0 -7
  48. package/dist/src/plugins/plugin.d.ts.map +0 -1
  49. package/dist/src/plugins/plugin.js +0 -130
  50. package/dist/src/utils/cache.d.ts.map +0 -1
  51. package/dist/src/utils/dependency-detection.d.ts +0 -5
  52. package/dist/src/utils/dependency-detection.d.ts.map +0 -1
  53. package/dist/src/utils/dependency-detection.js +0 -58
  54. package/dist/src/utils/dotnet-cli.d.ts +0 -9
  55. package/dist/src/utils/dotnet-cli.d.ts.map +0 -1
  56. package/dist/src/utils/dotnet-cli.js +0 -39
  57. package/dist/src/utils/dotnet-project-parser.d.ts +0 -13
  58. package/dist/src/utils/dotnet-project-parser.d.ts.map +0 -1
  59. package/dist/src/utils/dotnet-project-parser.js +0 -83
  60. package/dist/src/utils/logger.d.ts +0 -3
  61. package/dist/src/utils/logger.d.ts.map +0 -1
  62. package/dist/src/utils/logger.js +0 -24
  63. package/dist/src/utils/target-builder.d.ts +0 -12
  64. package/dist/src/utils/target-builder.d.ts.map +0 -1
  65. package/dist/src/utils/target-builder.js +0 -525
  66. package/plugin.ts +0 -5
  67. package/src/index.ts +0 -6
  68. package/src/plugins/plugin.ts +0 -230
  69. package/src/utils/cache.ts +0 -19
  70. package/src/utils/dependency-detection.ts +0 -84
  71. package/src/utils/dotnet-cli.ts +0 -52
  72. package/src/utils/dotnet-project-parser.ts +0 -105
  73. package/src/utils/logger.ts +0 -24
  74. package/src/utils/target-builder.ts +0 -657
  75. package/tsconfig.json +0 -16
  76. package/tsconfig.lib.json +0 -21
  77. /package/dist/{src/utils → utils}/cache.d.ts +0 -0
  78. /package/dist/{src/utils → utils}/cache.js +0 -0
package/dist/package.json DELETED
@@ -1,84 +0,0 @@
1
- {
2
- "name": "@nx/dotnet",
3
- "version": "0.0.1",
4
- "private": false,
5
- "publishConfig": {
6
- "access": "public"
7
- },
8
- "description": "The Nx Plugin for .NET containing graph support for working with .NET projects in an Nx workspace.",
9
- "author": "Nx Team",
10
- "license": "MIT",
11
- "homepage": "https://nx.dev",
12
- "bugs": {
13
- "url": "https://github.com/nrwl/nx/issues"
14
- },
15
- "repository": {
16
- "type": "git",
17
- "url": "https://github.com/nrwl/nx.git",
18
- "directory": "packages/dotnet"
19
- },
20
- "keywords": [
21
- "Monorepo",
22
- ".NET",
23
- "C#",
24
- "F#",
25
- "VB.NET",
26
- "MSBuild",
27
- "CLI"
28
- ],
29
- "scripts": {},
30
- "type": "commonjs",
31
- "main": "./dist/src/index.js",
32
- "types": "./dist/src/index.d.ts",
33
- "typings": "./dist/src/index.d.ts",
34
- "exports": {
35
- ".": {
36
- "types": "./dist/src/index.d.ts",
37
- "default": "./dist/src/index.js"
38
- },
39
- "./plugin": {
40
- "types": "./dist/plugin.d.ts",
41
- "default": "./dist/plugin.js"
42
- }
43
- },
44
- "dependencies": {
45
- "@nx/devkit": "workspace:*",
46
- "tslib": "^2.3.0"
47
- },
48
- "nx": {
49
- "name": "dotnet",
50
- "sourceRoot": "packages/dotnet/src",
51
- "projectType": "library",
52
- "release": {
53
- "version": {
54
- "preserveLocalDependencyProtocols": false,
55
- "manifestRootsToUpdate": [
56
- "packages/{projectName}"
57
- ]
58
- }
59
- },
60
- "targets": {
61
- "build": {
62
- "executor": "@nx/js:tsc",
63
- "outputs": [
64
- "{projectRoot}/dist"
65
- ],
66
- "options": {
67
- "outputPath": "{projectRoot}/dist",
68
- "tsConfig": "{projectRoot}/tsconfig.lib.json",
69
- "main": "{projectRoot}/src/index.ts",
70
- "assets": []
71
- }
72
- },
73
- "nx-release-publish": {
74
- "executor": "@nx/js:release-publish",
75
- "options": {
76
- "packageRoot": "packages/dotnet"
77
- },
78
- "dependsOn": [
79
- "^nx-release-publish"
80
- ]
81
- }
82
- }
83
- }
84
- }
@@ -1,2 +0,0 @@
1
- export { createNodesV2, DotNetPluginOptions, createDependencies, } from './plugins/plugin';
2
- //# sourceMappingURL=index.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":"AACA,OAAO,EACL,aAAa,EACb,mBAAmB,EACnB,kBAAkB,GACnB,MAAM,kBAAkB,CAAC"}
package/dist/src/index.js DELETED
@@ -1,7 +0,0 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.createDependencies = exports.createNodesV2 = void 0;
4
- // Re-export everything from the new plugin structure
5
- var plugin_1 = require("./plugins/plugin");
6
- Object.defineProperty(exports, "createNodesV2", { enumerable: true, get: function () { return plugin_1.createNodesV2; } });
7
- Object.defineProperty(exports, "createDependencies", { enumerable: true, get: function () { return plugin_1.createDependencies; } });
@@ -1 +0,0 @@
1
- {"version":3,"file":"plugin.d.ts","sourceRoot":"","sources":["../../../src/plugins/plugin.ts"],"names":[],"mappings":"AACA,OAAO,EAIL,aAAa,EACb,kBAAkB,EAInB,MAAM,YAAY,CAAC;AAoBpB,MAAM,WAAW,mBAAmB;IAClC,eAAe,CAAC,EAAE,MAAM,CAAC;IACzB,cAAc,CAAC,EAAE,MAAM,CAAC;IACxB,eAAe,CAAC,EAAE,MAAM,CAAC;IACzB,iBAAiB,CAAC,EAAE,MAAM,CAAC;IAC3B,iBAAiB,CAAC,EAAE,MAAM,CAAC;IAC3B,cAAc,CAAC,EAAE,MAAM,CAAC;CACzB;AAID,eAAO,MAAM,aAAa,EAAE,aAAa,CAAC,mBAAmB,CAiD5D,CAAC;AAuDF,eAAO,MAAM,kBAAkB,EAAE,kBAAkB,CACjD,mBAAmB,CAmFpB,CAAC"}
@@ -1,130 +0,0 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.createDependencies = exports.createNodesV2 = void 0;
4
- const node_path_1 = require("node:path");
5
- const devkit_1 = require("@nx/devkit");
6
- const calculate_hash_for_create_nodes_1 = require("@nx/devkit/src/utils/calculate-hash-for-create-nodes");
7
- const cache_directory_1 = require("nx/src/utils/cache-directory");
8
- const file_hasher_1 = require("nx/src/hasher/file-hasher");
9
- // Import utilities
10
- const cache_1 = require("../utils/cache");
11
- const dotnet_cli_1 = require("../utils/dotnet-cli");
12
- const dotnet_project_parser_1 = require("../utils/dotnet-project-parser");
13
- const target_builder_1 = require("../utils/target-builder");
14
- const dependency_detection_1 = require("../utils/dependency-detection");
15
- const logger_1 = require("../utils/logger");
16
- const dotnetProjectGlob = '**/*.{csproj,fsproj,vbproj}';
17
- exports.createNodesV2 = [
18
- dotnetProjectGlob,
19
- async (configFilePaths, options, context) => {
20
- const optionsHash = (0, file_hasher_1.hashObject)(options);
21
- const cachePath = (0, node_path_1.join)(cache_directory_1.workspaceDataDirectory, `dotnet-${optionsHash}.hash`);
22
- const targetsCache = (0, cache_1.readTargetsCache)(cachePath);
23
- const normalizedOptions = normalizeOptions(options);
24
- // Group project files by their project root
25
- const projectRootToFiles = new Map();
26
- for (const configFile of configFilePaths) {
27
- const projectRoot = (0, node_path_1.dirname)(configFile);
28
- if (!projectRootToFiles.has(projectRoot)) {
29
- projectRootToFiles.set(projectRoot, []);
30
- }
31
- projectRootToFiles.get(projectRoot).push(configFile);
32
- }
33
- const projectRoots = Array.from(projectRootToFiles.keys());
34
- // Calculate all hashes at once
35
- const hashes = await (0, calculate_hash_for_create_nodes_1.calculateHashesForCreateNodes)(projectRoots, normalizedOptions, context);
36
- try {
37
- return await (0, devkit_1.createNodesFromFiles)((projectRoot, options, context, idx) => createNodesInternal(projectRoot, options, context, targetsCache, projectRootToFiles.get(projectRoot), hashes[idx]), projectRoots, options, context);
38
- }
39
- finally {
40
- (0, cache_1.writeTargetsToCache)(cachePath, targetsCache);
41
- }
42
- },
43
- ];
44
- async function createNodesInternal(projectRoot, options, context, targetsCache, projectFiles, hash) {
45
- // For .NET projects, we don't require package.json or project.json
46
- // The .csproj/.fsproj/.vbproj file itself indicates a valid project
47
- const normalizedOptions = normalizeOptions(options);
48
- targetsCache[hash] ??= await (0, target_builder_1.buildDotNetTargets)(projectRoot, projectFiles, normalizedOptions, context);
49
- const { targets, metadata } = targetsCache[hash];
50
- // For project naming, use the directory name when multiple projects,
51
- // or the single project file name when only one
52
- const projectName = projectFiles.length === 1
53
- ? (0, dotnet_project_parser_1.inferProjectName)(projectFiles[0])
54
- : (0, node_path_1.basename)(projectRoot)
55
- .replace(/[^a-z0-9\-]/gi, '-')
56
- .toLowerCase();
57
- return {
58
- projects: {
59
- [projectRoot]: {
60
- name: projectName,
61
- root: projectRoot,
62
- targets,
63
- metadata,
64
- },
65
- },
66
- };
67
- }
68
- function normalizeOptions(options) {
69
- return {
70
- buildTargetName: options?.buildTargetName ?? 'build',
71
- testTargetName: options?.testTargetName ?? 'test',
72
- cleanTargetName: options?.cleanTargetName ?? 'clean',
73
- restoreTargetName: options?.restoreTargetName ?? 'restore',
74
- publishTargetName: options?.publishTargetName ?? 'publish',
75
- packTargetName: options?.packTargetName ?? 'pack',
76
- };
77
- }
78
- const createDependencies = async (_, ctx) => {
79
- const dependencies = [];
80
- const rootMap = (0, dependency_detection_1.createProjectRootMappings)(ctx.projects);
81
- (0, logger_1.verboseLog)('[dotnet] createDependencies: Starting dependency detection');
82
- (0, logger_1.verboseLog)(`[dotnet] Workspace root: ${ctx.workspaceRoot}`);
83
- (0, logger_1.verboseLog)(`[dotnet] Number of projects: ${Object.keys(ctx.projects).length}`);
84
- (0, logger_1.verboseLog)(`[dotnet] Projects: ${Object.keys(ctx.projects).join(', ')}`);
85
- (0, logger_1.verboseLog)(`[dotnet] Root map entries: ${Object.keys(rootMap).length}`);
86
- (0, logger_1.verboseLog)(`[dotnet] Root map: ${JSON.stringify(rootMap, null, 2)}`);
87
- // Use dotnet CLI for dependency detection
88
- const dotnetClient = new dotnet_cli_1.NativeDotNetClient(ctx.workspaceRoot);
89
- for (const [source] of Object.entries(ctx.projects)) {
90
- const files = ctx.filesToProcess.projectFileMap[source] || [];
91
- (0, logger_1.verboseLog)(`[dotnet] Processing project: ${source} (${files.length} files)`);
92
- for (const file of files) {
93
- const { ext } = (0, node_path_1.parse)(file.file);
94
- (0, logger_1.verboseLog)(`[dotnet] File: ${file.file} (ext: ${ext})`);
95
- if (['.csproj', '.fsproj', '.vbproj'].includes(ext)) {
96
- try {
97
- const fullPath = (0, node_path_1.join)(ctx.workspaceRoot, file.file);
98
- (0, logger_1.verboseLog)(`[dotnet] Getting references for: ${fullPath}`);
99
- const references = await dotnetClient.getProjectReferencesAsync(fullPath);
100
- (0, logger_1.verboseLog)(`[dotnet] Found ${references.length} references: ${JSON.stringify(references)}`);
101
- for (const reference of references) {
102
- (0, logger_1.verboseLog)(`[dotnet] Resolving reference: ${reference}`);
103
- const target = (0, dependency_detection_1.resolveReferenceToProject)(reference, file.file, rootMap, ctx.workspaceRoot);
104
- (0, logger_1.verboseLog)(`[dotnet] Resolved to target: ${target}`);
105
- if (target) {
106
- dependencies.push({
107
- source,
108
- target,
109
- type: devkit_1.DependencyType.static,
110
- sourceFile: file.file,
111
- });
112
- (0, logger_1.verboseLog)(`[dotnet] ✓ Added dependency: ${source} -> ${target}`);
113
- }
114
- else {
115
- (0, logger_1.verboseLog)(`[dotnet] ✗ Could not resolve reference to project`);
116
- }
117
- }
118
- }
119
- catch (error) {
120
- (0, logger_1.verboseError)(`[dotnet] Failed to get dependencies for ${file.file}: ${error.message}`);
121
- (0, logger_1.verboseError)(`[dotnet] Error stack: ${error.stack}`);
122
- }
123
- }
124
- }
125
- }
126
- (0, logger_1.verboseLog)(`[dotnet] createDependencies: Completed with ${dependencies.length} dependencies`);
127
- (0, logger_1.verboseLog)(`[dotnet] Final dependencies: ${JSON.stringify(dependencies, null, 2)}`);
128
- return dependencies;
129
- };
130
- exports.createDependencies = createDependencies;
@@ -1 +0,0 @@
1
- {"version":3,"file":"cache.d.ts","sourceRoot":"","sources":["../../../src/utils/cache.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,oBAAoB,EAA+B,MAAM,YAAY,CAAC;AAG/E,MAAM,MAAM,aAAa,GAAG,IAAI,CAAC,oBAAoB,EAAE,SAAS,GAAG,UAAU,CAAC,CAAC;AAE/E,wBAAgB,gBAAgB,CAC9B,SAAS,EAAE,MAAM,GAChB,MAAM,CAAC,MAAM,EAAE,aAAa,CAAC,CAI/B;AAED,wBAAgB,mBAAmB,CACjC,SAAS,EAAE,MAAM,EACjB,OAAO,EAAE,MAAM,CAAC,MAAM,EAAE,aAAa,CAAC,QAGvC"}
@@ -1,5 +0,0 @@
1
- import { ProjectConfiguration } from '@nx/devkit';
2
- export declare function createProjectRootMappings(projects: Record<string, ProjectConfiguration>): Record<string, string>;
3
- export declare function findProjectForPath(filePath: string, rootMap: Record<string, string>): string | undefined;
4
- export declare function resolveReferenceToProject(reference: string, sourceFile: string, rootMap: Record<string, string>, workspaceRoot: string): string | undefined;
5
- //# sourceMappingURL=dependency-detection.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"dependency-detection.d.ts","sourceRoot":"","sources":["../../../src/utils/dependency-detection.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,oBAAoB,EAAiB,MAAM,YAAY,CAAC;AAGjE,wBAAgB,yBAAyB,CACvC,QAAQ,EAAE,MAAM,CAAC,MAAM,EAAE,oBAAoB,CAAC,GAC7C,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAWxB;AAED,wBAAgB,kBAAkB,CAChC,QAAQ,EAAE,MAAM,EAChB,OAAO,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,GAC9B,MAAM,GAAG,SAAS,CAwBpB;AAED,wBAAgB,yBAAyB,CACvC,SAAS,EAAE,MAAM,EACjB,UAAU,EAAE,MAAM,EAClB,OAAO,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,EAC/B,aAAa,EAAE,MAAM,GACpB,MAAM,GAAG,SAAS,CA8BpB"}
@@ -1,58 +0,0 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.createProjectRootMappings = createProjectRootMappings;
4
- exports.findProjectForPath = findProjectForPath;
5
- exports.resolveReferenceToProject = resolveReferenceToProject;
6
- const node_path_1 = require("node:path");
7
- const devkit_1 = require("@nx/devkit");
8
- const logger_1 = require("./logger");
9
- function createProjectRootMappings(projects) {
10
- const rootMap = {};
11
- (0, logger_1.verboseLog)('[dotnet-deps] Creating project root mappings');
12
- for (const [, project] of Object.entries(projects)) {
13
- if (project.root && project.name) {
14
- rootMap[project.root] = project.name;
15
- (0, logger_1.verboseLog)(`[dotnet-deps] Mapping: ${project.root} -> ${project.name}`);
16
- }
17
- }
18
- (0, logger_1.verboseLog)(`[dotnet-deps] Created ${Object.keys(rootMap).length} mappings`);
19
- return rootMap;
20
- }
21
- function findProjectForPath(filePath, rootMap) {
22
- let currentPath = (0, devkit_1.normalizePath)(filePath);
23
- (0, logger_1.verboseLog)(`[dotnet-deps] Finding project for path: ${filePath}`);
24
- (0, logger_1.verboseLog)(`[dotnet-deps] Normalized path: ${currentPath}`);
25
- const checkedPaths = [];
26
- for (; currentPath !== (0, node_path_1.dirname)(currentPath); currentPath = (0, node_path_1.dirname)(currentPath)) {
27
- checkedPaths.push(currentPath);
28
- const project = rootMap[currentPath];
29
- if (project) {
30
- (0, logger_1.verboseLog)(`[dotnet-deps] Found project: ${project} at ${currentPath}`);
31
- return project;
32
- }
33
- }
34
- const result = rootMap[currentPath];
35
- checkedPaths.push(currentPath);
36
- (0, logger_1.verboseLog)(`[dotnet-deps] Checked paths: ${checkedPaths.join(' -> ')}`);
37
- (0, logger_1.verboseLog)(`[dotnet-deps] Result: ${result || 'NOT FOUND'}`);
38
- return result;
39
- }
40
- function resolveReferenceToProject(reference, sourceFile, rootMap, workspaceRoot) {
41
- (0, logger_1.verboseLog)(`[dotnet-deps] Resolving reference to project:`);
42
- (0, logger_1.verboseLog)(`[dotnet-deps] Reference: ${reference}`);
43
- (0, logger_1.verboseLog)(`[dotnet-deps] Source file: ${sourceFile}`);
44
- (0, logger_1.verboseLog)(`[dotnet-deps] Workspace root: ${workspaceRoot}`);
45
- const resolved = (0, node_path_1.resolve)(workspaceRoot, (0, node_path_1.dirname)(sourceFile), reference);
46
- (0, logger_1.verboseLog)(`[dotnet-deps] Resolved absolute path: ${resolved}`);
47
- const relativePath = (0, node_path_1.relative)(workspaceRoot, resolved);
48
- (0, logger_1.verboseLog)(`[dotnet-deps] Relative path (raw): ${relativePath}`);
49
- // First normalize path separators (backslashes to forward slashes)
50
- // Then resolve .. segments
51
- const pathWithForwardSlashes = (0, devkit_1.normalizePath)(relativePath);
52
- (0, logger_1.verboseLog)(`[dotnet-deps] Path with forward slashes: ${pathWithForwardSlashes}`);
53
- const normalizedRelativePath = (0, node_path_1.normalize)(pathWithForwardSlashes);
54
- (0, logger_1.verboseLog)(`[dotnet-deps] Relative path (normalized): ${normalizedRelativePath}`);
55
- const result = findProjectForPath(normalizedRelativePath, rootMap);
56
- (0, logger_1.verboseLog)(`[dotnet-deps] Final resolved project: ${result || 'NOT FOUND'}`);
57
- return result;
58
- }
@@ -1,9 +0,0 @@
1
- export interface DotNetClient {
2
- getProjectReferencesAsync(projectFile: string): Promise<string[]>;
3
- }
4
- export declare class NativeDotNetClient implements DotNetClient {
5
- private workspaceRoot;
6
- constructor(workspaceRoot: string);
7
- getProjectReferencesAsync(projectFile: string): Promise<string[]>;
8
- }
9
- //# sourceMappingURL=dotnet-cli.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"dotnet-cli.d.ts","sourceRoot":"","sources":["../../../src/utils/dotnet-cli.ts"],"names":[],"mappings":"AAGA,MAAM,WAAW,YAAY;IAC3B,yBAAyB,CAAC,WAAW,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,EAAE,CAAC,CAAC;CACnE;AAED,qBAAa,kBAAmB,YAAW,YAAY;IACzC,OAAO,CAAC,aAAa;gBAAb,aAAa,EAAE,MAAM;IAEnC,yBAAyB,CAAC,WAAW,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,EAAE,CAAC;CAyCxE"}
@@ -1,39 +0,0 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.NativeDotNetClient = void 0;
4
- const node_child_process_1 = require("node:child_process");
5
- const logger_1 = require("./logger");
6
- class NativeDotNetClient {
7
- constructor(workspaceRoot) {
8
- this.workspaceRoot = workspaceRoot;
9
- }
10
- async getProjectReferencesAsync(projectFile) {
11
- try {
12
- (0, logger_1.verboseLog)(`[dotnet-cli] Getting references for: ${projectFile}`);
13
- (0, logger_1.verboseLog)(`[dotnet-cli] Working directory: ${this.workspaceRoot}`);
14
- const command = `dotnet list "${projectFile}" reference`;
15
- (0, logger_1.verboseLog)(`[dotnet-cli] Command: ${command}`);
16
- const output = (0, node_child_process_1.execSync)(command, {
17
- cwd: this.workspaceRoot,
18
- encoding: 'utf8',
19
- windowsHide: true,
20
- stdio: ['pipe', 'pipe', 'ignore'], // Suppress stderr
21
- });
22
- (0, logger_1.verboseLog)(`[dotnet-cli] Raw output (${output.length} chars):`);
23
- (0, logger_1.verboseLog)(`[dotnet-cli] ${output.split('\n').join('\n[dotnet-cli] ')}`);
24
- const references = output
25
- .split('\n')
26
- .slice(2) // Skip header lines
27
- .map((line) => line.trim())
28
- .filter((line) => line.length > 0);
29
- (0, logger_1.verboseLog)(`[dotnet-cli] Parsed references (${references.length}): ${JSON.stringify(references)}`);
30
- return references;
31
- }
32
- catch (error) {
33
- (0, logger_1.verboseError)(`[dotnet-cli] Failed to get project references for ${projectFile}: ${error.message}`);
34
- (0, logger_1.verboseError)(`[dotnet-cli] Error details: ${JSON.stringify(error, null, 2)}`);
35
- return [];
36
- }
37
- }
38
- }
39
- exports.NativeDotNetClient = NativeDotNetClient;
@@ -1,13 +0,0 @@
1
- export interface ProjectInfo {
2
- targetFramework?: string;
3
- outputType?: string;
4
- packageReferences: string[];
5
- projectReferences: string[];
6
- isTestProject: boolean;
7
- isExecutable: boolean;
8
- projectType: 'csharp' | 'fsharp' | 'vb';
9
- }
10
- export declare function parseProjectFile(projectFilePath: string): ProjectInfo;
11
- export declare function inferProjectName(configFilePath: string): string;
12
- export declare function extractProjectNameFromFile(projectFileName: string): string;
13
- //# sourceMappingURL=dotnet-project-parser.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"dotnet-project-parser.d.ts","sourceRoot":"","sources":["../../../src/utils/dotnet-project-parser.ts"],"names":[],"mappings":"AAGA,MAAM,WAAW,WAAW;IAC1B,eAAe,CAAC,EAAE,MAAM,CAAC;IACzB,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,iBAAiB,EAAE,MAAM,EAAE,CAAC;IAC5B,iBAAiB,EAAE,MAAM,EAAE,CAAC;IAC5B,aAAa,EAAE,OAAO,CAAC;IACvB,YAAY,EAAE,OAAO,CAAC;IACtB,WAAW,EAAE,QAAQ,GAAG,QAAQ,GAAG,IAAI,CAAC;CACzC;AAED,wBAAgB,gBAAgB,CAAC,eAAe,EAAE,MAAM,GAAG,WAAW,CAmErE;AAED,wBAAgB,gBAAgB,CAAC,cAAc,EAAE,MAAM,GAAG,MAAM,CAU/D;AAED,wBAAgB,0BAA0B,CAAC,eAAe,EAAE,MAAM,GAAG,MAAM,CAU1E"}
@@ -1,83 +0,0 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.parseProjectFile = parseProjectFile;
4
- exports.inferProjectName = inferProjectName;
5
- exports.extractProjectNameFromFile = extractProjectNameFromFile;
6
- const node_fs_1 = require("node:fs");
7
- const node_path_1 = require("node:path");
8
- function parseProjectFile(projectFilePath) {
9
- const content = (0, node_fs_1.readFileSync)(projectFilePath, 'utf-8');
10
- const packageReferences = [];
11
- const projectReferences = [];
12
- // Simple regex parsing for MSBuild project files
13
- const packageReferenceRegex = /<PackageReference\s+Include="([^"]+)"/g;
14
- const projectReferenceRegex = /<ProjectReference\s+Include="([^"]+)"/g;
15
- const targetFrameworkRegex = /<TargetFramework>([^<]+)<\/TargetFramework>/;
16
- const outputTypeRegex = /<OutputType>([^<]+)<\/OutputType>/;
17
- let match;
18
- while ((match = packageReferenceRegex.exec(content)) !== null) {
19
- packageReferences.push(match[1]);
20
- }
21
- while ((match = projectReferenceRegex.exec(content)) !== null) {
22
- projectReferences.push(match[1]);
23
- }
24
- const targetFrameworkMatch = content.match(targetFrameworkRegex);
25
- const outputTypeMatch = content.match(outputTypeRegex);
26
- const targetFramework = targetFrameworkMatch?.[1];
27
- const outputType = outputTypeMatch?.[1];
28
- // Detect test projects by common test package references
29
- const testPackages = [
30
- 'Microsoft.NET.Test.Sdk',
31
- 'xunit',
32
- 'xunit.runner.visualstudio',
33
- 'MSTest.TestAdapter',
34
- 'MSTest.TestFramework',
35
- 'NUnit',
36
- 'NUnit3TestAdapter',
37
- ];
38
- const isTestProject = packageReferences.some((pkg) => testPackages.some((testPkg) => pkg.includes(testPkg)));
39
- const isExecutable = outputType?.toLowerCase() === 'exe' ||
40
- content.includes('<OutputType>Exe</OutputType>');
41
- // Determine project type from file extension
42
- const { ext } = (0, node_path_1.parse)(projectFilePath);
43
- let projectType;
44
- switch (ext) {
45
- case '.fsproj':
46
- projectType = 'fsharp';
47
- break;
48
- case '.vbproj':
49
- projectType = 'vb';
50
- break;
51
- default:
52
- projectType = 'csharp';
53
- }
54
- return {
55
- targetFramework,
56
- outputType,
57
- packageReferences,
58
- projectReferences,
59
- isTestProject,
60
- isExecutable,
61
- projectType,
62
- };
63
- }
64
- function inferProjectName(configFilePath) {
65
- const { name } = (0, node_path_1.parse)(configFilePath);
66
- // Convert PascalCase to kebab-case for regular project names
67
- return name
68
- .replace(/([a-z])([A-Z])/g, '$1-$2')
69
- .toLowerCase()
70
- .replace(/[^a-z0-9\-]/g, '-')
71
- .replace(/-+/g, '-')
72
- .replace(/^-|-$/g, '');
73
- }
74
- function extractProjectNameFromFile(projectFileName) {
75
- const { name } = (0, node_path_1.parse)(projectFileName);
76
- // Convert PascalCase to kebab-case for target names
77
- return name
78
- .replace(/([a-z])([A-Z])/g, '$1-$2')
79
- .toLowerCase()
80
- .replace(/[^a-z0-9\-]/g, '-')
81
- .replace(/-+/g, '-')
82
- .replace(/^-|-$/g, '');
83
- }
@@ -1,3 +0,0 @@
1
- export declare function verboseLog(message: string): void;
2
- export declare function verboseError(message: string): void;
3
- //# sourceMappingURL=logger.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"logger.d.ts","sourceRoot":"","sources":["../../../src/utils/logger.ts"],"names":[],"mappings":"AAaA,wBAAgB,UAAU,CAAC,OAAO,EAAE,MAAM,GAAG,IAAI,CAIhD;AAED,wBAAgB,YAAY,CAAC,OAAO,EAAE,MAAM,GAAG,IAAI,CAIlD"}
@@ -1,24 +0,0 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.verboseLog = verboseLog;
4
- exports.verboseError = verboseError;
5
- const devkit_1 = require("@nx/devkit");
6
- let verboseLoggingEnabled;
7
- function isVerboseLoggingEnabled() {
8
- if (verboseLoggingEnabled === undefined) {
9
- verboseLoggingEnabled =
10
- process.env.NX_DOTNET_VERBOSE_LOGGING === 'true' ||
11
- process.env.NX_VERBOSE_LOGGING === 'true';
12
- }
13
- return verboseLoggingEnabled;
14
- }
15
- function verboseLog(message) {
16
- if (isVerboseLoggingEnabled()) {
17
- devkit_1.logger.log(message);
18
- }
19
- }
20
- function verboseError(message) {
21
- if (isVerboseLoggingEnabled()) {
22
- devkit_1.logger.error(message);
23
- }
24
- }
@@ -1,12 +0,0 @@
1
- import { CreateNodesContext } from '@nx/devkit';
2
- import { DotNetTargets } from './cache';
3
- export interface NormalizedOptions {
4
- buildTargetName: string;
5
- testTargetName: string;
6
- cleanTargetName: string;
7
- restoreTargetName: string;
8
- publishTargetName: string;
9
- packTargetName: string;
10
- }
11
- export declare function buildDotNetTargets(projectRoot: string, projectFiles: string[], options: NormalizedOptions, context: CreateNodesContext): Promise<DotNetTargets>;
12
- //# sourceMappingURL=target-builder.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"target-builder.d.ts","sourceRoot":"","sources":["../../../src/utils/target-builder.ts"],"names":[],"mappings":"AACA,OAAO,EACL,kBAAkB,EAGnB,MAAM,YAAY,CAAC;AAOpB,OAAO,EAAE,aAAa,EAAE,MAAM,SAAS,CAAC;AAExC,MAAM,WAAW,iBAAiB;IAChC,eAAe,EAAE,MAAM,CAAC;IACxB,cAAc,EAAE,MAAM,CAAC;IACvB,eAAe,EAAE,MAAM,CAAC;IACxB,iBAAiB,EAAE,MAAM,CAAC;IAC1B,iBAAiB,EAAE,MAAM,CAAC;IAC1B,cAAc,EAAE,MAAM,CAAC;CACxB;AASD,wBAAsB,kBAAkB,CACtC,WAAW,EAAE,MAAM,EACnB,YAAY,EAAE,MAAM,EAAE,EACtB,OAAO,EAAE,iBAAiB,EAC1B,OAAO,EAAE,kBAAkB,GAC1B,OAAO,CAAC,aAAa,CAAC,CAyHxB"}