license-cop 1.0.2 → 1.2.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/LICENSE.md +1 -1
- package/README.md +4 -0
- package/package.json +5 -5
- package/src/index.d.ts +2 -1
- package/src/index.js +16 -4
- package/src/index.js.map +1 -1
- package/src/lib/cli/commands/init.d.ts +4 -0
- package/src/lib/cli/commands/init.js +29 -0
- package/src/lib/cli/commands/init.js.map +1 -0
- package/src/lib/cli/commands/main.d.ts +6 -0
- package/src/lib/cli/commands/main.js +44 -0
- package/src/lib/cli/commands/main.js.map +1 -0
- package/src/lib/cli/commands/version.d.ts +4 -0
- package/src/lib/cli/commands/version.js +19 -0
- package/src/lib/cli/commands/version.js.map +1 -0
- package/src/lib/cli/create-command.d.ts +5 -0
- package/src/lib/cli/create-command.js +15 -0
- package/src/lib/cli/create-command.js.map +1 -0
- package/src/lib/cli/index.d.ts +1 -1
- package/src/lib/cli/index.js +8 -59
- package/src/lib/cli/index.js.map +1 -1
- package/src/lib/cli/report-failure.d.ts +2 -0
- package/src/lib/cli/report-failure.js +34 -0
- package/src/lib/cli/report-failure.js.map +1 -0
- package/src/lib/cli/report-success.d.ts +2 -0
- package/src/lib/cli/report-success.js +20 -0
- package/src/lib/cli/report-success.js.map +1 -0
- package/src/lib/config/config-error.d.ts +4 -0
- package/src/lib/config/config-error.js +25 -0
- package/src/lib/config/config-error.js.map +1 -0
- package/src/lib/config/config.js +2 -5
- package/src/lib/config/config.js.map +1 -1
- package/src/lib/config/find-config.js +9 -7
- package/src/lib/config/find-config.js.map +1 -1
- package/src/lib/config/load-config.js +4 -6
- package/src/lib/config/load-config.js.map +1 -1
- package/src/lib/config/load-parent-config.js +2 -4
- package/src/lib/config/load-parent-config.js.map +1 -1
- package/src/lib/config/parent-resolutions/github.d.ts +1 -1
- package/src/lib/config/parent-resolutions/github.js +12 -9
- package/src/lib/config/parent-resolutions/github.js.map +1 -1
- package/src/lib/config/parent-resolutions/http.js +3 -5
- package/src/lib/config/parent-resolutions/http.js.map +1 -1
- package/src/lib/config/parent-resolutions/npm.js +2 -3
- package/src/lib/config/parent-resolutions/npm.js.map +1 -1
- package/src/lib/config/parsers/json5.js +2 -6
- package/src/lib/config/parsers/json5.js.map +1 -1
- package/src/lib/license-cop.d.ts +2 -1
- package/src/lib/license-cop.js +70 -37
- package/src/lib/license-cop.js.map +1 -1
- package/src/lib/logger.d.ts +8 -0
- package/src/lib/logger.js +39 -0
- package/src/lib/logger.js.map +1 -0
- package/src/lib/package-json.d.ts +33 -3
- package/src/lib/package-json.js +41 -8
- package/src/lib/package-json.js.map +1 -1
- package/src/lib/package-rules.d.ts +0 -1
- package/src/lib/package-rules.js +3 -15
- package/src/lib/package-rules.js.map +1 -1
- package/src/lib/result.d.ts +27 -0
- package/src/lib/result.js +3 -0
- package/src/lib/result.js.map +1 -0
- package/src/lib/spdx/calculate-issues.d.ts +2 -0
- package/src/lib/spdx/calculate-issues.js +43 -0
- package/src/lib/spdx/calculate-issues.js.map +1 -0
- package/src/lib/spdx/get-tokens.d.ts +2 -0
- package/src/lib/spdx/get-tokens.js +52 -0
- package/src/lib/spdx/get-tokens.js.map +1 -0
- package/src/lib/spdx/parse-license-expression.d.ts +2 -0
- package/src/lib/spdx/parse-license-expression.js +18 -0
- package/src/lib/spdx/parse-license-expression.js.map +1 -0
- package/src/lib/spdx/parse-tokens.d.ts +3 -0
- package/src/lib/spdx/parse-tokens.js +118 -0
- package/src/lib/spdx/parse-tokens.js.map +1 -0
- package/src/lib/spdx/types/spdx-expression.d.ts +20 -0
- package/src/lib/spdx/types/spdx-expression.js +3 -0
- package/src/lib/spdx/types/spdx-expression.js.map +1 -0
- package/src/lib/spdx/types/token.d.ts +23 -0
- package/src/lib/spdx/types/token.js +25 -0
- package/src/lib/spdx/types/token.js.map +1 -0
- package/src/lib/utils/join-string-array.d.ts +1 -0
- package/src/lib/utils/join-string-array.js +26 -0
- package/src/lib/utils/join-string-array.js.map +1 -0
- package/src/lib/cli/arguments.d.ts +0 -18
- package/src/lib/cli/arguments.js +0 -23
- package/src/lib/cli/arguments.js.map +0 -1
- package/src/lib/cli/init.d.ts +0 -1
- package/src/lib/cli/init.js +0 -24
- package/src/lib/cli/init.js.map +0 -1
- package/src/lib/cli/version.d.ts +0 -1
- package/src/lib/cli/version.js +0 -17
- package/src/lib/cli/version.js.map +0 -1
- package/src/lib/violations-error.d.ts +0 -9
- package/src/lib/violations-error.js +0 -16
- package/src/lib/violations-error.js.map +0 -1
package/LICENSE.md
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
Copyright (c) 2023, [Toby Smith](https://tobysmith.uk),
|
|
1
|
+
Copyright (c) 2023, [Toby Smith](https://tobysmith.uk), contact@tobythe.dev
|
|
2
2
|
|
|
3
3
|
Permission to use, copy, modify, and/or distribute this software for any purpose with or without fee is hereby granted, provided that the above copyright notice and this permission notice appear in all copies.
|
|
4
4
|
|
package/README.md
CHANGED
|
@@ -6,6 +6,10 @@ Yet another license checker tool for your dependencies; focused on simplicity.
|
|
|
6
6
|
<img alt="npm" src="https://img.shields.io/npm/v/license-cop?logo=npm">
|
|
7
7
|
</a>
|
|
8
8
|
|
|
9
|
+
<a href="https://license-cop.js.org">
|
|
10
|
+
<img alt="Protected by: License-Cop" src="https://license-cop.js.org/shield.svg">
|
|
11
|
+
</a>
|
|
12
|
+
|
|
9
13
|
## Setup
|
|
10
14
|
|
|
11
15
|
Install license-cop
|
package/package.json
CHANGED
|
@@ -1,18 +1,18 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "license-cop",
|
|
3
|
-
"version": "1.0
|
|
3
|
+
"version": "1.2.0",
|
|
4
4
|
"type": "commonjs",
|
|
5
5
|
"bin": {
|
|
6
6
|
"license-cop": "./src/bin/license-cop"
|
|
7
7
|
},
|
|
8
8
|
"author": {
|
|
9
9
|
"name": "Toby Smith",
|
|
10
|
-
"email": "
|
|
10
|
+
"email": "contact@tobythe.dev",
|
|
11
11
|
"url": "https://tobysmith.uk"
|
|
12
12
|
},
|
|
13
13
|
"license": "ISC",
|
|
14
14
|
"description": "Yet another license checker tool for your dependencies; focused on simplicity.",
|
|
15
|
-
"homepage": "https://
|
|
15
|
+
"homepage": "https://license-cop.js.org",
|
|
16
16
|
"repository": {
|
|
17
17
|
"type": "git",
|
|
18
18
|
"url": "git+https://github.com/tobysmith568/license-cop.git",
|
|
@@ -31,8 +31,8 @@
|
|
|
31
31
|
"oss"
|
|
32
32
|
],
|
|
33
33
|
"dependencies": {
|
|
34
|
+
"@commander-js/extra-typings": "11.0.0",
|
|
34
35
|
"@npmcli/arborist": "6.2.5",
|
|
35
|
-
"arg": "5.0.2",
|
|
36
36
|
"axios": "1.3.4",
|
|
37
37
|
"compare-versions": "6.0.0-rc.1",
|
|
38
38
|
"cosmiconfig": "8.1.3",
|
|
@@ -42,7 +42,7 @@
|
|
|
42
42
|
"zod": "3.21.4"
|
|
43
43
|
},
|
|
44
44
|
"peerDependencies": {
|
|
45
|
-
"@swc/helpers": "0.
|
|
45
|
+
"@swc/helpers": "0.5.1"
|
|
46
46
|
},
|
|
47
47
|
"main": "./src/index.js",
|
|
48
48
|
"exports": {
|
package/src/index.d.ts
CHANGED
|
@@ -1 +1,2 @@
|
|
|
1
|
-
export
|
|
1
|
+
export { checkLicenses, LicenseCopOptions } from "./lib/license-cop";
|
|
2
|
+
export { AllowedPackage, CheckLicensesResult, ForbiddenLicenseResult, LicensedPackage, NoLicenseResult } from "./lib/result";
|
package/src/index.js
CHANGED
|
@@ -1,8 +1,20 @@
|
|
|
1
1
|
"use strict";
|
|
2
|
-
|
|
3
|
-
|
|
2
|
+
function _export(target, all) {
|
|
3
|
+
for(var name in all)Object.defineProperty(target, name, {
|
|
4
|
+
enumerable: true,
|
|
5
|
+
get: all[name]
|
|
6
|
+
});
|
|
7
|
+
}
|
|
8
|
+
_export(exports, {
|
|
9
|
+
checkLicenses: ()=>_licenseCop.checkLicenses,
|
|
10
|
+
LicenseCopOptions: ()=>_licenseCop.LicenseCopOptions,
|
|
11
|
+
AllowedPackage: ()=>_result.AllowedPackage,
|
|
12
|
+
CheckLicensesResult: ()=>_result.CheckLicensesResult,
|
|
13
|
+
ForbiddenLicenseResult: ()=>_result.ForbiddenLicenseResult,
|
|
14
|
+
LicensedPackage: ()=>_result.LicensedPackage,
|
|
15
|
+
NoLicenseResult: ()=>_result.NoLicenseResult
|
|
4
16
|
});
|
|
5
|
-
const
|
|
6
|
-
|
|
17
|
+
const _licenseCop = require("./lib/license-cop");
|
|
18
|
+
const _result = require("./lib/result");
|
|
7
19
|
|
|
8
20
|
//# sourceMappingURL=index.js.map
|
package/src/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../../../packages/license-cop/src/index.ts"],"sourcesContent":["export
|
|
1
|
+
{"version":3,"sources":["../../../../packages/license-cop/src/index.ts"],"sourcesContent":["export { checkLicenses, LicenseCopOptions } from \"./lib/license-cop\";\nexport {\n AllowedPackage,\n CheckLicensesResult,\n ForbiddenLicenseResult,\n LicensedPackage,\n NoLicenseResult\n} from \"./lib/result\";\n"],"names":["checkLicenses","LicenseCopOptions","AllowedPackage","CheckLicensesResult","ForbiddenLicenseResult","LicensedPackage","NoLicenseResult"],"mappings":";;;;;;;;IAASA,aAAa,MAAbA,yBAAa;IAAEC,iBAAiB,MAAjBA,6BAAiB;IAEvCC,cAAc,MAAdA,sBAAc;IACdC,mBAAmB,MAAnBA,2BAAmB;IACnBC,sBAAsB,MAAtBA,8BAAsB;IACtBC,eAAe,MAAfA,uBAAe;IACfC,eAAe,MAAfA,uBAAe;;4BANgC;wBAO1C"}
|
|
@@ -0,0 +1,29 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "initCommand", {
|
|
3
|
+
enumerable: true,
|
|
4
|
+
get: ()=>initCommand
|
|
5
|
+
});
|
|
6
|
+
const _promises = require("fs/promises");
|
|
7
|
+
const _path = require("path");
|
|
8
|
+
const _logger = require("../../logger");
|
|
9
|
+
const _createCommand = require("../create-command");
|
|
10
|
+
const defaultConfig = `{
|
|
11
|
+
"$schema": "https://license-cop.js.org/schema.json",
|
|
12
|
+
"licenses": ["MIT", "ISC", "Apache-2.0"],
|
|
13
|
+
"packages": []
|
|
14
|
+
}
|
|
15
|
+
`;
|
|
16
|
+
const initCommand = (0, _createCommand.createCommandWithGlobalOptions)().name("--init").description("Create a new license-cop configuration file").action(async (options)=>{
|
|
17
|
+
const { directory } = options;
|
|
18
|
+
await init(directory);
|
|
19
|
+
});
|
|
20
|
+
const init = async (rootDir)=>{
|
|
21
|
+
_logger.default.log("Setting up a new license-cop config file...");
|
|
22
|
+
const configPath = (0, _path.join)(rootDir, ".licenses.json");
|
|
23
|
+
_logger.default.verbose(`Writing config file to: ${configPath}`);
|
|
24
|
+
await (0, _promises.writeFile)(configPath, defaultConfig);
|
|
25
|
+
_logger.default.log("Done!");
|
|
26
|
+
_logger.default.log("Run `npx license-cop` to check your dependencies");
|
|
27
|
+
};
|
|
28
|
+
|
|
29
|
+
//# sourceMappingURL=init.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../../../../../../../packages/license-cop/src/lib/cli/commands/init.ts"],"sourcesContent":["import { writeFile } from \"fs/promises\";\nimport { join } from \"path\";\nimport logger from \"../../logger\";\nimport { createCommandWithGlobalOptions } from \"../create-command\";\n\nconst defaultConfig = `{\n \"$schema\": \"https://license-cop.js.org/schema.json\",\n \"licenses\": [\"MIT\", \"ISC\", \"Apache-2.0\"],\n \"packages\": []\n}\n`;\n\nexport const initCommand = createCommandWithGlobalOptions()\n .name(\"--init\")\n .description(\"Create a new license-cop configuration file\")\n .action(async options => {\n const { directory } = options;\n\n await init(directory);\n });\n\nconst init = async (rootDir: string) => {\n logger.log(\"Setting up a new license-cop config file...\");\n\n const configPath = join(rootDir, \".licenses.json\");\n logger.verbose(`Writing config file to: ${configPath}`);\n await writeFile(configPath, defaultConfig);\n\n logger.log(\"Done!\");\n logger.log(\"Run `npx license-cop` to check your dependencies\");\n};\n"],"names":["initCommand","defaultConfig","createCommandWithGlobalOptions","name","description","action","options","directory","init","rootDir","logger","log","configPath","join","verbose","writeFile"],"mappings":";+BAYaA;;aAAAA;;0BAZa;sBACL;wBACF;+BAC4B;AAE/C,MAAMC,gBAAgB,CAAC;;;;;AAKvB,CAAC;AAEM,MAAMD,cAAcE,IAAAA,6CAA8B,IACtDC,IAAI,CAAC,UACLC,WAAW,CAAC,+CACZC,MAAM,CAAC,OAAMC,UAAW;IACvB,MAAM,EAAEC,UAAS,EAAE,GAAGD;IAEtB,MAAME,KAAKD;AACb;AAEF,MAAMC,OAAO,OAAOC,UAAoB;IACtCC,eAAM,CAACC,GAAG,CAAC;IAEX,MAAMC,aAAaC,IAAAA,UAAI,EAACJ,SAAS;IACjCC,eAAM,CAACI,OAAO,CAAC,CAAC,wBAAwB,EAAEF,WAAW,CAAC;IACtD,MAAMG,IAAAA,mBAAS,EAACH,YAAYX;IAE5BS,eAAM,CAACC,GAAG,CAAC;IACXD,eAAM,CAACC,GAAG,CAAC;AACb"}
|
|
@@ -0,0 +1,44 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "mainCommand", {
|
|
3
|
+
enumerable: true,
|
|
4
|
+
get: ()=>mainCommand
|
|
5
|
+
});
|
|
6
|
+
const _path = require("path");
|
|
7
|
+
const _loadConfig = require("../../config/load-config");
|
|
8
|
+
const _licenseCop = require("../../license-cop");
|
|
9
|
+
const _logger = require("../../logger");
|
|
10
|
+
const _packageJson = require("../../package-json");
|
|
11
|
+
const _createCommand = require("../create-command");
|
|
12
|
+
const _reportFailure = require("../report-failure");
|
|
13
|
+
const _reportSuccess = require("../report-success");
|
|
14
|
+
const mainCommand = (0, _createCommand.createCommandWithGlobalOptions)().name("license-cop").description("Yet another license checker tool for your dependencies; focused on simplicity").option("-D,--include-dev", "Include dev dependencies", false).option("--dev-only", "Only check dev dependencies", false).action(async (options)=>{
|
|
15
|
+
const { directory , includeDev , devOnly } = options;
|
|
16
|
+
await runLicenseCop(directory, includeDev, devOnly);
|
|
17
|
+
});
|
|
18
|
+
const runLicenseCop = async (directory, includeDevDependencies, devDependenciesOnly)=>{
|
|
19
|
+
_logger.default.verbose(`Using directory: ${directory}`);
|
|
20
|
+
const productName = await getProductName(directory);
|
|
21
|
+
_logger.default.log(`Scanning dependencies of: ${productName}`);
|
|
22
|
+
const config = await (0, _loadConfig.loadConfig)(directory);
|
|
23
|
+
const options = {
|
|
24
|
+
allowedLicenses: config.licenses,
|
|
25
|
+
allowedPackages: config.packages,
|
|
26
|
+
workingDirectory: directory,
|
|
27
|
+
includeDevDependencies: includeDevDependencies != null ? includeDevDependencies : config.includeDevDependencies,
|
|
28
|
+
devDependenciesOnly: devDependenciesOnly != null ? devDependenciesOnly : config.devDependenciesOnly
|
|
29
|
+
};
|
|
30
|
+
const result = await (0, _licenseCop.checkLicenses)(options);
|
|
31
|
+
if (result.noLicenses.size > 0 || result.forbiddenLicenses.size > 0) {
|
|
32
|
+
(0, _reportFailure.reportFailure)(result);
|
|
33
|
+
process.exitCode = 1;
|
|
34
|
+
} else {
|
|
35
|
+
(0, _reportSuccess.reportSuccess)(result);
|
|
36
|
+
}
|
|
37
|
+
};
|
|
38
|
+
const getProductName = async (directory)=>{
|
|
39
|
+
const packageJsonPath = (0, _path.join)(directory, "package.json");
|
|
40
|
+
const packageJson = await (0, _packageJson.readPackageJson)(packageJsonPath);
|
|
41
|
+
return packageJson.name;
|
|
42
|
+
};
|
|
43
|
+
|
|
44
|
+
//# sourceMappingURL=main.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../../../../../../../packages/license-cop/src/lib/cli/commands/main.ts"],"sourcesContent":["import { join } from \"path\";\nimport { loadConfig } from \"../../config/load-config\";\nimport { checkLicenses, LicenseCopOptions } from \"../../license-cop\";\nimport logger from \"../../logger\";\nimport { readPackageJson } from \"../../package-json\";\nimport { createCommandWithGlobalOptions } from \"../create-command\";\nimport { reportFailure } from \"../report-failure\";\nimport { reportSuccess } from \"../report-success\";\n\nexport const mainCommand = createCommandWithGlobalOptions()\n .name(\"license-cop\")\n .description(\"Yet another license checker tool for your dependencies; focused on simplicity\")\n .option(\"-D,--include-dev\", \"Include dev dependencies\", false)\n .option(\"--dev-only\", \"Only check dev dependencies\", false)\n .action(async options => {\n const { directory, includeDev, devOnly } = options;\n\n await runLicenseCop(directory, includeDev, devOnly);\n });\n\nconst runLicenseCop = async (\n directory: string,\n includeDevDependencies: boolean,\n devDependenciesOnly: boolean\n) => {\n logger.verbose(`Using directory: ${directory}`);\n\n const productName = await getProductName(directory);\n logger.log(`Scanning dependencies of: ${productName}`);\n\n const config = await loadConfig(directory);\n\n const options: LicenseCopOptions = {\n allowedLicenses: config.licenses,\n allowedPackages: config.packages,\n\n workingDirectory: directory,\n includeDevDependencies: includeDevDependencies ?? config.includeDevDependencies,\n devDependenciesOnly: devDependenciesOnly ?? config.devDependenciesOnly\n };\n\n const result = await checkLicenses(options);\n\n if (result.noLicenses.size > 0 || result.forbiddenLicenses.size > 0) {\n reportFailure(result);\n process.exitCode = 1;\n } else {\n reportSuccess(result);\n }\n};\n\nconst getProductName = async (directory: string): Promise<string> => {\n const packageJsonPath = join(directory, \"package.json\");\n const packageJson = await readPackageJson(packageJsonPath);\n return packageJson.name;\n};\n"],"names":["mainCommand","createCommandWithGlobalOptions","name","description","option","action","options","directory","includeDev","devOnly","runLicenseCop","includeDevDependencies","devDependenciesOnly","logger","verbose","productName","getProductName","log","config","loadConfig","allowedLicenses","licenses","allowedPackages","packages","workingDirectory","result","checkLicenses","noLicenses","size","forbiddenLicenses","reportFailure","process","exitCode","reportSuccess","packageJsonPath","join","packageJson","readPackageJson"],"mappings":";+BASaA;;aAAAA;;sBATQ;4BACM;4BACsB;wBAC9B;6BACa;+BACe;+BACjB;+BACA;AAEvB,MAAMA,cAAcC,IAAAA,6CAA8B,IACtDC,IAAI,CAAC,eACLC,WAAW,CAAC,iFACZC,MAAM,CAAC,oBAAoB,4BAA4B,KAAK,EAC5DA,MAAM,CAAC,cAAc,+BAA+B,KAAK,EACzDC,MAAM,CAAC,OAAMC,UAAW;IACvB,MAAM,EAAEC,UAAS,EAAEC,WAAU,EAAEC,QAAO,EAAE,GAAGH;IAE3C,MAAMI,cAAcH,WAAWC,YAAYC;AAC7C;AAEF,MAAMC,gBAAgB,OACpBH,WACAI,wBACAC,sBACG;IACHC,eAAM,CAACC,OAAO,CAAC,CAAC,iBAAiB,EAAEP,UAAU,CAAC;IAE9C,MAAMQ,cAAc,MAAMC,eAAeT;IACzCM,eAAM,CAACI,GAAG,CAAC,CAAC,0BAA0B,EAAEF,YAAY,CAAC;IAErD,MAAMG,SAAS,MAAMC,IAAAA,sBAAU,EAACZ;IAEhC,MAAMD,UAA6B;QACjCc,iBAAiBF,OAAOG,QAAQ;QAChCC,iBAAiBJ,OAAOK,QAAQ;QAEhCC,kBAAkBjB;QAClBI,wBAAwBA,iCAAAA,yBAA0BO,OAAOP,sBAAsB;QAC/EC,qBAAqBA,8BAAAA,sBAAuBM,OAAON,mBAAmB;IACxE;IAEA,MAAMa,SAAS,MAAMC,IAAAA,yBAAa,EAACpB;IAEnC,IAAImB,OAAOE,UAAU,CAACC,IAAI,GAAG,KAAKH,OAAOI,iBAAiB,CAACD,IAAI,GAAG,GAAG;QACnEE,IAAAA,4BAAa,EAACL;QACdM,QAAQC,QAAQ,GAAG;IACrB,OAAO;QACLC,IAAAA,4BAAa,EAACR;IAChB,CAAC;AACH;AAEA,MAAMT,iBAAiB,OAAOT,YAAuC;IACnE,MAAM2B,kBAAkBC,IAAAA,UAAI,EAAC5B,WAAW;IACxC,MAAM6B,cAAc,MAAMC,IAAAA,4BAAe,EAACH;IAC1C,OAAOE,YAAYlC,IAAI;AACzB"}
|
|
@@ -0,0 +1,19 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "versionCommand", {
|
|
3
|
+
enumerable: true,
|
|
4
|
+
get: ()=>versionCommand
|
|
5
|
+
});
|
|
6
|
+
const _path = require("path");
|
|
7
|
+
const _logger = require("../../logger");
|
|
8
|
+
const _packageJson = require("../../package-json");
|
|
9
|
+
const _createCommand = require("../create-command");
|
|
10
|
+
const versionCommand = (0, _createCommand.createCommandWithGlobalOptions)().name("-v").alias("--version").description("Print the installed version of license-cop").action(async ()=>{
|
|
11
|
+
await printPackageVersion();
|
|
12
|
+
});
|
|
13
|
+
const printPackageVersion = async ()=>{
|
|
14
|
+
const packageJsonLocation = (0, _path.join)(__dirname, "../../../../package.json");
|
|
15
|
+
const { version } = await (0, _packageJson.readPackageJson)(packageJsonLocation);
|
|
16
|
+
_logger.default.log(`v${version}`);
|
|
17
|
+
};
|
|
18
|
+
|
|
19
|
+
//# sourceMappingURL=version.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../../../../../../../packages/license-cop/src/lib/cli/commands/version.ts"],"sourcesContent":["import { join } from \"path\";\nimport logger from \"../../logger\";\nimport { readPackageJson } from \"../../package-json\";\nimport { createCommandWithGlobalOptions } from \"../create-command\";\n\nexport const versionCommand = createCommandWithGlobalOptions()\n .name(\"-v\")\n .alias(\"--version\")\n .description(\"Print the installed version of license-cop\")\n .action(async () => {\n await printPackageVersion();\n });\n\nconst printPackageVersion = async (): Promise<void> => {\n const packageJsonLocation = join(__dirname, \"../../../../package.json\");\n const { version } = await readPackageJson(packageJsonLocation);\n logger.log(`v${version}`);\n};\n"],"names":["versionCommand","createCommandWithGlobalOptions","name","alias","description","action","printPackageVersion","packageJsonLocation","join","__dirname","version","readPackageJson","logger","log"],"mappings":";+BAKaA;;aAAAA;;sBALQ;wBACF;6BACa;+BACe;AAExC,MAAMA,iBAAiBC,IAAAA,6CAA8B,IACzDC,IAAI,CAAC,MACLC,KAAK,CAAC,aACNC,WAAW,CAAC,8CACZC,MAAM,CAAC,UAAY;IAClB,MAAMC;AACR;AAEF,MAAMA,sBAAsB,UAA2B;IACrD,MAAMC,sBAAsBC,IAAAA,UAAI,EAACC,WAAW;IAC5C,MAAM,EAAEC,QAAO,EAAE,GAAG,MAAMC,IAAAA,4BAAe,EAACJ;IAC1CK,eAAM,CAACC,GAAG,CAAC,CAAC,CAAC,EAAEH,QAAQ,CAAC;AAC1B"}
|
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "createCommandWithGlobalOptions", {
|
|
3
|
+
enumerable: true,
|
|
4
|
+
get: ()=>createCommandWithGlobalOptions
|
|
5
|
+
});
|
|
6
|
+
const _extraTypings = require("@commander-js/extra-typings");
|
|
7
|
+
const _logger = require("../logger");
|
|
8
|
+
const createCommandWithGlobalOptions = ()=>new _extraTypings.Command().option("--verbose", "Enable verbose logging").option("-d,--directory <directory>", "The directory of the project. Defaults to the current working directory.", process.cwd()).hook("preAction", (thisCommand)=>{
|
|
9
|
+
const { verbose } = thisCommand.opts();
|
|
10
|
+
if (verbose) {
|
|
11
|
+
_logger.default.enableVerboseLogging();
|
|
12
|
+
}
|
|
13
|
+
});
|
|
14
|
+
|
|
15
|
+
//# sourceMappingURL=create-command.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../../../../../../packages/license-cop/src/lib/cli/create-command.ts"],"sourcesContent":["import { Command } from \"@commander-js/extra-typings\";\nimport logger from \"../logger\";\n\nexport const createCommandWithGlobalOptions = () =>\n new Command()\n .option(\"--verbose\", \"Enable verbose logging\")\n .option(\n \"-d,--directory <directory>\",\n \"The directory of the project. Defaults to the current working directory.\",\n process.cwd()\n )\n .hook(\"preAction\", thisCommand => {\n const { verbose } = thisCommand.opts();\n\n if (verbose) {\n logger.enableVerboseLogging();\n }\n });\n"],"names":["createCommandWithGlobalOptions","Command","option","process","cwd","hook","thisCommand","verbose","opts","logger","enableVerboseLogging"],"mappings":";+BAGaA;;aAAAA;;8BAHW;wBACL;AAEZ,MAAMA,iCAAiC,IAC5C,IAAIC,qBAAO,GACRC,MAAM,CAAC,aAAa,0BACpBA,MAAM,CACL,8BACA,4EACAC,QAAQC,GAAG,IAEZC,IAAI,CAAC,aAAaC,CAAAA,cAAe;QAChC,MAAM,EAAEC,QAAO,EAAE,GAAGD,YAAYE,IAAI;QAEpC,IAAID,SAAS;YACXE,eAAM,CAACC,oBAAoB;QAC7B,CAAC;IACH"}
|
package/src/lib/cli/index.d.ts
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
export declare
|
|
1
|
+
export declare const main: (args: string[]) => Promise<void>;
|
package/src/lib/cli/index.js
CHANGED
|
@@ -1,67 +1,16 @@
|
|
|
1
1
|
"use strict";
|
|
2
|
-
Object.defineProperty(exports, "__esModule", {
|
|
3
|
-
value: true
|
|
4
|
-
});
|
|
5
2
|
Object.defineProperty(exports, "main", {
|
|
6
3
|
enumerable: true,
|
|
7
4
|
get: ()=>main
|
|
8
5
|
});
|
|
9
|
-
const
|
|
10
|
-
const
|
|
11
|
-
const
|
|
12
|
-
const
|
|
13
|
-
const
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
const _version = require("./version");
|
|
17
|
-
async function main(args) {
|
|
18
|
-
try {
|
|
19
|
-
await cli(args);
|
|
20
|
-
} catch (e) {
|
|
21
|
-
if (e instanceof _violationsError.ViolationsError) {
|
|
22
|
-
reportViolations(e.violations);
|
|
23
|
-
} else if (e instanceof Error) {
|
|
24
|
-
console.error(e.message);
|
|
25
|
-
} else {
|
|
26
|
-
console.error(e);
|
|
27
|
-
}
|
|
28
|
-
process.exitCode = 1;
|
|
29
|
-
}
|
|
30
|
-
}
|
|
31
|
-
const cli = async (args)=>{
|
|
32
|
-
const givenUserInputs = parseUserInputs(args);
|
|
33
|
-
if (givenUserInputs["--version"]) {
|
|
34
|
-
await (0, _version.printPackageVersion)();
|
|
35
|
-
return;
|
|
36
|
-
}
|
|
37
|
-
var _givenUserInputs_directory;
|
|
38
|
-
const directory = (_givenUserInputs_directory = givenUserInputs["--directory"]) != null ? _givenUserInputs_directory : process.cwd();
|
|
39
|
-
if (givenUserInputs["--init"]) {
|
|
40
|
-
await (0, _init.init)(directory);
|
|
41
|
-
return;
|
|
42
|
-
}
|
|
43
|
-
const config = await (0, _loadConfig.loadConfig)(directory);
|
|
44
|
-
var _givenUserInputs_includedevdependencies, _givenUserInputs_devdependenciesonly;
|
|
45
|
-
const options = {
|
|
46
|
-
allowedLicenses: config.licenses,
|
|
47
|
-
allowedPackages: config.packages,
|
|
48
|
-
workingDirectory: directory,
|
|
49
|
-
includeDevDependencies: (_givenUserInputs_includedevdependencies = givenUserInputs["--include-dev-dependencies"]) != null ? _givenUserInputs_includedevdependencies : config.includeDevDependencies,
|
|
50
|
-
devDependenciesOnly: (_givenUserInputs_devdependenciesonly = givenUserInputs["--dev-dependencies-only"]) != null ? _givenUserInputs_devdependenciesonly : config.devDependenciesOnly
|
|
51
|
-
};
|
|
52
|
-
await (0, _licenseCop.checkLicenses)(options);
|
|
53
|
-
};
|
|
54
|
-
const parseUserInputs = (rawArgs)=>{
|
|
55
|
-
return (0, _arg.default)(_arguments.argumentsWithAliases, {
|
|
56
|
-
argv: rawArgs.slice(2)
|
|
57
|
-
});
|
|
58
|
-
};
|
|
59
|
-
const reportViolations = (violations)=>{
|
|
60
|
-
console.log("Issues:");
|
|
61
|
-
for (const violation of violations){
|
|
62
|
-
const { packageName , packageVersion , license } = violation;
|
|
63
|
-
console.log(`${packageName}@${packageVersion} - ${license}`);
|
|
64
|
-
}
|
|
6
|
+
const _logger = require("../logger");
|
|
7
|
+
const _init = require("./commands/init");
|
|
8
|
+
const _version = require("./commands/version");
|
|
9
|
+
const _main = require("./commands/main");
|
|
10
|
+
const main = async (args)=>{
|
|
11
|
+
_logger.default.enableLogging();
|
|
12
|
+
await program.parseAsync(args);
|
|
65
13
|
};
|
|
14
|
+
const program = _main.mainCommand.addCommand(_init.initCommand).addCommand(_version.versionCommand);
|
|
66
15
|
|
|
67
16
|
//# sourceMappingURL=index.js.map
|
package/src/lib/cli/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../../../../../packages/license-cop/src/lib/cli/index.ts"],"sourcesContent":["import
|
|
1
|
+
{"version":3,"sources":["../../../../../../packages/license-cop/src/lib/cli/index.ts"],"sourcesContent":["import logger from \"../logger\";\nimport { initCommand } from \"./commands/init\";\nimport { versionCommand } from \"./commands/version\";\nimport { mainCommand } from \"./commands/main\";\n\nexport const main = async (args: string[]): Promise<void> => {\n logger.enableLogging();\n await program.parseAsync(args);\n};\n\nconst program = mainCommand.addCommand(initCommand).addCommand(versionCommand);\n"],"names":["main","args","logger","enableLogging","program","parseAsync","mainCommand","addCommand","initCommand","versionCommand"],"mappings":";+BAKaA;;aAAAA;;wBALM;sBACS;yBACG;sBACH;AAErB,MAAMA,OAAO,OAAOC,OAAkC;IAC3DC,eAAM,CAACC,aAAa;IACpB,MAAMC,QAAQC,UAAU,CAACJ;AAC3B;AAEA,MAAMG,UAAUE,iBAAW,CAACC,UAAU,CAACC,iBAAW,EAAED,UAAU,CAACE,uBAAc"}
|
|
@@ -0,0 +1,34 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "reportFailure", {
|
|
3
|
+
enumerable: true,
|
|
4
|
+
get: ()=>reportFailure
|
|
5
|
+
});
|
|
6
|
+
const _logger = require("../logger");
|
|
7
|
+
const reportFailure = (result)=>{
|
|
8
|
+
const { noLicenses , forbiddenLicenses } = result;
|
|
9
|
+
_logger.default.log("Found the following issues...\n");
|
|
10
|
+
if (noLicenses.size > 0) {
|
|
11
|
+
logNoLicenseIssues(noLicenses);
|
|
12
|
+
}
|
|
13
|
+
if (forbiddenLicenses.size > 0) {
|
|
14
|
+
logForbiddenLicenseIssues(forbiddenLicenses);
|
|
15
|
+
}
|
|
16
|
+
};
|
|
17
|
+
const logNoLicenseIssues = (noLicenseResults)=>{
|
|
18
|
+
_logger.default.error("Packages with no license:");
|
|
19
|
+
for (const result of noLicenseResults.values()){
|
|
20
|
+
const { name , version } = result;
|
|
21
|
+
_logger.default.error(`${name}@${version}`);
|
|
22
|
+
}
|
|
23
|
+
_logger.default.error("");
|
|
24
|
+
};
|
|
25
|
+
const logForbiddenLicenseIssues = (forbiddenLicensesResults)=>{
|
|
26
|
+
_logger.default.error("Packages with forbidden licenses:");
|
|
27
|
+
for (const result of forbiddenLicensesResults.values()){
|
|
28
|
+
const { name , version , licenseIdentifiers , spdxExpression } = result;
|
|
29
|
+
const licenseDetails = licenseIdentifiers === spdxExpression ? licenseIdentifiers : `${licenseIdentifiers} from ${spdxExpression}`;
|
|
30
|
+
_logger.default.error(`${name}@${version} - ${licenseDetails}`);
|
|
31
|
+
}
|
|
32
|
+
};
|
|
33
|
+
|
|
34
|
+
//# sourceMappingURL=report-failure.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../../../../../../packages/license-cop/src/lib/cli/report-failure.ts"],"sourcesContent":["import logger from \"../logger\";\nimport { CheckLicensesResult, ForbiddenLicenseResult, NoLicenseResult } from \"../result\";\n\nexport const reportFailure = (result: CheckLicensesResult): void => {\n const { noLicenses, forbiddenLicenses } = result;\n\n logger.log(\"Found the following issues...\\n\");\n\n if (noLicenses.size > 0) {\n logNoLicenseIssues(noLicenses);\n }\n\n if (forbiddenLicenses.size > 0) {\n logForbiddenLicenseIssues(forbiddenLicenses);\n }\n};\n\nconst logNoLicenseIssues = (noLicenseResults: Set<NoLicenseResult>) => {\n logger.error(\"Packages with no license:\");\n\n for (const result of noLicenseResults.values()) {\n const { name, version } = result;\n logger.error(`${name}@${version}`);\n }\n\n logger.error(\"\");\n};\n\nconst logForbiddenLicenseIssues = (forbiddenLicensesResults: Set<ForbiddenLicenseResult>): void => {\n logger.error(\"Packages with forbidden licenses:\");\n\n for (const result of forbiddenLicensesResults.values()) {\n const { name, version, licenseIdentifiers, spdxExpression } = result;\n\n const licenseDetails =\n licenseIdentifiers === spdxExpression\n ? licenseIdentifiers\n : `${licenseIdentifiers} from ${spdxExpression}`;\n\n logger.error(`${name}@${version} - ${licenseDetails}`);\n }\n};\n"],"names":["reportFailure","result","noLicenses","forbiddenLicenses","logger","log","size","logNoLicenseIssues","logForbiddenLicenseIssues","noLicenseResults","error","values","name","version","forbiddenLicensesResults","licenseIdentifiers","spdxExpression","licenseDetails"],"mappings":";+BAGaA;;aAAAA;;wBAHM;AAGZ,MAAMA,gBAAgB,CAACC,SAAsC;IAClE,MAAM,EAAEC,WAAU,EAAEC,kBAAiB,EAAE,GAAGF;IAE1CG,eAAM,CAACC,GAAG,CAAC;IAEX,IAAIH,WAAWI,IAAI,GAAG,GAAG;QACvBC,mBAAmBL;IACrB,CAAC;IAED,IAAIC,kBAAkBG,IAAI,GAAG,GAAG;QAC9BE,0BAA0BL;IAC5B,CAAC;AACH;AAEA,MAAMI,qBAAqB,CAACE,mBAA2C;IACrEL,eAAM,CAACM,KAAK,CAAC;IAEb,KAAK,MAAMT,UAAUQ,iBAAiBE,MAAM,GAAI;QAC9C,MAAM,EAAEC,KAAI,EAAEC,QAAO,EAAE,GAAGZ;QAC1BG,eAAM,CAACM,KAAK,CAAC,CAAC,EAAEE,KAAK,CAAC,EAAEC,QAAQ,CAAC;IACnC;IAEAT,eAAM,CAACM,KAAK,CAAC;AACf;AAEA,MAAMF,4BAA4B,CAACM,2BAAgE;IACjGV,eAAM,CAACM,KAAK,CAAC;IAEb,KAAK,MAAMT,UAAUa,yBAAyBH,MAAM,GAAI;QACtD,MAAM,EAAEC,KAAI,EAAEC,QAAO,EAAEE,mBAAkB,EAAEC,eAAc,EAAE,GAAGf;QAE9D,MAAMgB,iBACJF,uBAAuBC,iBACnBD,qBACA,CAAC,EAAEA,mBAAmB,MAAM,EAAEC,eAAe,CAAC;QAEpDZ,eAAM,CAACM,KAAK,CAAC,CAAC,EAAEE,KAAK,CAAC,EAAEC,QAAQ,GAAG,EAAEI,eAAe,CAAC;IACvD;AACF"}
|
|
@@ -0,0 +1,20 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "reportSuccess", {
|
|
3
|
+
enumerable: true,
|
|
4
|
+
get: ()=>reportSuccess
|
|
5
|
+
});
|
|
6
|
+
const _logger = require("../logger");
|
|
7
|
+
const reportSuccess = (result)=>{
|
|
8
|
+
const { allowedPackages , allowedLicenses } = result;
|
|
9
|
+
_logger.default.log("\nDone! No issues found");
|
|
10
|
+
if (allowedPackages.size !== 0) {
|
|
11
|
+
_logger.default.log(`Found ${allowedPackages.size} allowed packages`);
|
|
12
|
+
}
|
|
13
|
+
if (allowedLicenses.size !== 0) {
|
|
14
|
+
_logger.default.log(`Found ${allowedLicenses.size} packages with allowed licenses`);
|
|
15
|
+
}
|
|
16
|
+
_logger.default.verbose("\nExiting with error code 0");
|
|
17
|
+
process.exitCode = 0;
|
|
18
|
+
};
|
|
19
|
+
|
|
20
|
+
//# sourceMappingURL=report-success.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../../../../../../packages/license-cop/src/lib/cli/report-success.ts"],"sourcesContent":["import logger from \"../logger\";\nimport { CheckLicensesResult } from \"../result\";\n\nexport const reportSuccess = (result: CheckLicensesResult): void => {\n const { allowedPackages, allowedLicenses } = result;\n\n logger.log(\"\\nDone! No issues found\");\n\n if (allowedPackages.size !== 0) {\n logger.log(`Found ${allowedPackages.size} allowed packages`);\n }\n\n if (allowedLicenses.size !== 0) {\n logger.log(`Found ${allowedLicenses.size} packages with allowed licenses`);\n }\n\n logger.verbose(\"\\nExiting with error code 0\");\n process.exitCode = 0;\n};\n"],"names":["reportSuccess","result","allowedPackages","allowedLicenses","logger","log","size","verbose","process","exitCode"],"mappings":";+BAGaA;;aAAAA;;wBAHM;AAGZ,MAAMA,gBAAgB,CAACC,SAAsC;IAClE,MAAM,EAAEC,gBAAe,EAAEC,gBAAe,EAAE,GAAGF;IAE7CG,eAAM,CAACC,GAAG,CAAC;IAEX,IAAIH,gBAAgBI,IAAI,KAAK,GAAG;QAC9BF,eAAM,CAACC,GAAG,CAAC,CAAC,MAAM,EAAEH,gBAAgBI,IAAI,CAAC,iBAAiB,CAAC;IAC7D,CAAC;IAED,IAAIH,gBAAgBG,IAAI,KAAK,GAAG;QAC9BF,eAAM,CAACC,GAAG,CAAC,CAAC,MAAM,EAAEF,gBAAgBG,IAAI,CAAC,+BAA+B,CAAC;IAC3E,CAAC;IAEDF,eAAM,CAACG,OAAO,CAAC;IACfC,QAAQC,QAAQ,GAAG;AACrB"}
|
|
@@ -0,0 +1,25 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "ConfigError", {
|
|
3
|
+
enumerable: true,
|
|
4
|
+
get: ()=>ConfigError
|
|
5
|
+
});
|
|
6
|
+
let ConfigError = class ConfigError extends Error {
|
|
7
|
+
static fromUnknown(e) {
|
|
8
|
+
const message = resolveMessage(e);
|
|
9
|
+
return new ConfigError(message);
|
|
10
|
+
}
|
|
11
|
+
constructor(message){
|
|
12
|
+
super(`Config error: ${message}`);
|
|
13
|
+
}
|
|
14
|
+
};
|
|
15
|
+
const resolveMessage = (e)=>{
|
|
16
|
+
if (e instanceof Error) {
|
|
17
|
+
return e.message;
|
|
18
|
+
}
|
|
19
|
+
if (typeof e === "string") {
|
|
20
|
+
return e;
|
|
21
|
+
}
|
|
22
|
+
return "Unknown error";
|
|
23
|
+
};
|
|
24
|
+
|
|
25
|
+
//# sourceMappingURL=config-error.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../../../../../../packages/license-cop/src/lib/config/config-error.ts"],"sourcesContent":["export class ConfigError extends Error {\n constructor(message: string) {\n super(`Config error: ${message}`);\n }\n\n static fromUnknown(e: unknown): ConfigError {\n const message = resolveMessage(e);\n return new ConfigError(message);\n }\n}\n\nconst resolveMessage = (e: unknown): string => {\n if (e instanceof Error) {\n return e.message;\n }\n\n if (typeof e === \"string\") {\n return e;\n }\n\n return \"Unknown error\";\n};\n"],"names":["ConfigError","Error","fromUnknown","e","message","resolveMessage","constructor"],"mappings":";+BAAaA;;aAAAA;;AAAN,IAAA,AAAMA,cAAN,MAAMA,oBAAoBC;IAK/B,OAAOC,YAAYC,CAAU,EAAe;QAC1C,MAAMC,UAAUC,eAAeF;QAC/B,OAAO,IAAIH,YAAYI;IACzB;IAPAE,YAAYF,OAAe,CAAE;QAC3B,KAAK,CAAC,CAAC,cAAc,EAAEA,QAAQ,CAAC;IAClC;AAMF;AAEA,MAAMC,iBAAiB,CAACF,IAAuB;IAC7C,IAAIA,aAAaF,OAAO;QACtB,OAAOE,EAAEC,OAAO;IAClB,CAAC;IAED,IAAI,OAAOD,MAAM,UAAU;QACzB,OAAOA;IACT,CAAC;IAED,OAAO;AACT"}
|
package/src/lib/config/config.js
CHANGED
|
@@ -1,12 +1,10 @@
|
|
|
1
1
|
"use strict";
|
|
2
|
-
Object.defineProperty(exports, "__esModule", {
|
|
3
|
-
value: true
|
|
4
|
-
});
|
|
5
2
|
Object.defineProperty(exports, "parseConfig", {
|
|
6
3
|
enumerable: true,
|
|
7
4
|
get: ()=>parseConfig
|
|
8
5
|
});
|
|
9
6
|
const _zod = require("zod");
|
|
7
|
+
const _configError = require("./config-error");
|
|
10
8
|
var _c_licenses, _c_packages, _c_includeDevDependencies, _c_devDependenciesOnly;
|
|
11
9
|
const configParser = _zod.z.object({
|
|
12
10
|
extends: _zod.z.string().optional(),
|
|
@@ -25,8 +23,7 @@ const configParser = _zod.z.object({
|
|
|
25
23
|
const parseConfig = (config)=>{
|
|
26
24
|
const parseResult = configParser.safeParse(config);
|
|
27
25
|
if (!parseResult.success) {
|
|
28
|
-
|
|
29
|
-
throw new Error(parseResult.error.message);
|
|
26
|
+
throw new _configError.ConfigError(parseResult.error.message);
|
|
30
27
|
}
|
|
31
28
|
return parseResult.data;
|
|
32
29
|
};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../../../../../packages/license-cop/src/lib/config/config.ts"],"sourcesContent":["import { z } from \"zod\";\n\nconst configParser = z\n .object({\n extends: z.string().optional(),\n licenses: z.array(z.string()).optional(),\n packages: z.array(z.string()).optional(),\n includeDevDependencies: z.boolean().optional(),\n devDependenciesOnly: z.boolean().optional(),\n directory: z.string().optional()\n })\n .transform(c => ({\n extends: c.extends,\n licenses: c.licenses ?? [],\n packages: c.packages ?? [],\n includeDevDependencies: c.includeDevDependencies ?? false,\n devDependenciesOnly: c.devDependenciesOnly ?? false\n }));\n\nexport type Config = z.infer<typeof configParser>;\n\nexport const parseConfig = (config: unknown): Config => {\n const parseResult = configParser.safeParse(config);\n\n if (!parseResult.success) {\n
|
|
1
|
+
{"version":3,"sources":["../../../../../../packages/license-cop/src/lib/config/config.ts"],"sourcesContent":["import { z } from \"zod\";\nimport { ConfigError } from \"./config-error\";\n\nconst configParser = z\n .object({\n extends: z.string().optional(),\n licenses: z.array(z.string()).optional(),\n packages: z.array(z.string()).optional(),\n includeDevDependencies: z.boolean().optional(),\n devDependenciesOnly: z.boolean().optional(),\n directory: z.string().optional()\n })\n .transform(c => ({\n extends: c.extends,\n licenses: c.licenses ?? [],\n packages: c.packages ?? [],\n includeDevDependencies: c.includeDevDependencies ?? false,\n devDependenciesOnly: c.devDependenciesOnly ?? false\n }));\n\nexport type Config = z.infer<typeof configParser>;\n\nexport const parseConfig = (config: unknown): Config => {\n const parseResult = configParser.safeParse(config);\n\n if (!parseResult.success) {\n throw new ConfigError(parseResult.error.message);\n }\n\n return parseResult.data;\n};\n"],"names":["parseConfig","c","configParser","z","object","extends","string","optional","licenses","array","packages","includeDevDependencies","boolean","devDependenciesOnly","directory","transform","config","parseResult","safeParse","success","ConfigError","error","message","data"],"mappings":";+BAsBaA;;aAAAA;;qBAtBK;6BACU;IAadC,aACAA,aACcA,2BACHA;AAdzB,MAAMC,eAAeC,MAAC,CACnBC,MAAM,CAAC;IACNC,SAASF,MAAC,CAACG,MAAM,GAAGC,QAAQ;IAC5BC,UAAUL,MAAC,CAACM,KAAK,CAACN,MAAC,CAACG,MAAM,IAAIC,QAAQ;IACtCG,UAAUP,MAAC,CAACM,KAAK,CAACN,MAAC,CAACG,MAAM,IAAIC,QAAQ;IACtCI,wBAAwBR,MAAC,CAACS,OAAO,GAAGL,QAAQ;IAC5CM,qBAAqBV,MAAC,CAACS,OAAO,GAAGL,QAAQ;IACzCO,WAAWX,MAAC,CAACG,MAAM,GAAGC,QAAQ;AAChC,GACCQ,SAAS,CAACd,CAAAA,IAAM,CAAA;QACfI,SAASJ,EAAEI,OAAO;QAClBG,UAAUP,CAAAA,cAAAA,EAAEO,QAAQ,YAAVP,cAAc,EAAE;QAC1BS,UAAUT,CAAAA,cAAAA,EAAES,QAAQ,YAAVT,cAAc,EAAE;QAC1BU,wBAAwBV,CAAAA,4BAAAA,EAAEU,sBAAsB,YAAxBV,4BAA4B,KAAK;QACzDY,qBAAqBZ,CAAAA,yBAAAA,EAAEY,mBAAmB,YAArBZ,yBAAyB,KAAK;IACrD,CAAA;AAIK,MAAMD,cAAc,CAACgB,SAA4B;IACtD,MAAMC,cAAcf,aAAagB,SAAS,CAACF;IAE3C,IAAI,CAACC,YAAYE,OAAO,EAAE;QACxB,MAAM,IAAIC,wBAAW,CAACH,YAAYI,KAAK,CAACC,OAAO,EAAE;IACnD,CAAC;IAED,OAAOL,YAAYM,IAAI;AACzB"}
|
|
@@ -1,12 +1,10 @@
|
|
|
1
1
|
"use strict";
|
|
2
|
-
Object.defineProperty(exports, "__esModule", {
|
|
3
|
-
value: true
|
|
4
|
-
});
|
|
5
2
|
Object.defineProperty(exports, "findConfig", {
|
|
6
3
|
enumerable: true,
|
|
7
4
|
get: ()=>findConfig
|
|
8
5
|
});
|
|
9
6
|
const _cosmiconfig = require("cosmiconfig");
|
|
7
|
+
const _configError = require("./config-error");
|
|
10
8
|
const _json5 = require("./parsers/json5");
|
|
11
9
|
// cspell:disable-next-line
|
|
12
10
|
const moduleNames = [
|
|
@@ -53,11 +51,15 @@ const findConfig = async (rootDir)=>{
|
|
|
53
51
|
}
|
|
54
52
|
};
|
|
55
53
|
const explorer = (0, _cosmiconfig.cosmiconfig)("licensecop", options);
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
|
|
54
|
+
try {
|
|
55
|
+
const result = await explorer.search(rootDir);
|
|
56
|
+
if (!(result == null ? void 0 : result.config)) {
|
|
57
|
+
throw new Error("No config file found");
|
|
58
|
+
}
|
|
59
|
+
return result.config;
|
|
60
|
+
} catch (e) {
|
|
61
|
+
throw _configError.ConfigError.fromUnknown(e);
|
|
59
62
|
}
|
|
60
|
-
return result.config;
|
|
61
63
|
};
|
|
62
64
|
|
|
63
65
|
//# sourceMappingURL=find-config.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../../../../../packages/license-cop/src/lib/config/find-config.ts"],"sourcesContent":["import { cosmiconfig, Options as CosmiconfigOptions, Loader } from \"cosmiconfig\";\nimport { json5Parse } from \"./parsers/json5\";\n\n// cspell:disable-next-line\nconst moduleNames = [\"licenses\", \"licences\", \"licensesrc\", \"licencesrc\"];\n\nconst generateSearchPlaces = (moduleName: string): string[] => [\n `.${moduleName}`,\n `.${moduleName}.json`,\n `.${moduleName}.jsonc`,\n `.${moduleName}.json5`,\n `.${moduleName}.yaml`,\n `.${moduleName}.yml`,\n `.${moduleName}.js`,\n `.${moduleName}.cjs`,\n `.config/${moduleName}`,\n `.config/${moduleName}.json`,\n `.config/${moduleName}.jsonc`,\n `.config/${moduleName}.json5`,\n `.config/${moduleName}.yaml`,\n `.config/${moduleName}.yml`,\n `.config/${moduleName}.js`,\n `.config/${moduleName}.cjs`,\n `${moduleName}.config.js`,\n `${moduleName}.config.cjs`\n];\n\nconst searchPlaces: string[] = [\"package.json\"];\n\nfor (const moduleName of moduleNames) {\n searchPlaces.push(...generateSearchPlaces(moduleName));\n}\n\nconst json5Loader: Loader = (_filepath, content) => Promise.resolve(json5Parse(content));\n\nexport const findConfig = async (rootDir: string): Promise<unknown> => {\n const options: CosmiconfigOptions = {\n stopDir: rootDir,\n searchPlaces,\n loaders: {\n \".json\": json5Loader,\n \".jsonc\": json5Loader,\n \".json5\": json5Loader\n }\n };\n\n const explorer = cosmiconfig(\"licensecop\", options);\n\n const result = await explorer.search(rootDir);\n\n
|
|
1
|
+
{"version":3,"sources":["../../../../../../packages/license-cop/src/lib/config/find-config.ts"],"sourcesContent":["import { cosmiconfig, Options as CosmiconfigOptions, Loader } from \"cosmiconfig\";\nimport { ConfigError } from \"./config-error\";\nimport { json5Parse } from \"./parsers/json5\";\n\n// cspell:disable-next-line\nconst moduleNames = [\"licenses\", \"licences\", \"licensesrc\", \"licencesrc\"];\n\nconst generateSearchPlaces = (moduleName: string): string[] => [\n `.${moduleName}`,\n `.${moduleName}.json`,\n `.${moduleName}.jsonc`,\n `.${moduleName}.json5`,\n `.${moduleName}.yaml`,\n `.${moduleName}.yml`,\n `.${moduleName}.js`,\n `.${moduleName}.cjs`,\n `.config/${moduleName}`,\n `.config/${moduleName}.json`,\n `.config/${moduleName}.jsonc`,\n `.config/${moduleName}.json5`,\n `.config/${moduleName}.yaml`,\n `.config/${moduleName}.yml`,\n `.config/${moduleName}.js`,\n `.config/${moduleName}.cjs`,\n `${moduleName}.config.js`,\n `${moduleName}.config.cjs`\n];\n\nconst searchPlaces: string[] = [\"package.json\"];\n\nfor (const moduleName of moduleNames) {\n searchPlaces.push(...generateSearchPlaces(moduleName));\n}\n\nconst json5Loader: Loader = (_filepath, content) => Promise.resolve(json5Parse(content));\n\nexport const findConfig = async (rootDir: string): Promise<unknown> => {\n const options: CosmiconfigOptions = {\n stopDir: rootDir,\n searchPlaces,\n loaders: {\n \".json\": json5Loader,\n \".jsonc\": json5Loader,\n \".json5\": json5Loader\n }\n };\n\n const explorer = cosmiconfig(\"licensecop\", options);\n\n try {\n const result = await explorer.search(rootDir);\n\n if (!result?.config) {\n throw new Error(\"No config file found\");\n }\n\n return result.config;\n } catch (e) {\n throw ConfigError.fromUnknown(e);\n }\n};\n"],"names":["findConfig","moduleNames","generateSearchPlaces","moduleName","searchPlaces","push","json5Loader","_filepath","content","Promise","resolve","json5Parse","rootDir","options","stopDir","loaders","explorer","cosmiconfig","result","search","config","Error","e","ConfigError","fromUnknown"],"mappings":";+BAoCaA;;aAAAA;;6BApCsD;6BACvC;uBACD;AAE3B,2BAA2B;AAC3B,MAAMC,cAAc;IAAC;IAAY;IAAY;IAAc;CAAa;AAExE,MAAMC,uBAAuB,CAACC,aAAiC;QAC7D,CAAC,CAAC,EAAEA,WAAW,CAAC;QAChB,CAAC,CAAC,EAAEA,WAAW,KAAK,CAAC;QACrB,CAAC,CAAC,EAAEA,WAAW,MAAM,CAAC;QACtB,CAAC,CAAC,EAAEA,WAAW,MAAM,CAAC;QACtB,CAAC,CAAC,EAAEA,WAAW,KAAK,CAAC;QACrB,CAAC,CAAC,EAAEA,WAAW,IAAI,CAAC;QACpB,CAAC,CAAC,EAAEA,WAAW,GAAG,CAAC;QACnB,CAAC,CAAC,EAAEA,WAAW,IAAI,CAAC;QACpB,CAAC,QAAQ,EAAEA,WAAW,CAAC;QACvB,CAAC,QAAQ,EAAEA,WAAW,KAAK,CAAC;QAC5B,CAAC,QAAQ,EAAEA,WAAW,MAAM,CAAC;QAC7B,CAAC,QAAQ,EAAEA,WAAW,MAAM,CAAC;QAC7B,CAAC,QAAQ,EAAEA,WAAW,KAAK,CAAC;QAC5B,CAAC,QAAQ,EAAEA,WAAW,IAAI,CAAC;QAC3B,CAAC,QAAQ,EAAEA,WAAW,GAAG,CAAC;QAC1B,CAAC,QAAQ,EAAEA,WAAW,IAAI,CAAC;QAC3B,CAAC,EAAEA,WAAW,UAAU,CAAC;QACzB,CAAC,EAAEA,WAAW,WAAW,CAAC;KAC3B;AAED,MAAMC,eAAyB;IAAC;CAAe;AAE/C,KAAK,MAAMD,cAAcF,YAAa;IACpCG,aAAaC,IAAI,IAAIH,qBAAqBC;AAC5C;AAEA,MAAMG,cAAsB,CAACC,WAAWC,UAAYC,QAAQC,OAAO,CAACC,IAAAA,iBAAU,EAACH;AAExE,MAAMR,aAAa,OAAOY,UAAsC;IACrE,MAAMC,UAA8B;QAClCC,SAASF;QACTR;QACAW,SAAS;YACP,SAAST;YACT,UAAUA;YACV,UAAUA;QACZ;IACF;IAEA,MAAMU,WAAWC,IAAAA,wBAAW,EAAC,cAAcJ;IAE3C,IAAI;QACF,MAAMK,SAAS,MAAMF,SAASG,MAAM,CAACP;QAErC,IAAI,CAACM,CAAAA,iBAAAA,KAAAA,IAAAA,OAAQE,MAAM,AAAD,GAAG;YACnB,MAAM,IAAIC,MAAM,wBAAwB;QAC1C,CAAC;QAED,OAAOH,OAAOE,MAAM;IACtB,EAAE,OAAOE,GAAG;QACV,MAAMC,wBAAW,CAACC,WAAW,CAACF,GAAG;IACnC;AACF"}
|
|
@@ -1,23 +1,21 @@
|
|
|
1
1
|
"use strict";
|
|
2
|
-
Object.defineProperty(exports, "__esModule", {
|
|
3
|
-
value: true
|
|
4
|
-
});
|
|
5
2
|
Object.defineProperty(exports, "loadConfig", {
|
|
6
3
|
enumerable: true,
|
|
7
4
|
get: ()=>loadConfig
|
|
8
5
|
});
|
|
9
|
-
const _interopRequireDefault = require("@swc/helpers/lib/_interop_require_default.js").default;
|
|
10
6
|
const _config = require("./config");
|
|
11
7
|
const _loadParentConfig = require("./load-parent-config");
|
|
12
|
-
const _deepmerge =
|
|
8
|
+
const _deepmerge = require("deepmerge");
|
|
13
9
|
const _findConfig = require("./find-config");
|
|
10
|
+
const _logger = require("../logger");
|
|
14
11
|
const loadConfig = async (rootDir)=>{
|
|
15
12
|
const foundConfig = await (0, _findConfig.findConfig)(rootDir);
|
|
16
13
|
let config = (0, _config.parseConfig)(foundConfig);
|
|
17
14
|
while(config.extends){
|
|
15
|
+
_logger.default.verbose(`Extending config with ${config.extends}`);
|
|
18
16
|
const loadedParentConfig = await (0, _loadParentConfig.loadParentConfig)(config.extends, rootDir);
|
|
19
17
|
const parsedParentConfig = (0, _config.parseConfig)(loadedParentConfig);
|
|
20
|
-
config =
|
|
18
|
+
config = _deepmerge(parsedParentConfig, config);
|
|
21
19
|
config.extends = parsedParentConfig.extends;
|
|
22
20
|
}
|
|
23
21
|
return config;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../../../../../packages/license-cop/src/lib/config/load-config.ts"],"sourcesContent":["import { parseConfig } from \"./config\";\nimport { loadParentConfig } from \"./load-parent-config\";\nimport deepMerge from \"deepmerge\";\nimport { findConfig } from \"./find-config\";\n\nexport const loadConfig = async (rootDir: string) => {\n const foundConfig = await findConfig(rootDir);\n\n let config = parseConfig(foundConfig);\n\n while (config.extends) {\n const loadedParentConfig = await loadParentConfig(config.extends, rootDir);\n const parsedParentConfig = parseConfig(loadedParentConfig);\n\n config = deepMerge(parsedParentConfig, config);\n config.extends = parsedParentConfig.extends;\n }\n\n return config;\n};\n"],"names":["loadConfig","rootDir","foundConfig","findConfig","config","parseConfig","extends","loadedParentConfig","loadParentConfig","parsedParentConfig","deepMerge"],"mappings":"
|
|
1
|
+
{"version":3,"sources":["../../../../../../packages/license-cop/src/lib/config/load-config.ts"],"sourcesContent":["import { parseConfig } from \"./config\";\nimport { loadParentConfig } from \"./load-parent-config\";\nimport * as deepMerge from \"deepmerge\";\nimport { findConfig } from \"./find-config\";\nimport logger from \"../logger\";\n\nexport const loadConfig = async (rootDir: string) => {\n const foundConfig = await findConfig(rootDir);\n\n let config = parseConfig(foundConfig);\n\n while (config.extends) {\n logger.verbose(`Extending config with ${config.extends}`);\n const loadedParentConfig = await loadParentConfig(config.extends, rootDir);\n const parsedParentConfig = parseConfig(loadedParentConfig);\n\n config = deepMerge(parsedParentConfig, config);\n config.extends = parsedParentConfig.extends;\n }\n\n return config;\n};\n"],"names":["loadConfig","rootDir","foundConfig","findConfig","config","parseConfig","extends","logger","verbose","loadedParentConfig","loadParentConfig","parsedParentConfig","deepMerge"],"mappings":";+BAMaA;;aAAAA;;wBANe;kCACK;2BACN;4BACA;wBACR;AAEZ,MAAMA,aAAa,OAAOC,UAAoB;IACnD,MAAMC,cAAc,MAAMC,IAAAA,sBAAU,EAACF;IAErC,IAAIG,SAASC,IAAAA,mBAAW,EAACH;IAEzB,MAAOE,OAAOE,OAAO,CAAE;QACrBC,eAAM,CAACC,OAAO,CAAC,CAAC,sBAAsB,EAAEJ,OAAOE,OAAO,CAAC,CAAC;QACxD,MAAMG,qBAAqB,MAAMC,IAAAA,kCAAgB,EAACN,OAAOE,OAAO,EAAEL;QAClE,MAAMU,qBAAqBN,IAAAA,mBAAW,EAACI;QAEvCL,SAASQ,WAAUD,oBAAoBP;QACvCA,OAAOE,OAAO,GAAGK,mBAAmBL,OAAO;IAC7C;IAEA,OAAOF;AACT"}
|