@aws/nx-plugin 1.0.0-rc.3 → 1.0.0-rc.5
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/LICENSE-THIRD-PARTY +1437 -41
- package/executors.json +9 -0
- package/generators.json +34 -0
- package/package.json +5 -1
- package/sdk/license.d.ts +8 -0
- package/sdk/license.js +13 -0
- package/sdk/license.js.map +1 -0
- package/src/connection/generator.d.ts +1 -1
- package/src/connection/generator.js +19 -0
- package/src/connection/generator.js.map +1 -1
- package/src/license/__snapshots__/config.spec.ts.snap +23 -0
- package/src/license/config-types.d.ts +17 -0
- package/src/license/config.d.ts +63 -5
- package/src/license/config.js +315 -7
- package/src/license/config.js.map +1 -1
- package/src/license/dependency-check/check.d.ts +12 -0
- package/src/license/dependency-check/check.js +111 -0
- package/src/license/dependency-check/check.js.map +1 -0
- package/src/license/dependency-check/collectors/collector.d.ts +21 -0
- package/src/license/dependency-check/collectors/collector.js +76 -0
- package/src/license/dependency-check/collectors/collector.js.map +1 -0
- package/src/license/dependency-check/collectors/npm-collector.d.ts +10 -0
- package/src/license/dependency-check/collectors/npm-collector.js +75 -0
- package/src/license/dependency-check/collectors/npm-collector.js.map +1 -0
- package/src/license/dependency-check/collectors/python-collector.d.ts +19 -0
- package/src/license/dependency-check/collectors/python-collector.js +121 -0
- package/src/license/dependency-check/collectors/python-collector.js.map +1 -0
- package/src/license/dependency-check/evaluator.d.ts +9 -0
- package/src/license/dependency-check/evaluator.js +122 -0
- package/src/license/dependency-check/evaluator.js.map +1 -0
- package/src/license/dependency-check/executor-schema.json +6 -0
- package/src/license/dependency-check/executor.d.ts +9 -0
- package/src/license/dependency-check/executor.js +43 -0
- package/src/license/dependency-check/executor.js.map +1 -0
- package/src/license/dependency-check/pre-approved.d.ts +6 -0
- package/src/license/dependency-check/pre-approved.js +1280 -0
- package/src/license/dependency-check/pre-approved.js.map +1 -0
- package/src/license/dependency-check/types.d.ts +45 -0
- package/src/license/dependency-check/types.js +7 -0
- package/src/license/dependency-check/types.js.map +1 -0
- package/src/license/generator.js +110 -11
- package/src/license/generator.js.map +1 -1
- package/src/license/index.d.ts +8 -0
- package/src/license/index.js +13 -0
- package/src/license/index.js.map +1 -0
- package/src/license/known-exceptions.d.ts +7 -0
- package/src/license/known-exceptions.js +33 -0
- package/src/license/known-exceptions.js.map +1 -0
- package/src/license/schema.d.ts +5 -0
- package/src/license/schema.json +6 -0
- package/src/license/sync/generator.js +10 -10
- package/src/license/sync/generator.js.map +1 -1
- package/src/license/sync/project-file-sync.d.ts +2 -2
- package/src/license/sync/project-file-sync.js.map +1 -1
- package/src/preset/__snapshots__/generator.spec.ts.snap +70 -0
- package/src/preset/generator.d.ts +1 -1
- package/src/preset/generator.js +5 -1
- package/src/preset/generator.js.map +1 -1
- package/src/preset/schema.d.ts +1 -0
- package/src/preset/schema.json +5 -0
- package/src/py/agent/generator.js +5 -0
- package/src/py/agent/generator.js.map +1 -1
- package/src/py/mcp-server/generator.js +3 -0
- package/src/py/mcp-server/generator.js.map +1 -1
- package/src/py/project/generator.js +7 -0
- package/src/py/project/generator.js.map +1 -1
- package/src/ts/dynamodb/__snapshots__/generator.spec.ts.snap +1502 -0
- package/src/ts/dynamodb/agent-connection/__snapshots__/generator.spec.ts.snap +45 -0
- package/src/ts/dynamodb/agent-connection/generator.d.ts +10 -0
- package/src/ts/dynamodb/agent-connection/generator.js +32 -0
- package/src/ts/dynamodb/agent-connection/generator.js.map +1 -0
- package/src/ts/dynamodb/agent-connection/schema.d.ts +14 -0
- package/src/ts/dynamodb/agent-connection/schema.json +22 -0
- package/src/ts/dynamodb/files/scripts/create-local-table.ts.template +161 -0
- package/src/ts/{rdb/files/scripts/docker-pull.ts.template → dynamodb/files/scripts/pull-image.ts.template} +1 -1
- package/src/ts/dynamodb/files/scripts/start-container.ts.template +81 -0
- package/src/ts/dynamodb/files/src/client.ts.template +45 -0
- package/src/ts/dynamodb/files/src/constants.ts.template +9 -0
- package/src/ts/dynamodb/files/src/entities/example.ts.template +47 -0
- package/src/ts/dynamodb/files/src/entities/index.ts.template +1 -0
- package/src/ts/dynamodb/files/src/gsi.ts.template +14 -0
- package/src/ts/dynamodb/files/src/index.ts.template +11 -0
- package/src/ts/dynamodb/generator.d.ts +10 -0
- package/src/ts/dynamodb/generator.js +108 -0
- package/src/ts/dynamodb/generator.js.map +1 -0
- package/src/ts/dynamodb/mcp-server-connection/__snapshots__/generator.spec.ts.snap +45 -0
- package/src/ts/dynamodb/mcp-server-connection/generator.d.ts +10 -0
- package/src/ts/dynamodb/mcp-server-connection/generator.js +32 -0
- package/src/ts/dynamodb/mcp-server-connection/generator.js.map +1 -0
- package/src/ts/dynamodb/mcp-server-connection/schema.d.ts +14 -0
- package/src/ts/dynamodb/mcp-server-connection/schema.json +22 -0
- package/src/ts/dynamodb/schema.d.ts +14 -0
- package/src/ts/dynamodb/schema.json +52 -0
- package/src/ts/dynamodb/smithy-connection/__snapshots__/generator.spec.ts.snap +23 -0
- package/src/ts/dynamodb/smithy-connection/generator.d.ts +10 -0
- package/src/ts/dynamodb/smithy-connection/generator.js +30 -0
- package/src/ts/dynamodb/smithy-connection/generator.js.map +1 -0
- package/src/ts/dynamodb/smithy-connection/schema.d.ts +12 -0
- package/src/ts/dynamodb/smithy-connection/schema.json +18 -0
- package/src/ts/dynamodb/trpc-connection/__snapshots__/generator.spec.ts.snap +23 -0
- package/src/ts/dynamodb/trpc-connection/generator.d.ts +10 -0
- package/src/ts/dynamodb/trpc-connection/generator.js +30 -0
- package/src/ts/dynamodb/trpc-connection/generator.js.map +1 -0
- package/src/ts/dynamodb/trpc-connection/schema.d.ts +12 -0
- package/src/ts/dynamodb/trpc-connection/schema.json +18 -0
- package/src/ts/lib/ts-project-utils.js +6 -0
- package/src/ts/lib/ts-project-utils.js.map +1 -1
- package/src/ts/mcp-server/generator.js +3 -0
- package/src/ts/mcp-server/generator.js.map +1 -1
- package/src/ts/rdb/__snapshots__/generator.spec.ts.snap +22 -38
- package/src/ts/rdb/files/scripts/pull-image.ts.template +15 -0
- package/src/ts/rdb/files/scripts/{docker-start.ts.template → start-container.ts.template} +23 -23
- package/src/ts/rdb/generator.js +8 -8
- package/src/ts/rdb/generator.js.map +1 -1
- package/src/utils/ast.d.ts +28 -0
- package/src/utils/ast.js +59 -1
- package/src/utils/ast.js.map +1 -1
- package/src/utils/config/utils.d.ts +11 -1
- package/src/utils/config/utils.js +37 -5
- package/src/utils/config/utils.js.map +1 -1
- package/src/utils/dynamodb-constructs/dynamodb-constructs.d.ts +18 -0
- package/src/utils/dynamodb-constructs/dynamodb-constructs.js +57 -0
- package/src/utils/dynamodb-constructs/dynamodb-constructs.js.map +1 -0
- package/src/utils/dynamodb-constructs/files/cdk/app/dynamodb/__nameKebabCase__.ts.template +30 -0
- package/src/utils/dynamodb-constructs/files/cdk/core/dynamodb.ts.template +105 -0
- package/src/utils/dynamodb-constructs/files/terraform/app/dynamodb/__nameKebabCase__/__nameKebabCase__.tf.template +65 -0
- package/src/utils/dynamodb-constructs/files/terraform/core/dynamodb/dynamodb.tf.template +155 -0
- package/src/utils/mcp.d.ts +25 -0
- package/src/utils/mcp.js +81 -0
- package/src/utils/mcp.js.map +1 -0
- package/src/utils/port.d.ts +6 -0
- package/src/utils/port.js +23 -2
- package/src/utils/port.js.map +1 -1
- package/src/utils/rdb-constructs/files/terraform/app/dbs/__nameKebabCase__/__nameKebabCase__.tf.template +4 -4
- package/src/utils/rdb-constructs/rdb-constructs.d.ts +1 -1
- package/src/utils/versions.d.ts +2 -1
- package/src/utils/versions.js +1 -0
- package/src/utils/versions.js.map +1 -1
|
@@ -0,0 +1,75 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.collectNpmDependencies = void 0;
|
|
4
|
+
const tslib_1 = require("tslib");
|
|
5
|
+
/**
|
|
6
|
+
* Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.
|
|
7
|
+
* SPDX-License-Identifier: Apache-2.0
|
|
8
|
+
*/
|
|
9
|
+
const fs_1 = require("fs");
|
|
10
|
+
const path_1 = require("path");
|
|
11
|
+
const licenseChecker = tslib_1.__importStar(require("license-checker-rseidelsohn"));
|
|
12
|
+
const NAME_VERSION_RE = /^(@?[^@]+)@(.+)$/;
|
|
13
|
+
const splitNameVersion = (identifier) => {
|
|
14
|
+
const match = identifier.match(NAME_VERSION_RE);
|
|
15
|
+
if (!match) {
|
|
16
|
+
return { name: identifier, version: '0.0.0' };
|
|
17
|
+
}
|
|
18
|
+
return { name: match[1], version: match[2] };
|
|
19
|
+
};
|
|
20
|
+
const flattenLicense = (raw) => {
|
|
21
|
+
if (!raw)
|
|
22
|
+
return '';
|
|
23
|
+
if (Array.isArray(raw)) {
|
|
24
|
+
if (raw.length === 0)
|
|
25
|
+
return '';
|
|
26
|
+
if (raw.length === 1)
|
|
27
|
+
return raw[0];
|
|
28
|
+
return `(${raw.join(' OR ')})`;
|
|
29
|
+
}
|
|
30
|
+
return raw;
|
|
31
|
+
};
|
|
32
|
+
const collectNpmDependencies = async (options) => {
|
|
33
|
+
const nodeModules = (0, path_1.join)(options.start, 'node_modules');
|
|
34
|
+
if (!(0, fs_1.existsSync)(nodeModules)) {
|
|
35
|
+
return [];
|
|
36
|
+
}
|
|
37
|
+
const exclude = new Set();
|
|
38
|
+
const projectPackageJson = (0, path_1.join)(options.start, 'package.json');
|
|
39
|
+
if ((0, fs_1.existsSync)(projectPackageJson)) {
|
|
40
|
+
try {
|
|
41
|
+
const pkg = JSON.parse((0, fs_1.readFileSync)(projectPackageJson, 'utf-8'));
|
|
42
|
+
if (pkg.name)
|
|
43
|
+
exclude.add(pkg.name);
|
|
44
|
+
}
|
|
45
|
+
catch {
|
|
46
|
+
// ignore
|
|
47
|
+
}
|
|
48
|
+
}
|
|
49
|
+
const packages = await new Promise((resolve, reject) => {
|
|
50
|
+
licenseChecker.init({
|
|
51
|
+
start: options.start,
|
|
52
|
+
excludePrivatePackages: true,
|
|
53
|
+
}, (err, results) => {
|
|
54
|
+
if (err)
|
|
55
|
+
reject(err);
|
|
56
|
+
else
|
|
57
|
+
resolve(results);
|
|
58
|
+
});
|
|
59
|
+
});
|
|
60
|
+
const out = [];
|
|
61
|
+
for (const [identifier, info] of Object.entries(packages)) {
|
|
62
|
+
const { name, version } = splitNameVersion(identifier);
|
|
63
|
+
if (exclude.has(name))
|
|
64
|
+
continue;
|
|
65
|
+
out.push({
|
|
66
|
+
name,
|
|
67
|
+
version,
|
|
68
|
+
rawLicense: flattenLicense(info.licenses),
|
|
69
|
+
path: info.path,
|
|
70
|
+
});
|
|
71
|
+
}
|
|
72
|
+
return out;
|
|
73
|
+
};
|
|
74
|
+
exports.collectNpmDependencies = collectNpmDependencies;
|
|
75
|
+
//# sourceMappingURL=npm-collector.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"npm-collector.js","sourceRoot":"","sources":["../../../../../../../packages/nx-plugin/src/license/dependency-check/collectors/npm-collector.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,19 @@
|
|
|
1
|
+
export interface PythonDependency {
|
|
2
|
+
name: string;
|
|
3
|
+
version: string;
|
|
4
|
+
rawLicense: string;
|
|
5
|
+
}
|
|
6
|
+
export interface PythonCollectorOptions {
|
|
7
|
+
start: string;
|
|
8
|
+
excludePackages?: string[];
|
|
9
|
+
}
|
|
10
|
+
/**
|
|
11
|
+
* Discover Python project names in the workspace (from pyproject.toml files)
|
|
12
|
+
* so they can be excluded from the license check.
|
|
13
|
+
*/
|
|
14
|
+
export declare const findWorkspacePyProjectNames: (start: string) => Promise<string[]>;
|
|
15
|
+
/**
|
|
16
|
+
* Collect Python dependency licenses by invoking `uvx pip-licenses` against
|
|
17
|
+
* each discovered virtual environment.
|
|
18
|
+
*/
|
|
19
|
+
export declare const collectPythonDependencies: (options: PythonCollectorOptions) => Promise<PythonDependency[]>;
|
|
@@ -0,0 +1,121 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.collectPythonDependencies = exports.findWorkspacePyProjectNames = void 0;
|
|
4
|
+
const tslib_1 = require("tslib");
|
|
5
|
+
/**
|
|
6
|
+
* Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.
|
|
7
|
+
* SPDX-License-Identifier: Apache-2.0
|
|
8
|
+
*/
|
|
9
|
+
const fs_1 = require("fs");
|
|
10
|
+
const path_1 = require("path");
|
|
11
|
+
const child_process_1 = require("child_process");
|
|
12
|
+
const fast_glob_1 = require("fast-glob");
|
|
13
|
+
const toml_1 = tslib_1.__importDefault(require("@iarna/toml"));
|
|
14
|
+
const py_1 = require("../../../utils/py");
|
|
15
|
+
const isUsable = (value) => !!value && value !== 'UNKNOWN';
|
|
16
|
+
// Priority: License-Expression (PEP 639) > License-Metadata (legacy) > License-Classifier (deprecated classifiers)
|
|
17
|
+
const pickLicense = (entry) => {
|
|
18
|
+
if (isUsable(entry['License-Expression']))
|
|
19
|
+
return entry['License-Expression'];
|
|
20
|
+
if (isUsable(entry['License-Metadata']))
|
|
21
|
+
return entry['License-Metadata'];
|
|
22
|
+
if (isUsable(entry['License-Classifier']))
|
|
23
|
+
return entry['License-Classifier'];
|
|
24
|
+
return '';
|
|
25
|
+
};
|
|
26
|
+
/**
|
|
27
|
+
* Discover Python project names in the workspace (from pyproject.toml files)
|
|
28
|
+
* so they can be excluded from the license check.
|
|
29
|
+
*/
|
|
30
|
+
const findWorkspacePyProjectNames = async (start) => {
|
|
31
|
+
const tomlFiles = await (0, fast_glob_1.glob)(['**/pyproject.toml'], {
|
|
32
|
+
cwd: start,
|
|
33
|
+
ignore: ['**/node_modules/**', '**/.venv/**', '**/venv/**', '**/dist/**'],
|
|
34
|
+
deep: 4,
|
|
35
|
+
suppressErrors: true,
|
|
36
|
+
});
|
|
37
|
+
const names = [];
|
|
38
|
+
for (const tomlFile of tomlFiles) {
|
|
39
|
+
try {
|
|
40
|
+
const content = (0, fs_1.readFileSync)((0, path_1.join)(start, tomlFile), 'utf-8');
|
|
41
|
+
const parsed = toml_1.default.parse(content);
|
|
42
|
+
const name = parsed.project?.name;
|
|
43
|
+
if (typeof name === 'string')
|
|
44
|
+
names.push(name);
|
|
45
|
+
}
|
|
46
|
+
catch {
|
|
47
|
+
// skip unreadable or malformed files
|
|
48
|
+
}
|
|
49
|
+
}
|
|
50
|
+
return names;
|
|
51
|
+
};
|
|
52
|
+
exports.findWorkspacePyProjectNames = findWorkspacePyProjectNames;
|
|
53
|
+
const findVenvPythons = async (start) => {
|
|
54
|
+
const patterns = [
|
|
55
|
+
'**/.venv/bin/python',
|
|
56
|
+
'**/venv/bin/python',
|
|
57
|
+
'**/.venv/Scripts/python.exe',
|
|
58
|
+
'**/venv/Scripts/python.exe',
|
|
59
|
+
];
|
|
60
|
+
const candidates = await (0, fast_glob_1.glob)(patterns, {
|
|
61
|
+
cwd: start,
|
|
62
|
+
ignore: [
|
|
63
|
+
'**/node_modules/**',
|
|
64
|
+
'**/.nx/**',
|
|
65
|
+
'**/dist/**',
|
|
66
|
+
'**/build/**',
|
|
67
|
+
'**/.git/**',
|
|
68
|
+
],
|
|
69
|
+
deep: 6,
|
|
70
|
+
suppressErrors: true,
|
|
71
|
+
});
|
|
72
|
+
const pythons = candidates.map((c) => (0, path_1.join)(start, c));
|
|
73
|
+
if (process.env.UV_PROJECT_ENVIRONMENT) {
|
|
74
|
+
const envPython = (0, path_1.join)(process.env.UV_PROJECT_ENVIRONMENT, process.platform === 'win32' ? 'Scripts/python.exe' : 'bin/python');
|
|
75
|
+
if ((0, fs_1.existsSync)(envPython)) {
|
|
76
|
+
pythons.push(envPython);
|
|
77
|
+
}
|
|
78
|
+
}
|
|
79
|
+
return pythons.filter((p) => (0, fs_1.existsSync)(p));
|
|
80
|
+
};
|
|
81
|
+
/**
|
|
82
|
+
* Collect Python dependency licenses by invoking `uvx pip-licenses` against
|
|
83
|
+
* each discovered virtual environment.
|
|
84
|
+
*/
|
|
85
|
+
const collectPythonDependencies = async (options) => {
|
|
86
|
+
const pythons = await findVenvPythons(options.start);
|
|
87
|
+
if (pythons.length === 0)
|
|
88
|
+
return [];
|
|
89
|
+
const seen = new Map();
|
|
90
|
+
const ignoreFlag = options.excludePackages?.length
|
|
91
|
+
? ` --ignore-packages ${options.excludePackages.join(' ')}`
|
|
92
|
+
: '';
|
|
93
|
+
const cmd = (0, py_1.uvxCommand)('pip-licenses', `--format json --from all${ignoreFlag}`);
|
|
94
|
+
for (const python of pythons) {
|
|
95
|
+
try {
|
|
96
|
+
const output = (0, child_process_1.execSync)(`${cmd} --python ${python}`, {
|
|
97
|
+
cwd: options.start,
|
|
98
|
+
encoding: 'utf-8',
|
|
99
|
+
stdio: ['pipe', 'pipe', 'pipe'],
|
|
100
|
+
timeout: 60_000,
|
|
101
|
+
});
|
|
102
|
+
const entries = JSON.parse(output);
|
|
103
|
+
for (const entry of entries) {
|
|
104
|
+
const key = `${entry.Name}@${entry.Version}`;
|
|
105
|
+
if (seen.has(key))
|
|
106
|
+
continue;
|
|
107
|
+
seen.set(key, {
|
|
108
|
+
name: entry.Name,
|
|
109
|
+
version: entry.Version,
|
|
110
|
+
rawLicense: pickLicense(entry),
|
|
111
|
+
});
|
|
112
|
+
}
|
|
113
|
+
}
|
|
114
|
+
catch {
|
|
115
|
+
// If pip-licenses fails for this venv, skip it
|
|
116
|
+
}
|
|
117
|
+
}
|
|
118
|
+
return Array.from(seen.values());
|
|
119
|
+
};
|
|
120
|
+
exports.collectPythonDependencies = collectPythonDependencies;
|
|
121
|
+
//# sourceMappingURL=python-collector.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"python-collector.js","sourceRoot":"","sources":["../../../../../../../packages/nx-plugin/src/license/dependency-check/collectors/python-collector.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
import { AllowlistEntry, LicenseStatus } from './types';
|
|
2
|
+
export interface EvaluatorOptions {
|
|
3
|
+
allow: AllowlistEntry[];
|
|
4
|
+
}
|
|
5
|
+
interface Evaluator {
|
|
6
|
+
evaluate(rawLicense: string | undefined | null): LicenseStatus;
|
|
7
|
+
}
|
|
8
|
+
export declare const createEvaluator: (options: EvaluatorOptions) => Evaluator;
|
|
9
|
+
export {};
|
|
@@ -0,0 +1,122 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.createEvaluator = void 0;
|
|
4
|
+
const tslib_1 = require("tslib");
|
|
5
|
+
/**
|
|
6
|
+
* Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.
|
|
7
|
+
* SPDX-License-Identifier: Apache-2.0
|
|
8
|
+
*/
|
|
9
|
+
const spdx_satisfies_1 = tslib_1.__importDefault(require("spdx-satisfies"));
|
|
10
|
+
const isUnknownToken = (raw) => {
|
|
11
|
+
if (!raw)
|
|
12
|
+
return true;
|
|
13
|
+
const trimmed = raw.trim();
|
|
14
|
+
if (!trimmed)
|
|
15
|
+
return true;
|
|
16
|
+
if (trimmed.toUpperCase() === 'UNKNOWN')
|
|
17
|
+
return true;
|
|
18
|
+
if (trimmed.toLowerCase().startsWith('custom:'))
|
|
19
|
+
return true;
|
|
20
|
+
if (trimmed.toLowerCase().startsWith('see license in'))
|
|
21
|
+
return true;
|
|
22
|
+
return false;
|
|
23
|
+
};
|
|
24
|
+
/**
|
|
25
|
+
* Strip the trailing `*` that license-checker adds when a license is guessed
|
|
26
|
+
* from file content rather than declared in package.json metadata.
|
|
27
|
+
*/
|
|
28
|
+
const normalise = (raw) => {
|
|
29
|
+
let s = raw.trim();
|
|
30
|
+
if (s.endsWith('*'))
|
|
31
|
+
s = s.slice(0, -1).trim();
|
|
32
|
+
return s;
|
|
33
|
+
};
|
|
34
|
+
/**
|
|
35
|
+
* Build a flat list of valid SPDX IDs from the allowlist for use with
|
|
36
|
+
* spdx-satisfies. Entries that aren't parseable as SPDX identifiers are
|
|
37
|
+
* excluded (they're still matched via the alias lookup).
|
|
38
|
+
*/
|
|
39
|
+
const buildSpdxIds = (allow) => {
|
|
40
|
+
const ids = [];
|
|
41
|
+
for (const entry of allow) {
|
|
42
|
+
if (!entry.spdxId)
|
|
43
|
+
continue;
|
|
44
|
+
try {
|
|
45
|
+
(0, spdx_satisfies_1.default)(entry.spdxId, [entry.spdxId]);
|
|
46
|
+
ids.push(entry.spdxId);
|
|
47
|
+
}
|
|
48
|
+
catch {
|
|
49
|
+
// Not a valid SPDX identifier — skip for spdx-satisfies, still
|
|
50
|
+
// matched via alias lookup
|
|
51
|
+
}
|
|
52
|
+
}
|
|
53
|
+
return ids;
|
|
54
|
+
};
|
|
55
|
+
/**
|
|
56
|
+
* Build a case-insensitive lookup for matching by full name or alias
|
|
57
|
+
* (for licenses that aren't valid SPDX but appear in package metadata).
|
|
58
|
+
*/
|
|
59
|
+
const buildAliasLookup = (allow) => {
|
|
60
|
+
const m = new Map();
|
|
61
|
+
for (const e of allow) {
|
|
62
|
+
if (e.spdxId)
|
|
63
|
+
m.set(e.spdxId.toLowerCase(), true);
|
|
64
|
+
if (e.fullName)
|
|
65
|
+
m.set(e.fullName.toLowerCase(), true);
|
|
66
|
+
for (const a of e.aliases ?? []) {
|
|
67
|
+
if (a)
|
|
68
|
+
m.set(a.toLowerCase(), true);
|
|
69
|
+
}
|
|
70
|
+
}
|
|
71
|
+
return m;
|
|
72
|
+
};
|
|
73
|
+
const evaluateToken = (token, spdxIds, aliasLookup) => {
|
|
74
|
+
const cleaned = normalise(token);
|
|
75
|
+
if (isUnknownToken(cleaned))
|
|
76
|
+
return 'UNKNOWN';
|
|
77
|
+
// Try spdx-satisfies for valid SPDX expressions
|
|
78
|
+
try {
|
|
79
|
+
if ((0, spdx_satisfies_1.default)(cleaned, spdxIds))
|
|
80
|
+
return 'PRE_APPROVED';
|
|
81
|
+
}
|
|
82
|
+
catch {
|
|
83
|
+
// Not a valid SPDX expression — fall through to alias matching
|
|
84
|
+
}
|
|
85
|
+
// Fall back to alias/fullName matching for non-SPDX strings
|
|
86
|
+
if (aliasLookup.has(cleaned.toLowerCase()))
|
|
87
|
+
return 'PRE_APPROVED';
|
|
88
|
+
return 'NOT_APPROVED';
|
|
89
|
+
};
|
|
90
|
+
const createEvaluator = (options) => {
|
|
91
|
+
const spdxIds = buildSpdxIds(options.allow);
|
|
92
|
+
const aliasLookup = buildAliasLookup(options.allow);
|
|
93
|
+
return {
|
|
94
|
+
evaluate(rawLicense) {
|
|
95
|
+
if (!rawLicense || rawLicense.trim().length === 0)
|
|
96
|
+
return 'UNKNOWN';
|
|
97
|
+
const normalised = normalise(rawLicense);
|
|
98
|
+
if (isUnknownToken(normalised))
|
|
99
|
+
return 'UNKNOWN';
|
|
100
|
+
// Python tooling emits "Apache Software License; BSD License" — split and treat as OR
|
|
101
|
+
if (normalised.includes(';')) {
|
|
102
|
+
const parts = normalised
|
|
103
|
+
.split(';')
|
|
104
|
+
.map((p) => p.trim())
|
|
105
|
+
.filter((p) => p.length > 0);
|
|
106
|
+
if (parts.length > 1) {
|
|
107
|
+
for (const part of parts) {
|
|
108
|
+
const status = evaluateToken(part, spdxIds, aliasLookup);
|
|
109
|
+
if (status === 'PRE_APPROVED')
|
|
110
|
+
return 'PRE_APPROVED';
|
|
111
|
+
}
|
|
112
|
+
if (parts.every((p) => isUnknownToken(normalise(p))))
|
|
113
|
+
return 'UNKNOWN';
|
|
114
|
+
return 'NOT_APPROVED';
|
|
115
|
+
}
|
|
116
|
+
}
|
|
117
|
+
return evaluateToken(normalised, spdxIds, aliasLookup);
|
|
118
|
+
},
|
|
119
|
+
};
|
|
120
|
+
};
|
|
121
|
+
exports.createEvaluator = createEvaluator;
|
|
122
|
+
//# sourceMappingURL=evaluator.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"evaluator.js","sourceRoot":"","sources":["../../../../../../packages/nx-plugin/src/license/dependency-check/evaluator.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.
|
|
3
|
+
* SPDX-License-Identifier: Apache-2.0
|
|
4
|
+
*/
|
|
5
|
+
import { ExecutorContext } from '@nx/devkit';
|
|
6
|
+
export type LicenseCheckExecutorSchema = Record<string, never>;
|
|
7
|
+
export default function runLicenseCheckExecutor(_options: LicenseCheckExecutorSchema, _context: ExecutorContext): Promise<{
|
|
8
|
+
success: boolean;
|
|
9
|
+
}>;
|
|
@@ -0,0 +1,43 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.default = runLicenseCheckExecutor;
|
|
4
|
+
/**
|
|
5
|
+
* Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.
|
|
6
|
+
* SPDX-License-Identifier: Apache-2.0
|
|
7
|
+
*/
|
|
8
|
+
const devkit_1 = require("@nx/devkit");
|
|
9
|
+
const check_1 = require("./check");
|
|
10
|
+
const utils_1 = require("../../utils/config/utils");
|
|
11
|
+
const collector_1 = require("./collectors/collector");
|
|
12
|
+
const loadConfig = () => {
|
|
13
|
+
const config = (0, utils_1.readAwsNxPluginConfigFromDisk)(devkit_1.workspaceRoot);
|
|
14
|
+
if (!config)
|
|
15
|
+
return null;
|
|
16
|
+
// Dependency checking is enabled by the presence of `license.dependencies`.
|
|
17
|
+
return config.license?.dependencies ?? null;
|
|
18
|
+
};
|
|
19
|
+
async function runLicenseCheckExecutor(_options, _context) {
|
|
20
|
+
if (process.env.LICENSE_DEPENDENCY_CHECK === 'skip') {
|
|
21
|
+
console.log('License check skipped via LICENSE_DEPENDENCY_CHECK=skip environment variable.');
|
|
22
|
+
return { success: true };
|
|
23
|
+
}
|
|
24
|
+
const config = loadConfig();
|
|
25
|
+
if (!config) {
|
|
26
|
+
console.log('License check skipped — not configured.');
|
|
27
|
+
return { success: true };
|
|
28
|
+
}
|
|
29
|
+
const collectors = config.collectors ?? [(0, collector_1.npmCollector)()];
|
|
30
|
+
const result = await (0, check_1.runCheck)({
|
|
31
|
+
projectRoot: devkit_1.workspaceRoot,
|
|
32
|
+
config,
|
|
33
|
+
collectors,
|
|
34
|
+
});
|
|
35
|
+
const report = (0, check_1.formatReport)(result, { collectors });
|
|
36
|
+
if (result.pass) {
|
|
37
|
+
console.log(report);
|
|
38
|
+
return { success: true };
|
|
39
|
+
}
|
|
40
|
+
console.error(report);
|
|
41
|
+
return { success: false };
|
|
42
|
+
}
|
|
43
|
+
//# sourceMappingURL=executor.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"executor.js","sourceRoot":"","sources":["../../../../../../packages/nx-plugin/src/license/dependency-check/executor.ts"],"names":[],"mappings":";;AAoBA,0CAkCC;AAtDD;;;GAGG;AACH,uCAA4D;AAC5D,mCAAiD;AAEjD,oDAAyE;AACzE,sDAAwE;AAIxE,MAAM,UAAU,GAAG,GAAiC,EAAE;IACpD,MAAM,MAAM,GAAG,IAAA,qCAA6B,EAAC,sBAAa,CAAC,CAAC;IAC5D,IAAI,CAAC,MAAM;QAAE,OAAO,IAAI,CAAC;IAEzB,4EAA4E;IAC5E,OAAO,MAAM,CAAC,OAAO,EAAE,YAAY,IAAI,IAAI,CAAC;AAC9C,CAAC,CAAC;AAEa,KAAK,UAAU,uBAAuB,CACnD,QAAoC,EACpC,QAAyB;IAEzB,IAAI,OAAO,CAAC,GAAG,CAAC,wBAAwB,KAAK,MAAM,EAAE,CAAC;QACpD,OAAO,CAAC,GAAG,CACT,+EAA+E,CAChF,CAAC;QACF,OAAO,EAAE,OAAO,EAAE,IAAI,EAAE,CAAC;IAC3B,CAAC;IAED,MAAM,MAAM,GAAG,UAAU,EAAE,CAAC;IAC5B,IAAI,CAAC,MAAM,EAAE,CAAC;QACZ,OAAO,CAAC,GAAG,CAAC,yCAAyC,CAAC,CAAC;QACvD,OAAO,EAAE,OAAO,EAAE,IAAI,EAAE,CAAC;IAC3B,CAAC;IAED,MAAM,UAAU,GAAuB,MAAM,CAAC,UAAU,IAAI,CAAC,IAAA,wBAAY,GAAE,CAAC,CAAC;IAE7E,MAAM,MAAM,GAAG,MAAM,IAAA,gBAAQ,EAAC;QAC5B,WAAW,EAAE,sBAAa;QAC1B,MAAM;QACN,UAAU;KACX,CAAC,CAAC;IAEH,MAAM,MAAM,GAAG,IAAA,oBAAY,EAAC,MAAM,EAAE,EAAE,UAAU,EAAE,CAAC,CAAC;IAEpD,IAAI,MAAM,CAAC,IAAI,EAAE,CAAC;QAChB,OAAO,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC;QACpB,OAAO,EAAE,OAAO,EAAE,IAAI,EAAE,CAAC;IAC3B,CAAC;IAED,OAAO,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC;IACtB,OAAO,EAAE,OAAO,EAAE,KAAK,EAAE,CAAC;AAC5B,CAAC"}
|