snyk-nuget-plugin 1.37.0 → 1.38.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/dist/errors/big-tree-error.d.ts +5 -0
- package/dist/errors/cli-command-error.d.ts +5 -0
- package/dist/errors/file-not-found-error.d.ts +5 -0
- package/dist/errors/file-not-processable-error.d.ts +5 -0
- package/dist/errors/index.d.ts +6 -0
- package/dist/errors/invalid-folder-format-error.d.ts +5 -0
- package/dist/errors/invalid-manifest-error.d.ts +5 -0
- package/dist/errors/invalid-target-file.d.ts +5 -0
- package/dist/index.d.ts +2 -0
- package/dist/nuget-parser/cli/dotnet.d.ts +4 -0
- package/dist/nuget-parser/cli/subprocess.d.ts +12 -0
- package/dist/nuget-parser/csharp/generator.d.ts +3 -0
- package/dist/nuget-parser/csharp/generator.js +66 -0
- package/dist/nuget-parser/csharp/generator.js.map +1 -0
- package/dist/nuget-parser/csharp/nugetframeworks_parser.d.ts +1 -0
- package/dist/nuget-parser/csharp/nugetframeworks_parser.js +85 -0
- package/dist/nuget-parser/csharp/nugetframeworks_parser.js.map +1 -0
- package/dist/nuget-parser/framework.d.ts +2 -0
- package/dist/nuget-parser/index.d.ts +7 -0
- package/dist/nuget-parser/index.js +4 -1
- package/dist/nuget-parser/index.js.map +1 -1
- package/dist/nuget-parser/parsers/csproj-parser.d.ts +2 -0
- package/dist/nuget-parser/parsers/dotnet-core-parser.d.ts +1 -0
- package/dist/nuget-parser/parsers/dotnet-core-v2-parser.d.ts +3 -0
- package/dist/nuget-parser/parsers/dotnet-framework-parser.d.ts +8 -0
- package/dist/nuget-parser/parsers/nuspec-parser.d.ts +3 -0
- package/dist/nuget-parser/parsers/packages-config-parser.d.ts +8 -0
- package/dist/nuget-parser/parsers/project-json-parser.d.ts +2 -0
- package/dist/nuget-parser/runtime-assembly.d.ts +3 -0
- package/dist/nuget-parser/types.d.ts +65 -0
- package/package.json +3 -2
|
@@ -0,0 +1,6 @@
|
|
|
1
|
+
export { BigTreeError } from './big-tree-error';
|
|
2
|
+
export { CliCommandError } from './cli-command-error';
|
|
3
|
+
export { FileNotFoundError } from './file-not-found-error';
|
|
4
|
+
export { FileNotProcessableError } from './file-not-processable-error';
|
|
5
|
+
export { InvalidManifestError } from './invalid-manifest-error';
|
|
6
|
+
export { InvalidTargetFile } from './invalid-target-file';
|
package/dist/index.d.ts
ADDED
|
@@ -0,0 +1,4 @@
|
|
|
1
|
+
export declare function validate(): Promise<void>;
|
|
2
|
+
export declare function restore(projectPath: string): Promise<void>;
|
|
3
|
+
export declare function run(projectPath: string, options: string[]): Promise<string>;
|
|
4
|
+
export declare function publish(projectPath: string, targetFramework?: string): Promise<string>;
|
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
interface ProcessOptions {
|
|
2
|
+
cwd?: string;
|
|
3
|
+
env?: {
|
|
4
|
+
[name: string]: string;
|
|
5
|
+
};
|
|
6
|
+
}
|
|
7
|
+
export interface ExecResult {
|
|
8
|
+
stdout: string;
|
|
9
|
+
stderr: string;
|
|
10
|
+
}
|
|
11
|
+
export declare function execute(command: string, args: string[], options?: ProcessOptions): Promise<ExecResult>;
|
|
12
|
+
export {};
|
|
@@ -0,0 +1,66 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.tearDown = exports.generate = void 0;
|
|
4
|
+
const path = require("path");
|
|
5
|
+
const fs = require("fs");
|
|
6
|
+
const os = require("os");
|
|
7
|
+
const debugModule = require("debug");
|
|
8
|
+
const NodeCache = require("node-cache");
|
|
9
|
+
const crypto = require("crypto");
|
|
10
|
+
const debug = debugModule('snyk');
|
|
11
|
+
const cache = new NodeCache();
|
|
12
|
+
// Use a simple, fast and not secure hashing algorithm just to ensure we don't return the same cached location for
|
|
13
|
+
// different types of files. This is mostly to speed up performance of tests, but in theory will also affect customers
|
|
14
|
+
// when scanning for multiple TargetFrameworks.
|
|
15
|
+
function generateCacheKey(files) {
|
|
16
|
+
const hash = crypto.createHash('sha256');
|
|
17
|
+
files
|
|
18
|
+
.map((f) => f.contents)
|
|
19
|
+
.forEach((content) => {
|
|
20
|
+
hash.update(content);
|
|
21
|
+
});
|
|
22
|
+
return hash.digest('hex');
|
|
23
|
+
}
|
|
24
|
+
// Importing .NET code from Typescript is not trivial and a bit lose cannon programming. However, we also want to keep
|
|
25
|
+
// this project dependent on as few packages as possible, so instead of opting into some "run .NET in Typescript" package,
|
|
26
|
+
// we do the simplest, which is this. Makes C# debugging a bit harder, but it's a compromise.
|
|
27
|
+
// Further, we also utilize this for our test fixtures. Running tests in parallel can cause race conditions for fixtures
|
|
28
|
+
// at-rest, if two tests are `dotnet publish`'ing to the same fixture folder. So we supply a generator for populating
|
|
29
|
+
// fixtures in temporary folders to keep the test stateless while ensuring parallelization.
|
|
30
|
+
function generate(tempDirNameSpace, files) {
|
|
31
|
+
const key = generateCacheKey(files);
|
|
32
|
+
const cached = cache.get(key);
|
|
33
|
+
if (cached) {
|
|
34
|
+
return cached;
|
|
35
|
+
}
|
|
36
|
+
const tempDir = fs.mkdtempSync(path.join(os.tmpdir(), `snyk-nuget-plugin-test-${tempDirNameSpace}-`));
|
|
37
|
+
let tempFilePath;
|
|
38
|
+
files.forEach((file) => {
|
|
39
|
+
tempFilePath = path.join(tempDir, file.name);
|
|
40
|
+
fs.writeFileSync(tempFilePath, file.contents);
|
|
41
|
+
});
|
|
42
|
+
debug(`Generated temporary CS files (${files
|
|
43
|
+
.map((f) => f.name)
|
|
44
|
+
.join(',')}) in ${tempDir}`);
|
|
45
|
+
cache.set(key, tempDir);
|
|
46
|
+
return tempDir;
|
|
47
|
+
}
|
|
48
|
+
exports.generate = generate;
|
|
49
|
+
function tearDown(dirs) {
|
|
50
|
+
debug(`Attempting to delete temporary CS files in ${dirs.join(',')}`);
|
|
51
|
+
for (const dir of dirs) {
|
|
52
|
+
if (!dir) {
|
|
53
|
+
// No tempDir to tear down. Assuming the test failed somewhere.
|
|
54
|
+
// Jest won't throw an error anyway if the operation fails.
|
|
55
|
+
return;
|
|
56
|
+
}
|
|
57
|
+
try {
|
|
58
|
+
fs.rmSync(dir, { recursive: true });
|
|
59
|
+
}
|
|
60
|
+
catch (error) {
|
|
61
|
+
// Ignore it, test was tearing down anyway, and it seems Windows boxes especially don't like this.
|
|
62
|
+
}
|
|
63
|
+
}
|
|
64
|
+
}
|
|
65
|
+
exports.tearDown = tearDown;
|
|
66
|
+
//# sourceMappingURL=generator.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"generator.js","sourceRoot":"","sources":["../../../lib/nuget-parser/csharp/generator.ts"],"names":[],"mappings":";;;AAAA,6BAA6B;AAC7B,yBAAyB;AACzB,yBAAyB;AAEzB,qCAAqC;AACrC,wCAAwC;AACxC,iCAAiC;AAEjC,MAAM,KAAK,GAAG,WAAW,CAAC,MAAM,CAAC,CAAC;AAElC,MAAM,KAAK,GAAG,IAAI,SAAS,EAAE,CAAC;AAE9B,kHAAkH;AAClH,sHAAsH;AACtH,+CAA+C;AAC/C,SAAS,gBAAgB,CAAC,KAAyB;IACjD,MAAM,IAAI,GAAG,MAAM,CAAC,UAAU,CAAC,QAAQ,CAAC,CAAC;IACzC,KAAK;SACF,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,QAAQ,CAAC;SACtB,OAAO,CAAC,CAAC,OAAO,EAAE,EAAE;QACnB,IAAI,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC;IACvB,CAAC,CAAC,CAAC;IACL,OAAO,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;AAC5B,CAAC;AAED,sHAAsH;AACtH,0HAA0H;AAC1H,6FAA6F;AAC7F,wHAAwH;AACxH,qHAAqH;AACrH,2FAA2F;AAC3F,SAAgB,QAAQ,CACtB,gBAAwB,EACxB,KAAyB;IAEzB,MAAM,GAAG,GAAG,gBAAgB,CAAC,KAAK,CAAC,CAAC;IACpC,MAAM,MAAM,GAAuB,KAAK,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;IAClD,IAAI,MAAM,EAAE;QACV,OAAO,MAAM,CAAC;KACf;IAED,MAAM,OAAO,GAAG,EAAE,CAAC,WAAW,CAC5B,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC,MAAM,EAAE,EAAE,0BAA0B,gBAAgB,GAAG,CAAC,CACtE,CAAC;IAEF,IAAI,YAAoB,CAAC;IACzB,KAAK,CAAC,OAAO,CAAC,CAAC,IAAI,EAAE,EAAE;QACrB,YAAY,GAAG,IAAI,CAAC,IAAI,CAAC,OAAO,EAAE,IAAI,CAAC,IAAI,CAAC,CAAC;QAC7C,EAAE,CAAC,aAAa,CAAC,YAAY,EAAE,IAAI,CAAC,QAAQ,CAAC,CAAC;IAChD,CAAC,CAAC,CAAC;IAEH,KAAK,CACH,iCAAiC,KAAK;SACnC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC;SAClB,IAAI,CAAC,GAAG,CAAC,QAAQ,OAAO,EAAE,CAC9B,CAAC;IAEF,KAAK,CAAC,GAAG,CAAC,GAAG,EAAE,OAAO,CAAC,CAAC;IACxB,OAAO,OAAO,CAAC;AACjB,CAAC;AA5BD,4BA4BC;AAED,SAAgB,QAAQ,CAAC,IAAc;IACrC,KAAK,CAAC,8CAA8C,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;IAEtE,KAAK,MAAM,GAAG,IAAI,IAAI,EAAE;QACtB,IAAI,CAAC,GAAG,EAAE;YACR,+DAA+D;YAC/D,2DAA2D;YAC3D,OAAO;SACR;QAED,IAAI;YACF,EAAE,CAAC,MAAM,CAAC,GAAG,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAC;SACrC;QAAC,OAAO,KAAc,EAAE;YACvB,kGAAkG;SACnG;KACF;AACH,CAAC;AAhBD,4BAgBC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export declare function generate(): string;
|
|
@@ -0,0 +1,85 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.generate = void 0;
|
|
4
|
+
const generator = require("./generator");
|
|
5
|
+
function generate() {
|
|
6
|
+
const files = [
|
|
7
|
+
{
|
|
8
|
+
name: 'Parse.csproj',
|
|
9
|
+
contents: `
|
|
10
|
+
<Project Sdk='Microsoft.NET.Sdk'>
|
|
11
|
+
<PropertyGroup>
|
|
12
|
+
<OutputType>Exe</OutputType>
|
|
13
|
+
<TargetFramework>net7.0</TargetFramework>
|
|
14
|
+
<ImplicitUsings>enable</ImplicitUsings>
|
|
15
|
+
<Nullable>enable</Nullable>
|
|
16
|
+
<RootNamespace>ShortNameToLongName</RootNamespace>
|
|
17
|
+
<GenerateRuntimeConfigurationFiles>true</GenerateRuntimeConfigurationFiles>
|
|
18
|
+
</PropertyGroup>
|
|
19
|
+
|
|
20
|
+
<ItemGroup>
|
|
21
|
+
<PackageReference Include='Newtonsoft.Json' Version='13.0.3' />
|
|
22
|
+
<PackageReference Include='NuGet.Frameworks' Version='6.7.0' />
|
|
23
|
+
</ItemGroup>
|
|
24
|
+
</Project>
|
|
25
|
+
`,
|
|
26
|
+
},
|
|
27
|
+
{
|
|
28
|
+
name: 'Program.cs',
|
|
29
|
+
contents: `
|
|
30
|
+
using NuGet.Frameworks;
|
|
31
|
+
using Newtonsoft.Json;
|
|
32
|
+
|
|
33
|
+
namespace ShortNameToLongName;
|
|
34
|
+
|
|
35
|
+
class Program
|
|
36
|
+
{
|
|
37
|
+
static void Main(string[] args)
|
|
38
|
+
{
|
|
39
|
+
if (args.Length < 1)
|
|
40
|
+
{
|
|
41
|
+
Console.WriteLine("Usage: dotnet run <shortTargetFramework>");
|
|
42
|
+
return;
|
|
43
|
+
}
|
|
44
|
+
|
|
45
|
+
string shortName = args[0];
|
|
46
|
+
|
|
47
|
+
try
|
|
48
|
+
{
|
|
49
|
+
NuGetFramework framework = NuGetFramework.Parse(shortName);
|
|
50
|
+
string json = JsonConvert.SerializeObject(new
|
|
51
|
+
{
|
|
52
|
+
framework.Framework,
|
|
53
|
+
framework.Version,
|
|
54
|
+
framework.Platform,
|
|
55
|
+
framework.PlatformVersion,
|
|
56
|
+
framework.HasPlatform,
|
|
57
|
+
framework.HasProfile,
|
|
58
|
+
framework.Profile,
|
|
59
|
+
framework.DotNetFrameworkName,
|
|
60
|
+
framework.DotNetPlatformName,
|
|
61
|
+
framework.IsPCL,
|
|
62
|
+
framework.IsPackageBased,
|
|
63
|
+
framework.AllFrameworkVersions,
|
|
64
|
+
framework.IsUnsupported,
|
|
65
|
+
framework.IsAgnostic,
|
|
66
|
+
framework.IsAny,
|
|
67
|
+
framework.IsSpecificFramework,
|
|
68
|
+
ShortName = shortName
|
|
69
|
+
}, Formatting.None);
|
|
70
|
+
Console.Write(json);
|
|
71
|
+
}
|
|
72
|
+
catch (Exception ex)
|
|
73
|
+
{
|
|
74
|
+
Console.WriteLine($"Error: {ex.Message}");
|
|
75
|
+
}
|
|
76
|
+
}
|
|
77
|
+
}
|
|
78
|
+
`,
|
|
79
|
+
},
|
|
80
|
+
];
|
|
81
|
+
const tempDir = generator.generate('csharp', files);
|
|
82
|
+
return tempDir;
|
|
83
|
+
}
|
|
84
|
+
exports.generate = generate;
|
|
85
|
+
//# sourceMappingURL=nugetframeworks_parser.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"nugetframeworks_parser.js","sourceRoot":"","sources":["../../../lib/nuget-parser/csharp/nugetframeworks_parser.ts"],"names":[],"mappings":";;;AACA,yCAAyC;AAEzC,SAAgB,QAAQ;IACtB,MAAM,KAAK,GAAuB;QAChC;YACE,IAAI,EAAE,cAAc;YACpB,QAAQ,EAAE;;;;;;;;;;;;;;;;CAgBf;SACI;QACD;YACE,IAAI,EAAE,YAAY;YAClB,QAAQ,EAAE;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CAiDf;SACI;KACF,CAAC;IAEF,MAAM,OAAO,GAAG,SAAS,CAAC,QAAQ,CAAC,QAAQ,EAAE,KAAK,CAAC,CAAC;IACpD,OAAO,OAAO,CAAC;AACjB,CAAC;AA/ED,4BA+EC"}
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
import { ManifestType } from './types';
|
|
2
|
+
import * as depGraphLib from '@snyk/dep-graph';
|
|
3
|
+
export declare function buildDepGraphFromFiles(root: string | undefined, targetFile: string | undefined, manifestType: ManifestType, useProjectNameFromAssetsFile: boolean, projectNamePrefix?: string, targetFramework?: string): Promise<{
|
|
4
|
+
dependencyGraph: depGraphLib.DepGraph;
|
|
5
|
+
targetFramework: string | undefined;
|
|
6
|
+
}>;
|
|
7
|
+
export declare function buildDepTreeFromFiles(root: string | undefined, targetFile: string | undefined, packagesFolderPath: string | undefined, manifestType: ManifestType, useProjectNameFromAssetsFile: boolean, projectNamePrefix?: string): Promise<any>;
|
|
@@ -13,6 +13,7 @@ const packagesConfigParser = require("./parsers/packages-config-parser");
|
|
|
13
13
|
const errors_1 = require("../errors");
|
|
14
14
|
const types_1 = require("./types");
|
|
15
15
|
const dotnet = require("./cli/dotnet");
|
|
16
|
+
const nugetFrameworksParser = require("./csharp/nugetframeworks_parser");
|
|
16
17
|
const runtimeAssembly = require("./runtime-assembly");
|
|
17
18
|
const debug = debugModule('snyk');
|
|
18
19
|
const PARSERS = {
|
|
@@ -109,7 +110,9 @@ Supply a targetFramework by using the \x1b[1m--target-framework\x1b[0m argument.
|
|
|
109
110
|
const assemblyVersions = runtimeAssembly.generateRuntimeAssemblies(depsFile);
|
|
110
111
|
// Parse the TargetFramework using Nuget.Frameworks itself, instead of trying to reinvent the wheel, thus ensuring
|
|
111
112
|
// we have maximum context to use later when building the depGraph.
|
|
112
|
-
const
|
|
113
|
+
const location = nugetFrameworksParser.generate();
|
|
114
|
+
await dotnet.restore(location);
|
|
115
|
+
const response = await dotnet.run(location, [decidedTargetFramework]);
|
|
113
116
|
const targetFrameworkInfo = JSON.parse(response);
|
|
114
117
|
if (targetFrameworkInfo.IsUnsupported) {
|
|
115
118
|
throw new errors_1.InvalidManifestError(`dotnet was not able to parse the target framework ${decidedTargetFramework}, it was reported unsupported by the dotnet runtime`);
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../lib/nuget-parser/index.ts"],"names":[],"mappings":"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
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../lib/nuget-parser/index.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export declare function parse(tree: any, manifest: any): any;
|
|
@@ -0,0 +1,3 @@
|
|
|
1
|
+
import * as depGraphLib from '@snyk/dep-graph';
|
|
2
|
+
import { AssemblyVersions, ProjectAssets, TargetFrameworkInfo } from '../types';
|
|
3
|
+
export declare function parse(projectName: string, projectAssets: ProjectAssets, runtimeAssembly: AssemblyVersions, targetFrameworkInfo: TargetFrameworkInfo): depGraphLib.DepGraph;
|
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
import { Dependency } from '../types';
|
|
2
|
+
export declare function cloneShallow(dep: Dependency): Dependency;
|
|
3
|
+
export declare function fromFolderName(folderName: any): {
|
|
4
|
+
dependencies: {};
|
|
5
|
+
name: any;
|
|
6
|
+
version: string;
|
|
7
|
+
};
|
|
8
|
+
export declare function parse(tree: any, manifest: any, targetFramework: any, packagesFolder: any): Promise<any>;
|
|
@@ -0,0 +1,3 @@
|
|
|
1
|
+
import { DependencyInfo, DependencyTree, TargetFramework } from '../types';
|
|
2
|
+
export declare function parse(nuspecContent: string, targetFramework: TargetFramework, depName: string): Promise<DependencyTree>;
|
|
3
|
+
export declare function parseNuspec(dep: DependencyInfo, targetFramework: TargetFramework): Promise<DependencyTree | null>;
|
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
import { Dependency, TargetFramework } from '../types';
|
|
2
|
+
export declare function fromPackagesConfigEntry(manifest: any): {
|
|
3
|
+
dependencies: {};
|
|
4
|
+
name: any;
|
|
5
|
+
version: any;
|
|
6
|
+
};
|
|
7
|
+
export declare function parse(fileContent: any): Dependency[];
|
|
8
|
+
export declare function getMinimumTargetFramework(fileContent: string): Promise<TargetFramework | undefined>;
|
|
@@ -0,0 +1,65 @@
|
|
|
1
|
+
export interface TargetFramework {
|
|
2
|
+
framework: string;
|
|
3
|
+
original: string;
|
|
4
|
+
version: string;
|
|
5
|
+
}
|
|
6
|
+
export interface TargetFrameworkInfo {
|
|
7
|
+
Framework: string;
|
|
8
|
+
Version: string;
|
|
9
|
+
Platform: string;
|
|
10
|
+
PlatformVersion: string;
|
|
11
|
+
HasPlatform: boolean;
|
|
12
|
+
HasProfile: boolean;
|
|
13
|
+
Profile: string;
|
|
14
|
+
DotNetFrameworkName: string;
|
|
15
|
+
DotNetPlatformName: string;
|
|
16
|
+
IsPCL: boolean;
|
|
17
|
+
IsPackageBased: boolean;
|
|
18
|
+
AllFrameworkVersions: boolean;
|
|
19
|
+
IsUnsupported: boolean;
|
|
20
|
+
IsAgnostic: boolean;
|
|
21
|
+
IsAny: boolean;
|
|
22
|
+
IsSpecificFramework: boolean;
|
|
23
|
+
ShortName: string;
|
|
24
|
+
}
|
|
25
|
+
export interface Dependency {
|
|
26
|
+
name: string;
|
|
27
|
+
version: string;
|
|
28
|
+
dependencies?: any;
|
|
29
|
+
}
|
|
30
|
+
export interface DependencyInfo {
|
|
31
|
+
name: string;
|
|
32
|
+
path: string;
|
|
33
|
+
version: string;
|
|
34
|
+
}
|
|
35
|
+
export interface DependencyTree {
|
|
36
|
+
name: string;
|
|
37
|
+
children: Dependency[];
|
|
38
|
+
}
|
|
39
|
+
export declare enum ManifestType {
|
|
40
|
+
PROJECT_JSON = "project.json",
|
|
41
|
+
DOTNET_CORE = "dotnet-core",
|
|
42
|
+
PACKAGES_CONFIG = "packages.config",
|
|
43
|
+
PAKET = "paket"
|
|
44
|
+
}
|
|
45
|
+
interface Project {
|
|
46
|
+
version: string;
|
|
47
|
+
restore: Record<string, any>;
|
|
48
|
+
frameworks: Record<string, any>;
|
|
49
|
+
runtimeIdentifierGraphPath: string;
|
|
50
|
+
}
|
|
51
|
+
export interface ProjectAssets {
|
|
52
|
+
version: number;
|
|
53
|
+
targets: Record<string, any>;
|
|
54
|
+
libraries: Record<string, any>;
|
|
55
|
+
projectFileDependencyGroups: Record<string, any>;
|
|
56
|
+
packageFolders: Record<string, any>;
|
|
57
|
+
project: Project;
|
|
58
|
+
}
|
|
59
|
+
export type AssemblyVersions = Record<string, string>;
|
|
60
|
+
export type RuntimeAssemblyVersions = Record<string, AssemblyVersions>;
|
|
61
|
+
export interface DotNetFile {
|
|
62
|
+
name: string;
|
|
63
|
+
contents: string;
|
|
64
|
+
}
|
|
65
|
+
export {};
|
package/package.json
CHANGED
|
@@ -7,7 +7,7 @@
|
|
|
7
7
|
"test": "npm run test:unit",
|
|
8
8
|
"test:unit": "jest --coverage --runInBand",
|
|
9
9
|
"lint": "npm run lint:prettier && npm run lint:eslint",
|
|
10
|
-
"lint:eslint": "eslint .
|
|
10
|
+
"lint:eslint": "eslint -c .eslintrc '{lib,test}/**/*.ts'",
|
|
11
11
|
"lint:prettier": "prettier --check '{lib,test}/**/*.{ts,csproj,json}' --log-level 'warn'",
|
|
12
12
|
"lint:fix": "prettier --write '{lib,test}/**/*.{ts,csproj,json}' && eslint -c .eslintrc --fix '{lib,test}/**/*.ts'",
|
|
13
13
|
"build": "tsc",
|
|
@@ -42,6 +42,7 @@
|
|
|
42
42
|
"dotnet-deps-parser": "5.3.0",
|
|
43
43
|
"jszip": "3.10.1",
|
|
44
44
|
"lodash": "^4.17.21",
|
|
45
|
+
"node-cache": "^5.1.2",
|
|
45
46
|
"snyk-paket-parser": "1.6.0",
|
|
46
47
|
"tslib": "^2.6.1",
|
|
47
48
|
"xml2js": "^0.6.2"
|
|
@@ -57,5 +58,5 @@
|
|
|
57
58
|
"ts-jest": "^29.1.1",
|
|
58
59
|
"typescript": "^5.1.6"
|
|
59
60
|
},
|
|
60
|
-
"version": "1.
|
|
61
|
+
"version": "1.38.0"
|
|
61
62
|
}
|