@volumegraphics/license-info-collector 2.0.0 → 3.0.3

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/lib/index.d.ts CHANGED
@@ -1,3 +1,3 @@
1
- export * from './package_infos';
2
- export * from './package_overrides';
3
- export * from './section';
1
+ export * from './package_infos';
2
+ export * from './package_overrides';
3
+ export * from './section';
package/lib/index.js CHANGED
@@ -1,8 +1,19 @@
1
- "use strict";
2
- function __export(m) {
3
- for (var p in m) if (!exports.hasOwnProperty(p)) exports[p] = m[p];
4
- }
5
- Object.defineProperty(exports, "__esModule", { value: true });
6
- __export(require("./package_infos"));
7
- __export(require("./package_overrides"));
8
- __export(require("./section"));
1
+ "use strict";
2
+ var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
3
+ if (k2 === undefined) k2 = k;
4
+ var desc = Object.getOwnPropertyDescriptor(m, k);
5
+ if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
6
+ desc = { enumerable: true, get: function() { return m[k]; } };
7
+ }
8
+ Object.defineProperty(o, k2, desc);
9
+ }) : (function(o, m, k, k2) {
10
+ if (k2 === undefined) k2 = k;
11
+ o[k2] = m[k];
12
+ }));
13
+ var __exportStar = (this && this.__exportStar) || function(m, exports) {
14
+ for (var p in m) if (p !== "default" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);
15
+ };
16
+ Object.defineProperty(exports, "__esModule", { value: true });
17
+ __exportStar(require("./package_infos"), exports);
18
+ __exportStar(require("./package_overrides"), exports);
19
+ __exportStar(require("./section"), exports);
@@ -1,47 +1,57 @@
1
- export interface Author {
2
- name?: string;
3
- email?: string;
4
- url?: string;
5
- }
6
- export interface Repository {
7
- type: string;
8
- url: string;
9
- }
10
- export interface PackageContent {
11
- name: string;
12
- version: string;
13
- packageJson: string[];
14
- contributors?: (string | Author)[];
15
- author?: string | Author;
16
- description?: string;
17
- repository?: string | Repository;
18
- homepage?: string;
19
- license?: string;
20
- }
21
- export interface Dependency {
22
- [index: string]: string;
23
- }
24
- export interface RawPackageDependencies {
25
- dependencies?: Dependency;
26
- devDependencies?: Dependency;
27
- optionalDependencies?: Dependency;
28
- }
29
- export interface PackageDependencies {
30
- packageDependencies: PackageContent[];
31
- packageDevDependencies: PackageContent[];
32
- packageOptionalDependencies: PackageContent[];
33
- }
34
- export interface InvalidPackageContent {
35
- copyright: PackageContent[];
36
- license: PackageContent[];
37
- }
38
- export declare function collectPackageInfos(productPackageJson: string, nodeModulePaths: string[], disableNpmVersionCheck: boolean): (PackageContent & PackageDependencies & RawPackageDependencies)[];
39
- export declare type LicenseName = string;
40
- export declare function findInvalidPackageContent(packageContents: (PackageContent & PackageDependencies)[], allowedLicenses: LicenseName[], evaluateCopyrightInfo: (content: PackageContent) => boolean): InvalidPackageContent;
41
- export interface MissingPackages {
42
- packageReference: PackageContent & PackageDependencies & RawPackageDependencies;
43
- missingDependencies: Dependency;
44
- missingDevDependencies: Dependency;
45
- missingOptionalDependencies: Dependency;
46
- }
47
- export declare function findMissingPackages(contents: (PackageContent & PackageDependencies & RawPackageDependencies)[], disableNpmVersionCheck: boolean): MissingPackages[];
1
+ export interface Author {
2
+ name?: string;
3
+ email?: string;
4
+ url?: string;
5
+ }
6
+ export interface Repository {
7
+ type: string;
8
+ url: string;
9
+ }
10
+ export interface PackageContent {
11
+ name: string;
12
+ version: string;
13
+ packageJson: string[];
14
+ contributors?: (string | Author)[];
15
+ author?: string | Author;
16
+ description?: string;
17
+ repository?: string | Repository;
18
+ homepage?: string;
19
+ license?: string;
20
+ }
21
+ export interface Dependency {
22
+ [index: string]: string;
23
+ }
24
+ export interface RawPackageDependencies {
25
+ dependencies?: Dependency;
26
+ devDependencies?: Dependency;
27
+ optionalDependencies?: Dependency;
28
+ }
29
+ export interface PackageDependencies {
30
+ packageDependencies: PackageContent[];
31
+ packageDevDependencies: PackageContent[];
32
+ packageOptionalDependencies: PackageContent[];
33
+ }
34
+ export interface InvalidPackageContent {
35
+ copyright: PackageContent[];
36
+ license: PackageContent[];
37
+ }
38
+ export type ContentAndRawDependencies = PackageContent & RawPackageDependencies;
39
+ export type CollectPackageError = {
40
+ packageFilePath: string;
41
+ };
42
+ export type CollectPackageInfoResult = {
43
+ result: (PackageContent & PackageDependencies & RawPackageDependencies)[];
44
+ invalidPackages: CollectPackageError[];
45
+ };
46
+ export declare function isCollectPackageError(object: ContentAndRawDependencies | CollectPackageError): object is CollectPackageError;
47
+ export declare function isCollectRawDependencies(object: ContentAndRawDependencies | CollectPackageError): object is ContentAndRawDependencies;
48
+ export declare function collectPackageInfos(productPackageJson: string, nodeModulePaths: string[], disableNpmVersionCheck: boolean): CollectPackageInfoResult;
49
+ export type LicenseName = string;
50
+ export declare function findInvalidPackageContent(packageContents: (PackageContent & PackageDependencies)[], allowedLicenses: LicenseName[], evaluateCopyrightInfo: (content: PackageContent) => boolean): InvalidPackageContent;
51
+ export interface MissingPackages {
52
+ packageReference: PackageContent & PackageDependencies & RawPackageDependencies;
53
+ missingDependencies: Dependency;
54
+ missingDevDependencies: Dependency;
55
+ missingOptionalDependencies: Dependency;
56
+ }
57
+ export declare function findMissingPackages(contents: (PackageContent & PackageDependencies & RawPackageDependencies)[], disableNpmVersionCheck: boolean): MissingPackages[];
@@ -1,180 +1,208 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- const path = require("path");
4
- const fs = require("fs");
5
- const semver = require("semver");
6
- function isSamePackageContent(left, right) {
7
- return left.name === right.name && left.version === right.version;
8
- }
9
- function groupSameContents(contents) {
10
- let uniques = [];
11
- contents.forEach((content) => {
12
- let foundUniqueItem = uniques.find((uniqueItem) => {
13
- return content !== uniqueItem && isSamePackageContent(content, uniqueItem);
14
- });
15
- if (foundUniqueItem === undefined) {
16
- uniques.push(content);
17
- return;
18
- }
19
- foundUniqueItem.packageJson = foundUniqueItem.packageJson.concat(content.packageJson);
20
- });
21
- return uniques;
22
- }
23
- function getPackageFileFromDirectory(dir) {
24
- let files = [];
25
- const directoryItems = fs.readdirSync(dir);
26
- for (let directoryItem of directoryItems) {
27
- const absItem = path.join(dir, directoryItem);
28
- if (fs.statSync(absItem).isDirectory()) {
29
- files = files.concat(getPackageFileFromDirectory(absItem));
30
- }
31
- else {
32
- if (directoryItem !== "package.json") {
33
- continue;
34
- }
35
- files.push(absItem);
36
- }
37
- }
38
- return files;
39
- }
40
- function getPackageFiles(nodeModulePaths) {
41
- const paths = [];
42
- for (const nodeModulesPath of nodeModulePaths) {
43
- paths.push(...getPackageFileFromDirectory(nodeModulesPath));
44
- }
45
- return paths;
46
- }
47
- function resolve(dependencies, contents, disableNpmVersionCheck) {
48
- let result = {
49
- foundPackages: [],
50
- missing: {}
51
- };
52
- for (let packageName in dependencies) {
53
- const versionSemanticString = dependencies[packageName];
54
- const referencedLib = contents.find((pack) => {
55
- if (pack.name !== packageName)
56
- return false;
57
- if (pack.version === versionSemanticString)
58
- return true;
59
- if (disableNpmVersionCheck)
60
- return false;
61
- try {
62
- return semver.satisfies(pack.version, versionSemanticString);
63
- }
64
- catch (e) {
65
- return false;
66
- }
67
- });
68
- if (referencedLib === undefined) {
69
- result.missing[packageName] = dependencies[packageName];
70
- }
71
- else {
72
- result.foundPackages.push(referencedLib);
73
- }
74
- }
75
- return result;
76
- }
77
- ;
78
- function resolveRawDependencies(contents, disableNpmVersionCheck) {
79
- return contents.map((content) => {
80
- const resolvedDependencies = {
81
- packageDependencies: resolve(content.dependencies, contents, disableNpmVersionCheck).foundPackages,
82
- packageDevDependencies: resolve(content.devDependencies, contents, disableNpmVersionCheck).foundPackages,
83
- packageOptionalDependencies: resolve(content.optionalDependencies, contents, disableNpmVersionCheck).foundPackages
84
- };
85
- return Object.assign(content, resolvedDependencies);
86
- });
87
- }
88
- function removeUnreferencedContents(contents, targetPackage) {
89
- return contents.filter((content) => {
90
- if (content === targetPackage) {
91
- return true;
92
- }
93
- for (let c of contents) {
94
- if (c === content)
95
- continue;
96
- if (c.packageDependencies.includes(content) || c.packageDevDependencies.includes(content) || c.packageOptionalDependencies.includes(content))
97
- return true;
98
- }
99
- return false;
100
- });
101
- }
102
- function collectPackageInfos(productPackageJson, nodeModulePaths, disableNpmVersionCheck) {
103
- const transformDeprecatedContent = (content, deprecatedContent) => {
104
- if (content.license && typeof content.license === "string") {
105
- return;
106
- }
107
- if (deprecatedContent.license !== undefined && deprecatedContent.license.type !== undefined) {
108
- if (!deprecatedContent.licenses)
109
- deprecatedContent.licenses = [];
110
- deprecatedContent.licenses.push(deprecatedContent.license);
111
- }
112
- if (!deprecatedContent.licenses) {
113
- return;
114
- }
115
- const types = [];
116
- for (let license of deprecatedContent.licenses) {
117
- if (!license.type)
118
- continue;
119
- types.push(license.type);
120
- }
121
- if (types.length > 1) {
122
- content.license = "(" + types.join(" OR ") + ")";
123
- return;
124
- }
125
- if (types.length === 1) {
126
- content.license = types[0];
127
- }
128
- };
129
- const createPackageContent = (packageFilePath) => {
130
- const fileContents = fs.readFileSync(packageFilePath).toString();
131
- const contents = JSON.parse(fileContents);
132
- const packageContent = contents;
133
- packageContent.packageJson = [packageFilePath];
134
- transformDeprecatedContent(packageContent, contents);
135
- return packageContent;
136
- };
137
- let contents = getPackageFiles(nodeModulePaths).map(createPackageContent);
138
- contents = groupSameContents(contents);
139
- contents.push(createPackageContent(productPackageJson));
140
- const resolvedContents = resolveRawDependencies(contents, disableNpmVersionCheck);
141
- const referencedContents = removeUnreferencedContents(resolvedContents, resolvedContents[resolvedContents.length - 1]);
142
- return referencedContents;
143
- }
144
- exports.collectPackageInfos = collectPackageInfos;
145
- function findInvalidPackageContent(packageContents, allowedLicenses, evaluateCopyrightInfo) {
146
- const invalid = {
147
- copyright: [],
148
- license: []
149
- };
150
- for (let content of packageContents) {
151
- if (!allowedLicenses.find((name) => { return name === content.license; })) {
152
- invalid.license.push(content);
153
- }
154
- if (evaluateCopyrightInfo(content) === false) {
155
- invalid.copyright.push(content);
156
- }
157
- }
158
- return invalid;
159
- }
160
- exports.findInvalidPackageContent = findInvalidPackageContent;
161
- function findMissingPackages(contents, disableNpmVersionCheck) {
162
- const missing = [];
163
- for (const content of contents) {
164
- const missingDependencies = resolve(content.dependencies, contents, disableNpmVersionCheck).missing;
165
- const missingDevDependencies = resolve(content.devDependencies, contents, disableNpmVersionCheck).missing;
166
- const missingOptionalDependencies = resolve(content.optionalDependencies, contents, disableNpmVersionCheck).missing;
167
- if (Object.keys(missingDependencies).length !== 0
168
- || Object.keys(missingDevDependencies).length !== 0
169
- || Object.keys(missingOptionalDependencies).length !== 0) {
170
- missing.push({
171
- packageReference: content,
172
- missingDependencies: missingDependencies,
173
- missingDevDependencies: missingDevDependencies,
174
- missingOptionalDependencies: missingOptionalDependencies
175
- });
176
- }
177
- }
178
- return missing;
179
- }
180
- exports.findMissingPackages = findMissingPackages;
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.findMissingPackages = exports.findInvalidPackageContent = exports.collectPackageInfos = exports.isCollectRawDependencies = exports.isCollectPackageError = void 0;
4
+ const path = require("path");
5
+ const fs = require("fs");
6
+ const semver = require("semver");
7
+ function isCollectPackageError(object) {
8
+ return object.packageFilePath !== undefined;
9
+ }
10
+ exports.isCollectPackageError = isCollectPackageError;
11
+ function isCollectRawDependencies(object) {
12
+ return !isCollectPackageError(object);
13
+ }
14
+ exports.isCollectRawDependencies = isCollectRawDependencies;
15
+ function isSamePackageContent(left, right) {
16
+ return left.name === right.name && left.version === right.version;
17
+ }
18
+ function groupSameContents(contents) {
19
+ let uniques = [];
20
+ contents.forEach((content) => {
21
+ let foundUniqueItem = uniques.find((uniqueItem) => {
22
+ return content !== uniqueItem && isSamePackageContent(content, uniqueItem);
23
+ });
24
+ if (foundUniqueItem === undefined) {
25
+ uniques.push(content);
26
+ return;
27
+ }
28
+ foundUniqueItem.packageJson = foundUniqueItem.packageJson.concat(content.packageJson);
29
+ });
30
+ return uniques;
31
+ }
32
+ function getPackageFileFromDirectory(dir) {
33
+ let files = [];
34
+ const directoryItems = fs.readdirSync(dir);
35
+ for (let directoryItem of directoryItems) {
36
+ const absItem = path.join(dir, directoryItem);
37
+ if (fs.statSync(absItem).isDirectory()) {
38
+ files = files.concat(getPackageFileFromDirectory(absItem));
39
+ }
40
+ else {
41
+ if (directoryItem !== "package.json") {
42
+ continue;
43
+ }
44
+ files.push(absItem);
45
+ }
46
+ }
47
+ return files;
48
+ }
49
+ function getPackageFiles(nodeModulePaths) {
50
+ const paths = [];
51
+ for (const nodeModulesPath of nodeModulePaths) {
52
+ paths.push(...getPackageFileFromDirectory(nodeModulesPath));
53
+ }
54
+ return paths;
55
+ }
56
+ function resolve(dependencies, contents, disableNpmVersionCheck) {
57
+ let result = {
58
+ foundPackages: [],
59
+ missing: {}
60
+ };
61
+ for (let packageName in dependencies) {
62
+ const versionSemanticString = dependencies[packageName];
63
+ const referencedLib = contents.find((pack) => {
64
+ if (pack.name !== packageName)
65
+ return false;
66
+ if (pack.version === versionSemanticString)
67
+ return true;
68
+ if (disableNpmVersionCheck)
69
+ return false;
70
+ try {
71
+ return semver.satisfies(pack.version, versionSemanticString);
72
+ }
73
+ catch (e) {
74
+ return false;
75
+ }
76
+ });
77
+ if (referencedLib === undefined) {
78
+ result.missing[packageName] = dependencies[packageName];
79
+ }
80
+ else {
81
+ result.foundPackages.push(referencedLib);
82
+ }
83
+ }
84
+ return result;
85
+ }
86
+ ;
87
+ function resolveRawDependencies(contents, disableNpmVersionCheck) {
88
+ return contents.map((content) => {
89
+ const resolvedDependencies = {
90
+ packageDependencies: resolve(content.dependencies, contents, disableNpmVersionCheck).foundPackages,
91
+ packageDevDependencies: resolve(content.devDependencies, contents, disableNpmVersionCheck).foundPackages,
92
+ packageOptionalDependencies: resolve(content.optionalDependencies, contents, disableNpmVersionCheck).foundPackages
93
+ };
94
+ return Object.assign(content, resolvedDependencies);
95
+ });
96
+ }
97
+ function removeUnreferencedContents(contents, targetPackage) {
98
+ return contents.filter((content) => {
99
+ if (content === targetPackage) {
100
+ return true;
101
+ }
102
+ for (let c of contents) {
103
+ if (c === content)
104
+ continue;
105
+ if (c.packageDependencies.includes(content) || c.packageDevDependencies.includes(content) || c.packageOptionalDependencies.includes(content))
106
+ return true;
107
+ }
108
+ return false;
109
+ });
110
+ }
111
+ function collectPackageInfos(productPackageJson, nodeModulePaths, disableNpmVersionCheck) {
112
+ const transformDeprecatedContent = (content, deprecatedContent) => {
113
+ if (content.license && typeof content.license === "string") {
114
+ return;
115
+ }
116
+ if (deprecatedContent.license !== undefined && deprecatedContent.license.type !== undefined) {
117
+ if (!deprecatedContent.licenses)
118
+ deprecatedContent.licenses = [];
119
+ deprecatedContent.licenses.push(deprecatedContent.license);
120
+ }
121
+ if (!deprecatedContent.licenses) {
122
+ return;
123
+ }
124
+ const types = [];
125
+ for (let license of deprecatedContent.licenses) {
126
+ if (!license.type)
127
+ continue;
128
+ types.push(license.type);
129
+ }
130
+ if (types.length > 1) {
131
+ content.license = "(" + types.join(" OR ") + ")";
132
+ return;
133
+ }
134
+ if (types.length === 1) {
135
+ content.license = types[0];
136
+ }
137
+ };
138
+ const parseFileContents = (packageFilePath) => {
139
+ const fileContents = fs.readFileSync(packageFilePath).toString();
140
+ try {
141
+ return JSON.parse(fileContents);
142
+ }
143
+ catch (e) {
144
+ return {
145
+ packageFilePath
146
+ };
147
+ }
148
+ };
149
+ const createPackageContent = (packageFilePath) => {
150
+ const contents = parseFileContents(packageFilePath);
151
+ if (isCollectPackageError(contents))
152
+ return contents;
153
+ contents.packageJson = [packageFilePath];
154
+ transformDeprecatedContent(contents, contents);
155
+ return contents;
156
+ };
157
+ const contentsAndErrors = getPackageFiles(nodeModulePaths).map(createPackageContent);
158
+ const productContentOrError = createPackageContent(productPackageJson);
159
+ let contents = contentsAndErrors.filter(isCollectRawDependencies);
160
+ contents = groupSameContents(contents);
161
+ const invalidPackages = contentsAndErrors.filter(isCollectPackageError);
162
+ isCollectPackageError(productContentOrError)
163
+ ? invalidPackages.push(productContentOrError)
164
+ : contents.push(productContentOrError);
165
+ const resolvedContents = resolveRawDependencies(contents, disableNpmVersionCheck);
166
+ const result = removeUnreferencedContents(resolvedContents, resolvedContents[resolvedContents.length - 1]);
167
+ return {
168
+ result,
169
+ invalidPackages
170
+ };
171
+ }
172
+ exports.collectPackageInfos = collectPackageInfos;
173
+ function findInvalidPackageContent(packageContents, allowedLicenses, evaluateCopyrightInfo) {
174
+ const invalid = {
175
+ copyright: [],
176
+ license: []
177
+ };
178
+ for (let content of packageContents) {
179
+ if (!allowedLicenses.find((name) => { return name === content.license; })) {
180
+ invalid.license.push(content);
181
+ }
182
+ if (evaluateCopyrightInfo(content) === false) {
183
+ invalid.copyright.push(content);
184
+ }
185
+ }
186
+ return invalid;
187
+ }
188
+ exports.findInvalidPackageContent = findInvalidPackageContent;
189
+ function findMissingPackages(contents, disableNpmVersionCheck) {
190
+ const missing = [];
191
+ for (const content of contents) {
192
+ const missingDependencies = resolve(content.dependencies, contents, disableNpmVersionCheck).missing;
193
+ const missingDevDependencies = resolve(content.devDependencies, contents, disableNpmVersionCheck).missing;
194
+ const missingOptionalDependencies = resolve(content.optionalDependencies, contents, disableNpmVersionCheck).missing;
195
+ if (Object.keys(missingDependencies).length !== 0
196
+ || Object.keys(missingDevDependencies).length !== 0
197
+ || Object.keys(missingOptionalDependencies).length !== 0) {
198
+ missing.push({
199
+ packageReference: content,
200
+ missingDependencies: missingDependencies,
201
+ missingDevDependencies: missingDevDependencies,
202
+ missingOptionalDependencies: missingOptionalDependencies
203
+ });
204
+ }
205
+ }
206
+ return missing;
207
+ }
208
+ exports.findMissingPackages = findMissingPackages;
@@ -1,13 +1,13 @@
1
- import { PackageContent } from './package_infos';
2
- export interface Override {
3
- name: string;
4
- version: string;
5
- new: string;
6
- comment: string;
7
- }
8
- export interface Overrides {
9
- homepage: Override[];
10
- license: Override[];
11
- }
12
- export declare function applyOverrides(packages: PackageContent[], overrides: Overrides): void;
13
- export declare function findUnusedOverrides(packages: PackageContent[], overrides: Overrides): Overrides;
1
+ import { PackageContent } from './package_infos';
2
+ export interface Override {
3
+ name: string;
4
+ version: string;
5
+ new: string;
6
+ comment: string;
7
+ }
8
+ export interface Overrides {
9
+ homepage: Override[];
10
+ license: Override[];
11
+ }
12
+ export declare function applyOverrides(packages: PackageContent[], overrides: Overrides): void;
13
+ export declare function findUnusedOverrides(packages: PackageContent[], overrides: Overrides): Overrides;
@@ -1,57 +1,58 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- var OverrideSection;
4
- (function (OverrideSection) {
5
- OverrideSection[OverrideSection["Homepage"] = 0] = "Homepage";
6
- OverrideSection[OverrideSection["License"] = 1] = "License";
7
- })(OverrideSection || (OverrideSection = {}));
8
- function findOverrides(packages, overrides, overrideMatch) {
9
- const getPackageFn = (o) => (pack) => {
10
- return o.name === pack.name && o.version == pack.version;
11
- };
12
- for (let override of overrides.homepage) {
13
- overrideMatch(packages.find(getPackageFn(override)), override, OverrideSection.Homepage);
14
- }
15
- for (let override of overrides.license) {
16
- overrideMatch(packages.find(getPackageFn(override)), override, OverrideSection.License);
17
- }
18
- }
19
- function applyOverrides(packages, overrides) {
20
- findOverrides(packages, overrides, (pack, override, overrideSection) => {
21
- if (!pack)
22
- return;
23
- switch (overrideSection) {
24
- case OverrideSection.Homepage: {
25
- pack.homepage = override.new;
26
- return;
27
- }
28
- case OverrideSection.License: {
29
- pack.license = override.new;
30
- return;
31
- }
32
- }
33
- });
34
- }
35
- exports.applyOverrides = applyOverrides;
36
- function findUnusedOverrides(packages, overrides) {
37
- const unusedOverrides = {
38
- license: [],
39
- homepage: []
40
- };
41
- findOverrides(packages, overrides, (pack, override, overrideSection) => {
42
- if (pack)
43
- return;
44
- switch (overrideSection) {
45
- case OverrideSection.Homepage: {
46
- unusedOverrides.homepage.push(override);
47
- return;
48
- }
49
- case OverrideSection.License: {
50
- unusedOverrides.license.push(override);
51
- return;
52
- }
53
- }
54
- });
55
- return unusedOverrides;
56
- }
57
- exports.findUnusedOverrides = findUnusedOverrides;
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.findUnusedOverrides = exports.applyOverrides = void 0;
4
+ var OverrideSection;
5
+ (function (OverrideSection) {
6
+ OverrideSection[OverrideSection["Homepage"] = 0] = "Homepage";
7
+ OverrideSection[OverrideSection["License"] = 1] = "License";
8
+ })(OverrideSection || (OverrideSection = {}));
9
+ function findOverrides(packages, overrides, overrideMatch) {
10
+ const getPackageFn = (o) => (pack) => {
11
+ return o.name === pack.name && o.version == pack.version;
12
+ };
13
+ for (let override of overrides.homepage) {
14
+ overrideMatch(packages.find(getPackageFn(override)), override, OverrideSection.Homepage);
15
+ }
16
+ for (let override of overrides.license) {
17
+ overrideMatch(packages.find(getPackageFn(override)), override, OverrideSection.License);
18
+ }
19
+ }
20
+ function applyOverrides(packages, overrides) {
21
+ findOverrides(packages, overrides, (pack, override, overrideSection) => {
22
+ if (!pack)
23
+ return;
24
+ switch (overrideSection) {
25
+ case OverrideSection.Homepage: {
26
+ pack.homepage = override.new;
27
+ return;
28
+ }
29
+ case OverrideSection.License: {
30
+ pack.license = override.new;
31
+ return;
32
+ }
33
+ }
34
+ });
35
+ }
36
+ exports.applyOverrides = applyOverrides;
37
+ function findUnusedOverrides(packages, overrides) {
38
+ const unusedOverrides = {
39
+ license: [],
40
+ homepage: []
41
+ };
42
+ findOverrides(packages, overrides, (pack, override, overrideSection) => {
43
+ if (pack)
44
+ return;
45
+ switch (overrideSection) {
46
+ case OverrideSection.Homepage: {
47
+ unusedOverrides.homepage.push(override);
48
+ return;
49
+ }
50
+ case OverrideSection.License: {
51
+ unusedOverrides.license.push(override);
52
+ return;
53
+ }
54
+ }
55
+ });
56
+ return unusedOverrides;
57
+ }
58
+ exports.findUnusedOverrides = findUnusedOverrides;
package/lib/section.d.ts CHANGED
@@ -1,14 +1,14 @@
1
- import { PackageContent } from './package_infos';
2
- export declare type LicenseMeta<T> = {
3
- licenseName: string;
4
- meta: T;
5
- };
6
- export declare type LicenseSection = {
7
- licenseName: string;
8
- libraries: PackageContent[];
9
- };
10
- export declare type LicenseSectionWithMeta<T> = {
11
- meta?: T;
12
- } & LicenseSection;
13
- export declare function gatherLicenseSections(packageInfos: PackageContent[]): LicenseSection[];
14
- export declare function attachMeta<T>(l: LicenseSection[], m: LicenseMeta<T>[]): LicenseSectionWithMeta<T>[];
1
+ import { PackageContent } from './package_infos';
2
+ export type LicenseMeta<T> = {
3
+ licenseName: string;
4
+ meta: T;
5
+ };
6
+ export type LicenseSection = {
7
+ licenseName: string;
8
+ libraries: PackageContent[];
9
+ };
10
+ export type LicenseSectionWithMeta<T> = {
11
+ meta?: T;
12
+ } & LicenseSection;
13
+ export declare function gatherLicenseSections(packageInfos: PackageContent[]): LicenseSection[];
14
+ export declare function attachMeta<T>(l: LicenseSection[], m: LicenseMeta<T>[]): LicenseSectionWithMeta<T>[];
package/lib/section.js CHANGED
@@ -1,37 +1,38 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- function orderByLicense(packageInfos) {
4
- const getLicenseStr = (a) => {
5
- return a === undefined ? "" : a;
6
- };
7
- packageInfos.sort((a, b) => {
8
- return getLicenseStr(a.license).localeCompare(getLicenseStr(b.license));
9
- });
10
- }
11
- function gatherLicenseSections(packageInfos) {
12
- orderByLicense(packageInfos);
13
- const licenseSections = [];
14
- for (let info of packageInfos) {
15
- if (licenseSections.length === 0 || licenseSections[licenseSections.length - 1].licenseName !== info.license) {
16
- licenseSections.push({
17
- licenseName: info.license,
18
- libraries: []
19
- });
20
- }
21
- licenseSections[licenseSections.length - 1].libraries.push(info);
22
- }
23
- for (let license of licenseSections) {
24
- license.libraries.sort((a, b) => {
25
- return a.name.localeCompare(b.name);
26
- });
27
- }
28
- return licenseSections;
29
- }
30
- exports.gatherLicenseSections = gatherLicenseSections;
31
- function attachMeta(l, m) {
32
- return l.map((ls) => {
33
- const licenseMeta = m.find((lm) => lm.licenseName === ls.licenseName);
34
- return Object.assign({}, ls, licenseMeta);
35
- });
36
- }
37
- exports.attachMeta = attachMeta;
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.attachMeta = exports.gatherLicenseSections = void 0;
4
+ function orderByLicense(packageInfos) {
5
+ const getLicenseStr = (a) => {
6
+ return a === undefined ? "" : a;
7
+ };
8
+ packageInfos.sort((a, b) => {
9
+ return getLicenseStr(a.license).localeCompare(getLicenseStr(b.license));
10
+ });
11
+ }
12
+ function gatherLicenseSections(packageInfos) {
13
+ orderByLicense(packageInfos);
14
+ const licenseSections = [];
15
+ for (let info of packageInfos) {
16
+ if (licenseSections.length === 0 || licenseSections[licenseSections.length - 1].licenseName !== info.license) {
17
+ licenseSections.push({
18
+ licenseName: info.license,
19
+ libraries: []
20
+ });
21
+ }
22
+ licenseSections[licenseSections.length - 1].libraries.push(info);
23
+ }
24
+ for (let license of licenseSections) {
25
+ license.libraries.sort((a, b) => {
26
+ return a.name.localeCompare(b.name);
27
+ });
28
+ }
29
+ return licenseSections;
30
+ }
31
+ exports.gatherLicenseSections = gatherLicenseSections;
32
+ function attachMeta(l, m) {
33
+ return l.map((ls) => {
34
+ const licenseMeta = m.find((lm) => lm.licenseName === ls.licenseName);
35
+ return Object.assign(Object.assign({}, ls), licenseMeta);
36
+ });
37
+ }
38
+ exports.attachMeta = attachMeta;
package/package.json CHANGED
@@ -1,33 +1,36 @@
1
- {
2
- "name": "@volumegraphics/license-info-collector",
3
- "version": "2.0.0",
4
- "description": "Collects license information of all dependencies of your project",
5
- "main": "./lib/index.js",
6
- "types": "./lib/index.d.ts",
7
- "scripts": {
8
- "prepublishOnly": "tsc",
9
- "build": "tsc"
10
- },
11
- "author": "Volume Graphics GmbH",
12
- "homepage": "https://www.volumegraphics.com/",
13
- "license": "MIT",
14
- "keywords": [
15
- "license",
16
- "licensing",
17
- "collect",
18
- "dependencies"
19
- ],
20
- "repository": {
21
- "type": "git",
22
- "url": "https://github.com/VolumeGraphics/license-info-collector.git"
23
- },
24
- "devDependencies": {
25
- "@types/node": "^10.1.0",
26
- "@types/semver": "^5.5.0",
27
- "ts-node": "^6.0.3",
28
- "typescript": "^2.8.3"
29
- },
30
- "dependencies": {
31
- "semver": "^5.5.0"
32
- }
33
- }
1
+ {
2
+ "name": "@volumegraphics/license-info-collector",
3
+ "version": "3.0.3",
4
+ "description": "Collects license information of all dependencies of your project",
5
+ "main": "./lib/index.js",
6
+ "types": "./lib/index.d.ts",
7
+ "scripts": {
8
+ "prepublishOnly": "tsc",
9
+ "build": "tsc"
10
+ },
11
+ "author": "Volume Graphics GmbH",
12
+ "homepage": "https://www.volumegraphics.com/",
13
+ "license": "MIT",
14
+ "keywords": [
15
+ "license",
16
+ "licensing",
17
+ "collect",
18
+ "dependencies"
19
+ ],
20
+ "publishConfig": {
21
+ "registry": "https://registry.npmjs.org/"
22
+ },
23
+ "repository": {
24
+ "type": "git",
25
+ "url": "https://github.com/VolumeGraphics/license-info-collector.git"
26
+ },
27
+ "devDependencies": {
28
+ "@types/node": "^10.17.60",
29
+ "@types/semver": "^5.5.0",
30
+ "ts-node": "^6.2.0",
31
+ "typescript": "^5.2.2"
32
+ },
33
+ "dependencies": {
34
+ "semver": "^5.7.2"
35
+ }
36
+ }
package/lib/test.d.ts DELETED
@@ -1 +0,0 @@
1
- export {};
package/lib/test.js DELETED
@@ -1,45 +0,0 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- const _1 = require(".");
4
- const fs = require("fs");
5
- function authorToString(author) {
6
- if (typeof author !== "string") {
7
- return author.name;
8
- }
9
- return author;
10
- }
11
- function repositoryToString(repo) {
12
- if (typeof repo !== "string") {
13
- return repo.url;
14
- }
15
- return repo;
16
- }
17
- function copyrightInfo(p) {
18
- if (p.author) {
19
- return authorToString(p.author);
20
- }
21
- else if (p.homepage) {
22
- return p.homepage;
23
- }
24
- else if (p.repository) {
25
- return repositoryToString(p.repository);
26
- }
27
- return undefined;
28
- }
29
- function evaluateCopyRightInfo(p) {
30
- return copyrightInfo(p) !== undefined;
31
- }
32
- function toHtml(productPackageJsonFile, productNodeModulesPaths, licenseFilesPath, configFilePath) {
33
- let packageInfos = _1.collectPackageInfos(productPackageJsonFile, productNodeModulesPaths, false);
34
- const config = JSON.parse(fs.readFileSync(configFilePath).toString());
35
- _1.applyOverrides(packageInfos, config.overrides);
36
- const invalidOverrides = _1.findUnusedOverrides(packageInfos, config.overrides);
37
- const invalidInfo = _1.findInvalidPackageContent(packageInfos, config.licenses, evaluateCopyRightInfo);
38
- const missingPackages = _1.findMissingPackages(packageInfos, false);
39
- if (invalidOverrides.homepage.length != 0
40
- || invalidOverrides.license.length != 0
41
- || missingPackages.length != 0) {
42
- }
43
- const licenseSections = _1.gatherLicenseSections(packageInfos, config.licenses, licenseFilesPath);
44
- }
45
- console.log(toHtml("example/package.json", ["example/node_modules"], "example/license_files", "example/config.json"));