Skip to content

Commit e250fab

Browse files
committedOct 16, 2022
release: release version
1 parent c1cbe08 commit e250fab

File tree

3 files changed

+1667
-1
lines changed

3 files changed

+1667
-1
lines changed
 

‎dist/index.d.ts

+333
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,333 @@
1+
/**
2+
* The MIT License (MIT)
3+
*
4+
* Copyright (c) 2016-2022 Mickael Jeanroy
5+
*
6+
* Permission is hereby granted, free of charge, to any person obtaining a copy
7+
* of this software and associated documentation files (the "Software"), to deal
8+
* in the Software without restriction, including without limitation the rights
9+
* to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
10+
* copies of the Software, and to permit persons to whom the Software is
11+
* furnished to do so, subject to the following conditions:
12+
*
13+
* The above copyright notice and this permission notice shall be included in all
14+
* copies or substantial portions of the Software.
15+
*
16+
* THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
17+
* IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
18+
* FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
19+
* AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
20+
* LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
21+
* OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
22+
* SOFTWARE.
23+
*/
24+
25+
import type {Plugin} from 'rollup';
26+
27+
type FilePath = string;
28+
type FileEncoding = string;
29+
type FactoryFn<T> = () => T;
30+
type Factory<T> = T | FactoryFn<T>;
31+
32+
/**
33+
* A person, as described in NPM documentation.
34+
*
35+
* @see https://docs.npmjs.com/cli/v7/configuring-npm/package-json#people-fields-author-contributors
36+
*/
37+
export interface Person {
38+
/**
39+
* Person Name.
40+
*/
41+
readonly name: string;
42+
43+
/**
44+
* Person Email.
45+
*/
46+
readonly email: string | null;
47+
48+
/**
49+
* Person URL.
50+
*/
51+
readonly url: string | null;
52+
53+
/**
54+
* Turns the person into a formatted string
55+
* @returns formatted person info
56+
*/
57+
text: () => string;
58+
}
59+
60+
/**
61+
* @see {@link https://github.com/mjeanroy/rollup-plugin-license#comment-style}
62+
*/
63+
export type CommentStyle = 'regular' | 'ignored' | 'slash' | 'none';
64+
65+
/**
66+
* Banner content descriptor.
67+
*/
68+
interface BannerContentOptions {
69+
/**
70+
* File to get banner content from.
71+
*/
72+
file: FilePath;
73+
74+
/**
75+
* File encoding.
76+
* @default utf-8
77+
*/
78+
encoding?: FileEncoding;
79+
}
80+
81+
/**
82+
* Banner content, can be:
83+
* - A raw string, evaluated as a (lodash) template.
84+
* - A file description, the content being read and evaluated as a (lodash) template.
85+
*/
86+
type BannerContent = string | BannerContentOptions;
87+
88+
/**
89+
* Data injected during banner "rendering" (i.e evaluated as template
90+
* model).
91+
*/
92+
interface BannerContentData {
93+
[key: string]: any;
94+
}
95+
96+
/**
97+
* Banner Options.
98+
*/
99+
interface BannerOptions {
100+
content: Factory<BannerContent>;
101+
commentStyle?: CommentStyle;
102+
data?: Factory<BannerContentData>;
103+
}
104+
105+
export type Banner = string | BannerOptions;
106+
107+
/**
108+
* Dependency Repository Description.
109+
*/
110+
interface DependencyRepository {
111+
/**
112+
* Repository URL.
113+
*/
114+
readonly url: string;
115+
116+
/**
117+
* Repository Type (git, svn, etc.).
118+
*/
119+
readonly type: string;
120+
}
121+
122+
/**
123+
* Dependency information is derived from the package.json file
124+
*/
125+
export interface Dependency {
126+
/**
127+
* Dependency Name.
128+
*/
129+
readonly name: string | null;
130+
131+
/**
132+
* Dependency Maintainers list.
133+
*/
134+
readonly maintainers: string[];
135+
136+
/**
137+
* Dependency Version.
138+
*/
139+
readonly version: string | null;
140+
141+
/**
142+
* Dependency Description.
143+
*/
144+
readonly description: string | null;
145+
146+
/**
147+
* Dependency Repository Location.
148+
*/
149+
readonly repository: string | DependencyRepository | null;
150+
151+
/**
152+
* Repository Public Homepage.
153+
*/
154+
readonly homepage: string | null;
155+
156+
/**
157+
* If dependency is private.
158+
*/
159+
readonly private: boolean;
160+
161+
/**
162+
* SPDX License short ID.
163+
*/
164+
readonly license: string | null;
165+
166+
/**
167+
* Full License file text.
168+
*/
169+
readonly licenseText: string | null;
170+
171+
/**
172+
* Author information.
173+
*/
174+
readonly author: Person | null;
175+
176+
/**
177+
* Dependency Contributes list.
178+
*/
179+
readonly contributors: Person[];
180+
181+
/**
182+
* Turns the dependency into a formatted string
183+
* @returns formatted dependency license info
184+
*/
185+
text: () => string;
186+
}
187+
188+
/**
189+
* SPDX Licence Identifier.
190+
*/
191+
type SpdxId = string;
192+
193+
/**
194+
* Function checking dependency license validity.
195+
*/
196+
type ThirdPartyDependencyValidatorFn = (Dependency: Dependency) => boolean;
197+
198+
type ThirdPartyValidator = SpdxId | ThirdPartyDependencyValidatorFn;
199+
200+
interface ThirdPartyAllowOptions {
201+
/**
202+
* Testing if the license if valid
203+
*/
204+
test: ThirdPartyValidator;
205+
206+
/**
207+
* Fail if a dependency does not specify any licenses
208+
* @default false
209+
*/
210+
failOnUnlicensed?: boolean;
211+
212+
/**
213+
* Fail if a dependency specify a license that does not match given requirement
214+
* @default false
215+
*/
216+
failOnViolation?: boolean;
217+
}
218+
219+
/**
220+
* Output generator: may write a file to disk, or something else as long as it is a
221+
* synchronous operation.
222+
*/
223+
type ThirdPartyOutputGeneratorFn = (dependencies: Dependency[]) => void;
224+
225+
/**
226+
* Template as a raw string.
227+
*/
228+
type ThirdPartyOutputTemplate = string;
229+
230+
/**
231+
* Template function.
232+
*/
233+
type ThirdPartyOutputTemplateFn = (dependencies: Dependency[]) => void;
234+
235+
/**
236+
* Third Party output options object.
237+
*/
238+
interface ThirdPartyOutputOptions {
239+
/**
240+
* Name of file to write licenses to
241+
*/
242+
file: FilePath;
243+
244+
/**
245+
* @default utf-8
246+
*/
247+
encoding?: FileEncoding;
248+
249+
/**
250+
* Template function that can be defined to customize report output.
251+
*
252+
* @example
253+
* template(dependencies) {
254+
* return dependencies.map((dependency) => (
255+
* `${dependency.name}:${dependency.version} -- ${dependency.license}`).join('\n')
256+
* );
257+
* },
258+
*
259+
* // Lodash template that can be defined to customize report output
260+
* template: `
261+
* <% _.forEach(dependencies, function (dependency) { %>
262+
* <%= dependency.name %>:<%= dependency.version%> -- <%= dependency.license %>
263+
* <% }) %>
264+
* `
265+
*/
266+
template?: ThirdPartyOutputTemplate | ThirdPartyOutputTemplateFn;
267+
}
268+
269+
type ThirdPartyOutput = FilePath | ThirdPartyOutputGeneratorFn | ThirdPartyOutputOptions;
270+
271+
interface ThirdPartyOptions {
272+
/**
273+
* Output for third party report.
274+
*/
275+
output: ThirdPartyOutput | ThirdPartyOutput[];
276+
277+
/**
278+
* If private dependencies should be checked (`private: true` in package.json)
279+
* @default false
280+
*/
281+
includePrivate?: boolean;
282+
283+
/**
284+
* Ensures that dependencies does not violate any license restriction.
285+
*
286+
* For example, suppose you want to limit dependencies with MIT or Apache-2.0
287+
* licenses, simply define the restriction:
288+
*
289+
* @example
290+
* {
291+
* allow: '(MIT OR Apache-2.0)'
292+
* }
293+
*
294+
* allow(dependency) {
295+
* return dependency.license === 'MIT';
296+
* }
297+
*/
298+
allow?: ThirdPartyValidator | ThirdPartyAllowOptions;
299+
}
300+
301+
export type ThirdParty = ThirdPartyOutputGeneratorFn | ThirdPartyOptions;
302+
303+
export interface Options {
304+
sourcemap?: boolean | string;
305+
306+
/**
307+
* Debug mode
308+
* @default false
309+
*/
310+
debug?: boolean;
311+
312+
/**
313+
* Current Working Directory
314+
* @default process.cwd()
315+
*/
316+
cwd?: string;
317+
318+
/**
319+
* License banner to place at the top of your bundle
320+
*/
321+
banner?: Factory<Banner>;
322+
323+
/**
324+
* For third party dependencies.
325+
* Creates a file containing a summary of all dependencies can be generated
326+
* automatically
327+
*/
328+
thirdParty?: ThirdParty;
329+
}
330+
331+
declare function rollupPluginLicense(options: Options): Plugin;
332+
333+
export default rollupPluginLicense;

‎dist/index.js

+1,333
Large diffs are not rendered by default.

‎package.json

+1-1
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
{
22
"name": "rollup-plugin-license",
3-
"version": "2.8.1",
3+
"version": "2.8.2",
44
"description": "Rollup plugin to add license banner to the final bundle and output third party licenses",
55
"main": "dist/index.js",
66
"types": "dist/index.d.ts",

0 commit comments

Comments
 (0)
Please sign in to comment.