@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.
Files changed (138) hide show
  1. package/LICENSE-THIRD-PARTY +1437 -41
  2. package/executors.json +9 -0
  3. package/generators.json +34 -0
  4. package/package.json +5 -1
  5. package/sdk/license.d.ts +8 -0
  6. package/sdk/license.js +13 -0
  7. package/sdk/license.js.map +1 -0
  8. package/src/connection/generator.d.ts +1 -1
  9. package/src/connection/generator.js +19 -0
  10. package/src/connection/generator.js.map +1 -1
  11. package/src/license/__snapshots__/config.spec.ts.snap +23 -0
  12. package/src/license/config-types.d.ts +17 -0
  13. package/src/license/config.d.ts +63 -5
  14. package/src/license/config.js +315 -7
  15. package/src/license/config.js.map +1 -1
  16. package/src/license/dependency-check/check.d.ts +12 -0
  17. package/src/license/dependency-check/check.js +111 -0
  18. package/src/license/dependency-check/check.js.map +1 -0
  19. package/src/license/dependency-check/collectors/collector.d.ts +21 -0
  20. package/src/license/dependency-check/collectors/collector.js +76 -0
  21. package/src/license/dependency-check/collectors/collector.js.map +1 -0
  22. package/src/license/dependency-check/collectors/npm-collector.d.ts +10 -0
  23. package/src/license/dependency-check/collectors/npm-collector.js +75 -0
  24. package/src/license/dependency-check/collectors/npm-collector.js.map +1 -0
  25. package/src/license/dependency-check/collectors/python-collector.d.ts +19 -0
  26. package/src/license/dependency-check/collectors/python-collector.js +121 -0
  27. package/src/license/dependency-check/collectors/python-collector.js.map +1 -0
  28. package/src/license/dependency-check/evaluator.d.ts +9 -0
  29. package/src/license/dependency-check/evaluator.js +122 -0
  30. package/src/license/dependency-check/evaluator.js.map +1 -0
  31. package/src/license/dependency-check/executor-schema.json +6 -0
  32. package/src/license/dependency-check/executor.d.ts +9 -0
  33. package/src/license/dependency-check/executor.js +43 -0
  34. package/src/license/dependency-check/executor.js.map +1 -0
  35. package/src/license/dependency-check/pre-approved.d.ts +6 -0
  36. package/src/license/dependency-check/pre-approved.js +1280 -0
  37. package/src/license/dependency-check/pre-approved.js.map +1 -0
  38. package/src/license/dependency-check/types.d.ts +45 -0
  39. package/src/license/dependency-check/types.js +7 -0
  40. package/src/license/dependency-check/types.js.map +1 -0
  41. package/src/license/generator.js +110 -11
  42. package/src/license/generator.js.map +1 -1
  43. package/src/license/index.d.ts +8 -0
  44. package/src/license/index.js +13 -0
  45. package/src/license/index.js.map +1 -0
  46. package/src/license/known-exceptions.d.ts +7 -0
  47. package/src/license/known-exceptions.js +33 -0
  48. package/src/license/known-exceptions.js.map +1 -0
  49. package/src/license/schema.d.ts +5 -0
  50. package/src/license/schema.json +6 -0
  51. package/src/license/sync/generator.js +10 -10
  52. package/src/license/sync/generator.js.map +1 -1
  53. package/src/license/sync/project-file-sync.d.ts +2 -2
  54. package/src/license/sync/project-file-sync.js.map +1 -1
  55. package/src/preset/__snapshots__/generator.spec.ts.snap +70 -0
  56. package/src/preset/generator.d.ts +1 -1
  57. package/src/preset/generator.js +5 -1
  58. package/src/preset/generator.js.map +1 -1
  59. package/src/preset/schema.d.ts +1 -0
  60. package/src/preset/schema.json +5 -0
  61. package/src/py/agent/generator.js +5 -0
  62. package/src/py/agent/generator.js.map +1 -1
  63. package/src/py/mcp-server/generator.js +3 -0
  64. package/src/py/mcp-server/generator.js.map +1 -1
  65. package/src/py/project/generator.js +7 -0
  66. package/src/py/project/generator.js.map +1 -1
  67. package/src/ts/dynamodb/__snapshots__/generator.spec.ts.snap +1502 -0
  68. package/src/ts/dynamodb/agent-connection/__snapshots__/generator.spec.ts.snap +45 -0
  69. package/src/ts/dynamodb/agent-connection/generator.d.ts +10 -0
  70. package/src/ts/dynamodb/agent-connection/generator.js +32 -0
  71. package/src/ts/dynamodb/agent-connection/generator.js.map +1 -0
  72. package/src/ts/dynamodb/agent-connection/schema.d.ts +14 -0
  73. package/src/ts/dynamodb/agent-connection/schema.json +22 -0
  74. package/src/ts/dynamodb/files/scripts/create-local-table.ts.template +161 -0
  75. package/src/ts/{rdb/files/scripts/docker-pull.ts.template → dynamodb/files/scripts/pull-image.ts.template} +1 -1
  76. package/src/ts/dynamodb/files/scripts/start-container.ts.template +81 -0
  77. package/src/ts/dynamodb/files/src/client.ts.template +45 -0
  78. package/src/ts/dynamodb/files/src/constants.ts.template +9 -0
  79. package/src/ts/dynamodb/files/src/entities/example.ts.template +47 -0
  80. package/src/ts/dynamodb/files/src/entities/index.ts.template +1 -0
  81. package/src/ts/dynamodb/files/src/gsi.ts.template +14 -0
  82. package/src/ts/dynamodb/files/src/index.ts.template +11 -0
  83. package/src/ts/dynamodb/generator.d.ts +10 -0
  84. package/src/ts/dynamodb/generator.js +108 -0
  85. package/src/ts/dynamodb/generator.js.map +1 -0
  86. package/src/ts/dynamodb/mcp-server-connection/__snapshots__/generator.spec.ts.snap +45 -0
  87. package/src/ts/dynamodb/mcp-server-connection/generator.d.ts +10 -0
  88. package/src/ts/dynamodb/mcp-server-connection/generator.js +32 -0
  89. package/src/ts/dynamodb/mcp-server-connection/generator.js.map +1 -0
  90. package/src/ts/dynamodb/mcp-server-connection/schema.d.ts +14 -0
  91. package/src/ts/dynamodb/mcp-server-connection/schema.json +22 -0
  92. package/src/ts/dynamodb/schema.d.ts +14 -0
  93. package/src/ts/dynamodb/schema.json +52 -0
  94. package/src/ts/dynamodb/smithy-connection/__snapshots__/generator.spec.ts.snap +23 -0
  95. package/src/ts/dynamodb/smithy-connection/generator.d.ts +10 -0
  96. package/src/ts/dynamodb/smithy-connection/generator.js +30 -0
  97. package/src/ts/dynamodb/smithy-connection/generator.js.map +1 -0
  98. package/src/ts/dynamodb/smithy-connection/schema.d.ts +12 -0
  99. package/src/ts/dynamodb/smithy-connection/schema.json +18 -0
  100. package/src/ts/dynamodb/trpc-connection/__snapshots__/generator.spec.ts.snap +23 -0
  101. package/src/ts/dynamodb/trpc-connection/generator.d.ts +10 -0
  102. package/src/ts/dynamodb/trpc-connection/generator.js +30 -0
  103. package/src/ts/dynamodb/trpc-connection/generator.js.map +1 -0
  104. package/src/ts/dynamodb/trpc-connection/schema.d.ts +12 -0
  105. package/src/ts/dynamodb/trpc-connection/schema.json +18 -0
  106. package/src/ts/lib/ts-project-utils.js +6 -0
  107. package/src/ts/lib/ts-project-utils.js.map +1 -1
  108. package/src/ts/mcp-server/generator.js +3 -0
  109. package/src/ts/mcp-server/generator.js.map +1 -1
  110. package/src/ts/rdb/__snapshots__/generator.spec.ts.snap +22 -38
  111. package/src/ts/rdb/files/scripts/pull-image.ts.template +15 -0
  112. package/src/ts/rdb/files/scripts/{docker-start.ts.template → start-container.ts.template} +23 -23
  113. package/src/ts/rdb/generator.js +8 -8
  114. package/src/ts/rdb/generator.js.map +1 -1
  115. package/src/utils/ast.d.ts +28 -0
  116. package/src/utils/ast.js +59 -1
  117. package/src/utils/ast.js.map +1 -1
  118. package/src/utils/config/utils.d.ts +11 -1
  119. package/src/utils/config/utils.js +37 -5
  120. package/src/utils/config/utils.js.map +1 -1
  121. package/src/utils/dynamodb-constructs/dynamodb-constructs.d.ts +18 -0
  122. package/src/utils/dynamodb-constructs/dynamodb-constructs.js +57 -0
  123. package/src/utils/dynamodb-constructs/dynamodb-constructs.js.map +1 -0
  124. package/src/utils/dynamodb-constructs/files/cdk/app/dynamodb/__nameKebabCase__.ts.template +30 -0
  125. package/src/utils/dynamodb-constructs/files/cdk/core/dynamodb.ts.template +105 -0
  126. package/src/utils/dynamodb-constructs/files/terraform/app/dynamodb/__nameKebabCase__/__nameKebabCase__.tf.template +65 -0
  127. package/src/utils/dynamodb-constructs/files/terraform/core/dynamodb/dynamodb.tf.template +155 -0
  128. package/src/utils/mcp.d.ts +25 -0
  129. package/src/utils/mcp.js +81 -0
  130. package/src/utils/mcp.js.map +1 -0
  131. package/src/utils/port.d.ts +6 -0
  132. package/src/utils/port.js +23 -2
  133. package/src/utils/port.js.map +1 -1
  134. package/src/utils/rdb-constructs/files/terraform/app/dbs/__nameKebabCase__/__nameKebabCase__.tf.template +4 -4
  135. package/src/utils/rdb-constructs/rdb-constructs.d.ts +1 -1
  136. package/src/utils/versions.d.ts +2 -1
  137. package/src/utils/versions.js +1 -0
  138. 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,6 @@
1
+ {
2
+ "$schema": "https://json-schema.org/schema",
3
+ "type": "object",
4
+ "properties": {},
5
+ "additionalProperties": false
6
+ }
@@ -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"}
@@ -0,0 +1,6 @@
1
+ /**
2
+ * Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.
3
+ * SPDX-License-Identifier: Apache-2.0
4
+ */
5
+ import type { AllowlistEntry } from './types';
6
+ export declare const PRE_APPROVED_LICENSES: AllowlistEntry[];