@untidy/thetvdb
Advanced tools
Comparing version 0.0.2 to 0.0.4
/// <reference types="node" resolution-mode="require"/> | ||
import { URL } from 'node:url'; | ||
export interface FetchResult<T> { | ||
status: number; | ||
result: T; | ||
} | ||
export declare class Base { | ||
@@ -11,5 +7,5 @@ private readonly _token; | ||
constructor(token: string); | ||
protected fetcher<T>(url: string | URL): Promise<FetchResult<T>>; | ||
protected validateInput(input: string, errorMessage: string): void; | ||
protected fetcher<T>(url: string | URL): Promise<T>; | ||
protected validateInput(input: string, message: string): void; | ||
protected createQuery<T extends Record<string, string>>(endpoint: string, obj: T): string; | ||
} |
@@ -13,20 +13,18 @@ import { URL } from 'node:url'; | ||
}); | ||
const { status } = response; | ||
const result = (await response.json()); | ||
return { status, result }; | ||
return (await response.json()); | ||
} | ||
validateInput(input, errorMessage) { | ||
validateInput(input, message) { | ||
if (typeof input !== 'string' || input.length === 0) { | ||
throw new Error(errorMessage); | ||
throw new Error(message); | ||
} | ||
} | ||
createQuery(endpoint, obj) { | ||
const search = new URL(endpoint, this.api); | ||
const target = new URL(endpoint, this.api); | ||
for (const [key, value] of Object.entries(obj)) { | ||
if (typeof value === 'string' && value.length >= 1) { | ||
search.searchParams.set(key, value); | ||
target.searchParams.set(key, value); | ||
} | ||
} | ||
return search.href; | ||
return target.href; | ||
} | ||
} |
@@ -1,7 +0,5 @@ | ||
import { Base, type FetchResult } from './core.js'; | ||
interface BaseResponse<T> { | ||
import { Base } from './core.js'; | ||
export interface DataLink<T> { | ||
status: string; | ||
data: T; | ||
} | ||
interface ResponseWithLinks<T> extends BaseResponse<T> { | ||
links: { | ||
@@ -15,21 +13,13 @@ prev: string | null; | ||
} | ||
interface Update { | ||
recordType: string; | ||
recordId: number; | ||
methodInt: number; | ||
method: string; | ||
extraInfo: string; | ||
userId: number; | ||
timeStamp: number; | ||
entityType: string; | ||
} | ||
export interface ContentRating { | ||
id: number; | ||
name: string; | ||
country: string; | ||
description: string; | ||
contentType: string; | ||
order: number; | ||
fullName: string; | ||
} | ||
export type Data<T> = Omit<DataLink<T>, 'links'>; | ||
type Update = { | ||
[key in 'recordType' | 'method' | 'extraInfo' | 'entityType' | 'mergeToType']: string; | ||
} & { | ||
[key in 'recordId' | 'methodInt' | 'userId' | 'timeStamp' | 'mergeToId' | 'seriesId']: number; | ||
}; | ||
export type ContentRating = { | ||
[key in 'name' | 'country' | 'description' | 'contentType' | 'fullName']: string; | ||
} & { | ||
[key in 'id' | 'order']: number; | ||
}; | ||
interface Genre { | ||
@@ -40,24 +30,17 @@ id: number; | ||
} | ||
interface Language { | ||
id: string; | ||
name: string; | ||
nativeName: string; | ||
shortCode: string | null; | ||
} | ||
interface Country { | ||
id: string; | ||
name: string; | ||
shortCode: string; | ||
} | ||
type ContentRatings = BaseResponse<ContentRating[]>; | ||
type Countries = BaseResponse<Country[]>; | ||
type Genres = BaseResponse<Genre[]>; | ||
type Languages = BaseResponse<Language[]>; | ||
type UpdateWithLinks = ResponseWithLinks<Update[] | null[]>; | ||
type Language = { | ||
[key in 'id' | 'name' | 'nativeName' | 'shortCode']: string; | ||
}; | ||
type Country = Omit<Language, 'nativeName'>; | ||
type Entities = 'artwork' | 'award_nominees' | 'companies' | 'episodes' | 'lists' | 'people' | 'seasons' | 'series' | 'seriespeople' | 'artworktypes' | 'award_categories' | 'awards' | 'company_types' | 'content_ratings' | 'countries' | 'entity_types' | 'genres' | 'languages' | 'movies' | 'movie_genres' | 'movie_status' | 'peopletypes' | 'seasontypes' | 'sourcetypes' | 'tag_options' | 'tags' | 'translatedcharacters' | 'translatedcompanies' | 'translatedepisodes' | 'translatedlists' | 'translatedmovies' | 'translatedpeople' | 'translatedseasons' | 'translatedserierk'; | ||
type GetContentRatings = Data<ContentRating[]>; | ||
type GetCountries = Data<Country[]>; | ||
type GetGenres = Data<Genre[]>; | ||
type GetLanguages = Data<Language[]>; | ||
type GetUpdates = DataLink<Update[] | null[]>; | ||
export declare class TheTVDBExtended extends Base { | ||
getContentRatings(): Promise<FetchResult<ContentRatings>>; | ||
getCountries(): Promise<FetchResult<Countries>>; | ||
getGenres(): Promise<FetchResult<Genres>>; | ||
getLanguages(): Promise<FetchResult<Languages>>; | ||
getContentRatings(): Promise<GetContentRatings>; | ||
getCountries(): Promise<GetCountries>; | ||
getGenres(): Promise<GetGenres>; | ||
getLanguages(): Promise<GetLanguages>; | ||
getUpdates(options: { | ||
@@ -68,4 +51,4 @@ since: string; | ||
page?: string; | ||
}): Promise<FetchResult<UpdateWithLinks>>; | ||
}): Promise<GetUpdates>; | ||
} | ||
export {}; |
@@ -5,19 +5,15 @@ import { Base } from './core.js'; | ||
const endpoint = this.api + '/v4/content/ratings'; | ||
const data = await this.fetcher(endpoint); | ||
return data; | ||
return await this.fetcher(endpoint); | ||
} | ||
async getCountries() { | ||
const endpoint = this.api + '/v4/countries'; | ||
const data = await this.fetcher(endpoint); | ||
return data; | ||
return await this.fetcher(endpoint); | ||
} | ||
async getGenres() { | ||
const endpoint = this.api + '/v4/genres'; | ||
const data = await this.fetcher(endpoint); | ||
return data; | ||
return await this.fetcher(endpoint); | ||
} | ||
async getLanguages() { | ||
const endpoint = this.api + '/v4/languages'; | ||
const data = await this.fetcher(endpoint); | ||
return data; | ||
return await this.fetcher(endpoint); | ||
} | ||
@@ -27,5 +23,4 @@ async getUpdates(options) { | ||
const endpoint = this.createQuery('/v4/updates', options); | ||
const data = await this.fetcher(endpoint); | ||
return data; | ||
return await this.fetcher(endpoint); | ||
} | ||
} |
@@ -1,8 +0,6 @@ | ||
import { Base, type FetchResult } from './core.js'; | ||
import type { ContentRating } from './extended.js'; | ||
import { Base } from './core.js'; | ||
import type { ContentRating, Data, DataLink } from './extended.js'; | ||
type NameImageYear = { | ||
name: string; | ||
image: string; | ||
year: string; | ||
} | null; | ||
[key in 'name' | 'image' | 'year']: string; | ||
}; | ||
interface SeasonType { | ||
@@ -21,2 +19,16 @@ id: number; | ||
} | null>; | ||
interface DefaultTranslation { | ||
name: string; | ||
overview: string; | ||
language: string; | ||
aliases?: string[]; | ||
isAlias?: boolean; | ||
isPrimary?: boolean; | ||
tagline?: string; | ||
} | ||
interface Translations { | ||
nameTranslations: DefaultTranslation[]; | ||
overviewTranslations: DefaultTranslation[]; | ||
aliases: string[] | null; | ||
} | ||
interface RemoteId { | ||
@@ -27,6 +39,2 @@ id: string; | ||
} | ||
interface BaseResponse<T> { | ||
status: string; | ||
data: T; | ||
} | ||
interface ArtworkBase { | ||
@@ -61,6 +69,6 @@ id: number; | ||
seriesId: number | null; | ||
series: NameImageYear; | ||
movie: NameImageYear; | ||
series: NameImageYear | null; | ||
movie: NameImageYear | null; | ||
movieId: number | null; | ||
episode?: NameImageYear; | ||
episode?: NameImageYear | null; | ||
episodeId: number | null; | ||
@@ -83,2 +91,21 @@ type: number; | ||
} | ||
type PeopleKeys = 'id' | 'name' | 'image' | 'nameTranslations' | 'overviewTranslations' | 'aliases'; | ||
type People = Pick<Character, PeopleKeys>; | ||
type PeopleTranslation = People & { | ||
birth: string | null; | ||
death: string | null; | ||
birthPlace: string | null; | ||
remoteIds: RemoteId[]; | ||
gender: number; | ||
characters: Character[]; | ||
biographies: Array<{ | ||
biography: string; | ||
language: string; | ||
} | null>; | ||
awards: unknown; | ||
tagOptions: TagTypes; | ||
translations: Translations; | ||
slug: string; | ||
}; | ||
type PeopleExtended = Omit<PeopleTranslation, 'translations'>; | ||
interface Episode { | ||
@@ -107,3 +134,3 @@ id: number; | ||
} | ||
interface EpisodeExtended extends Episode { | ||
interface EpisodeTranslation extends Episode { | ||
productionCode: string; | ||
@@ -120,16 +147,5 @@ nominations: unknown; | ||
awards: unknown; | ||
translations: Translations; | ||
} | ||
interface EpisodeTranslation extends EpisodeExtended { | ||
translations: { | ||
nameTranslations: Array<{ | ||
name: string; | ||
language: string; | ||
}>; | ||
overviewTranslations: Array<{ | ||
overview: string; | ||
language: string; | ||
}>; | ||
aliases: string[] | null; | ||
}; | ||
} | ||
type EpisodeExtended = Omit<EpisodeTranslation, 'translations'>; | ||
interface Season { | ||
@@ -155,17 +171,42 @@ id: number; | ||
} | ||
type GetCharacter = BaseResponse<Character>; | ||
type GetArtwork<T extends boolean> = T extends true ? BaseResponse<ArtworkExtended> : BaseResponse<ArtworkBase>; | ||
type GetEpisode<E extends boolean, M> = E extends true ? M extends true ? BaseResponse<EpisodeTranslation> : BaseResponse<EpisodeExtended> : BaseResponse<Episode>; | ||
type SearchKeys = { | ||
[key in 'type' | 'year' | 'company' | 'country' | 'director' | 'language' | 'primaryType' | 'network' | 'remote_id' | 'offset' | 'limit']: string; | ||
}; | ||
type SearchOptions = Partial<SearchKeys> & { | ||
query: string; | ||
}; | ||
type SearchStringKeys = 'country' | 'director' | 'extended_title' | 'first_air_time' | 'id' | 'image_url' | 'name' | 'network' | 'objectID' | 'overview' | 'primary_language' | 'primary_type' | 'status' | 'slug' | 'thumbnail' | 'tvdb_id' | 'type' | 'year'; | ||
type SearchArrayStringKeys = 'aliases' | 'genres' | 'studios'; | ||
type Search = { | ||
[key in SearchStringKeys]: string; | ||
} & { | ||
[key in SearchArrayStringKeys]: string[]; | ||
} & { | ||
overviews: Record<string, string>; | ||
translations: Record<string, string>; | ||
remote_ids: RemoteId[]; | ||
}; | ||
type GetCharacter = Data<Character>; | ||
type GetArtwork<T extends boolean> = T extends true ? Data<ArtworkExtended> : Data<ArtworkBase>; | ||
type GetEpisode<E extends boolean, M> = E extends true ? M extends true ? Data<EpisodeTranslation> : Data<EpisodeExtended> : Data<Episode>; | ||
type GetPeople<E extends boolean, M> = E extends true ? M extends true ? Data<PeopleTranslation> : Data<PeopleExtended> : Data<People>; | ||
type GetSearch = DataLink<Search[]>; | ||
export declare class TheTVDB extends Base { | ||
getArtwork<T extends boolean>(query: { | ||
getArtwork<T extends boolean>(options: { | ||
id: string; | ||
extended?: T; | ||
}): Promise<FetchResult<GetArtwork<T>>>; | ||
getCharacter(id: string): Promise<FetchResult<GetCharacter>>; | ||
getEpisodes<E extends boolean, M extends boolean>(query: { | ||
}): Promise<GetArtwork<T>>; | ||
getCharacter(id: string): Promise<GetCharacter>; | ||
getEpisode<E extends boolean, M extends boolean>(options: { | ||
id: string; | ||
extended?: E; | ||
meta?: M; | ||
}): Promise<FetchResult<GetEpisode<E, M>>>; | ||
}): Promise<GetEpisode<E, M>>; | ||
getPeople<E extends boolean, M extends boolean>(options: { | ||
id: string; | ||
extended?: E; | ||
meta?: M; | ||
}): Promise<GetPeople<E, M>>; | ||
getSearch(options: SearchOptions): Promise<GetSearch>; | ||
} | ||
export {}; |
import { Base } from './core.js'; | ||
export class TheTVDB extends Base { | ||
async getArtwork(query) { | ||
this.validateInput(query.id, 'Required artwork id'); | ||
let endpoint = this.api + '/v4/artwork/' + query.id; | ||
if (typeof query.extended === 'boolean' && query.extended) | ||
async getArtwork(options) { | ||
this.validateInput(options.id, 'Required artwork id'); | ||
let endpoint = this.api + '/v4/artwork/' + options.id; | ||
if (typeof options.extended === 'boolean' && options.extended) | ||
endpoint += '/extended'; | ||
const data = await this.fetcher(endpoint); | ||
return data; | ||
return await this.fetcher(endpoint); | ||
} | ||
@@ -14,15 +13,27 @@ async getCharacter(id) { | ||
const endpoint = this.api + '/v4/characters/' + id; | ||
const data = await this.fetcher(endpoint); | ||
return data; | ||
return await this.fetcher(endpoint); | ||
} | ||
async getEpisodes(query) { | ||
this.validateInput(query.id, 'Required episode id'); | ||
let endpoint = this.api + '/v4/episodes/' + query.id; | ||
if (typeof query.extended === 'boolean' && query.extended) { | ||
async getEpisode(options) { | ||
this.validateInput(options.id, 'Required episode id'); | ||
let endpoint = this.api + '/v4/episodes/' + options.id; | ||
if (typeof options.extended === 'boolean' && options.extended) { | ||
endpoint += '/extended'; | ||
(query.meta ?? false) && (endpoint += '?meta=translations'); | ||
(options.meta ?? false) && (endpoint += '?meta=translations'); | ||
} | ||
const data = await this.fetcher(endpoint); | ||
return data; | ||
return await this.fetcher(endpoint); | ||
} | ||
async getPeople(options) { | ||
this.validateInput(options.id, 'Required people id'); | ||
let endpoint = this.api + '/v4/people/' + options.id; | ||
if (typeof options.extended === 'boolean' && options.extended) { | ||
endpoint += '/extended'; | ||
(options.meta ?? false) && (endpoint += '?meta=translations'); | ||
} | ||
return await this.fetcher(endpoint); | ||
} | ||
async getSearch(options) { | ||
this.validateInput(options.query, 'Required search query'); | ||
const endpoint = this.createQuery('/v4/search', options); | ||
return await this.fetcher(endpoint); | ||
} | ||
} |
720
LICENSE.md
GNU GENERAL PUBLIC LICENSE | ||
Version 3, 29 June 2007 | ||
Copyright (C) 2007 Free Software Foundation, Inc. <https://fsf.org/> | ||
Everyone is permitted to copy and distribute verbatim copies | ||
of this license document, but changing it is not allowed. | ||
Copyright (C) 2007 Free Software Foundation, Inc. <https://fsf.org/> Everyone is permitted to copy | ||
and distribute verbatim copies of this license document, but changing it is not allowed. | ||
Preamble | ||
The GNU General Public License is a free, copyleft license for | ||
software and other kinds of works. | ||
The GNU General Public License is a free, copyleft license for software and other kinds of works. | ||
The licenses for most software and other practical works are designed | ||
to take away your freedom to share and change the works. By contrast, | ||
the GNU General Public License is intended to guarantee your freedom to | ||
share and change all versions of a program--to make sure it remains free | ||
software for all its users. We, the Free Software Foundation, use the | ||
GNU General Public License for most of our software; it applies also to | ||
any other work released this way by its authors. You can apply it to | ||
your programs, too. | ||
The licenses for most software and other practical works are designed to take away your freedom to | ||
share and change the works. By contrast, the GNU General Public License is intended to guarantee | ||
your freedom to share and change all versions of a program--to make sure it remains free software | ||
for all its users. We, the Free Software Foundation, use the GNU General Public License for most of | ||
our software; it applies also to any other work released this way by its authors. You can apply it | ||
to your programs, too. | ||
When we speak of free software, we are referring to freedom, not | ||
price. Our General Public Licenses are designed to make sure that you | ||
have the freedom to distribute copies of free software (and charge for | ||
them if you wish), that you receive source code or can get it if you | ||
want it, that you can change the software or use pieces of it in new | ||
free programs, and that you know you can do these things. | ||
When we speak of free software, we are referring to freedom, not price. Our General Public Licenses | ||
are designed to make sure that you have the freedom to distribute copies of free software (and | ||
charge for them if you wish), that you receive source code or can get it if you want it, that you | ||
can change the software or use pieces of it in new free programs, and that you know you can do these | ||
things. | ||
To protect your rights, we need to prevent others from denying you | ||
these rights or asking you to surrender the rights. Therefore, you have | ||
certain responsibilities if you distribute copies of the software, or if | ||
you modify it: responsibilities to respect the freedom of others. | ||
To protect your rights, we need to prevent others from denying you these rights or asking you to | ||
surrender the rights. Therefore, you have certain responsibilities if you distribute copies of the | ||
software, or if you modify it: responsibilities to respect the freedom of others. | ||
For example, if you distribute copies of such a program, whether | ||
gratis or for a fee, you must pass on to the recipients the same | ||
freedoms that you received. You must make sure that they, too, receive | ||
or can get the source code. And you must show them these terms so they | ||
know their rights. | ||
For example, if you distribute copies of such a program, whether gratis or for a fee, you must pass | ||
on to the recipients the same freedoms that you received. You must make sure that they, too, receive | ||
or can get the source code. And you must show them these terms so they know their rights. | ||
Developers that use the GNU GPL protect your rights with two steps: | ||
(1) assert copyright on the software, and (2) offer you this License | ||
giving you legal permission to copy, distribute and/or modify it. | ||
Developers that use the GNU GPL protect your rights with two steps: (1) assert copyright on the | ||
software, and (2) offer you this License giving you legal permission to copy, distribute and/or | ||
modify it. | ||
For the developers' and authors' protection, the GPL clearly explains | ||
that there is no warranty for this free software. For both users' and | ||
authors' sake, the GPL requires that modified versions be marked as | ||
changed, so that their problems will not be attributed erroneously to | ||
authors of previous versions. | ||
For the developers' and authors' protection, the GPL clearly explains that there is no warranty for | ||
this free software. For both users' and authors' sake, the GPL requires that modified versions be | ||
marked as changed, so that their problems will not be attributed erroneously to authors of previous | ||
versions. | ||
Some devices are designed to deny users access to install or run | ||
modified versions of the software inside them, although the manufacturer | ||
can do so. This is fundamentally incompatible with the aim of | ||
protecting users' freedom to change the software. The systematic | ||
pattern of such abuse occurs in the area of products for individuals to | ||
use, which is precisely where it is most unacceptable. Therefore, we | ||
have designed this version of the GPL to prohibit the practice for those | ||
products. If such problems arise substantially in other domains, we | ||
stand ready to extend this provision to those domains in future versions | ||
of the GPL, as needed to protect the freedom of users. | ||
Some devices are designed to deny users access to install or run modified versions of the software | ||
inside them, although the manufacturer can do so. This is fundamentally incompatible with the aim of | ||
protecting users' freedom to change the software. The systematic pattern of such abuse occurs in the | ||
area of products for individuals to use, which is precisely where it is most unacceptable. | ||
Therefore, we have designed this version of the GPL to prohibit the practice for those products. If | ||
such problems arise substantially in other domains, we stand ready to extend this provision to those | ||
domains in future versions of the GPL, as needed to protect the freedom of users. | ||
Finally, every program is threatened constantly by software patents. | ||
States should not allow patents to restrict development and use of | ||
software on general-purpose computers, but in those that do, we wish to | ||
avoid the special danger that patents applied to a free program could | ||
make it effectively proprietary. To prevent this, the GPL assures that | ||
patents cannot be used to render the program non-free. | ||
Finally, every program is threatened constantly by software patents. States should not allow patents | ||
to restrict development and use of software on general-purpose computers, but in those that do, we | ||
wish to avoid the special danger that patents applied to a free program could make it effectively | ||
proprietary. To prevent this, the GPL assures that patents cannot be used to render the program | ||
non-free. | ||
The precise terms and conditions for copying, distribution and | ||
modification follow. | ||
The precise terms and conditions for copying, distribution and modification follow. | ||
@@ -77,138 +63,109 @@ TERMS AND CONDITIONS | ||
"Copyright" also means copyright-like laws that apply to other kinds of | ||
works, such as semiconductor masks. | ||
"Copyright" also means copyright-like laws that apply to other kinds of works, such as semiconductor | ||
masks. | ||
"The Program" refers to any copyrightable work licensed under this | ||
License. Each licensee is addressed as "you". "Licensees" and | ||
"recipients" may be individuals or organizations. | ||
"The Program" refers to any copyrightable work licensed under this License. Each licensee is | ||
addressed as "you". "Licensees" and "recipients" may be individuals or organizations. | ||
To "modify" a work means to copy from or adapt all or part of the work | ||
in a fashion requiring copyright permission, other than the making of an | ||
exact copy. The resulting work is called a "modified version" of the | ||
earlier work or a work "based on" the earlier work. | ||
To "modify" a work means to copy from or adapt all or part of the work in a fashion requiring | ||
copyright permission, other than the making of an exact copy. The resulting work is called a | ||
"modified version" of the earlier work or a work "based on" the earlier work. | ||
A "covered work" means either the unmodified Program or a work based | ||
on the Program. | ||
A "covered work" means either the unmodified Program or a work based on the Program. | ||
To "propagate" a work means to do anything with it that, without | ||
permission, would make you directly or secondarily liable for | ||
infringement under applicable copyright law, except executing it on a | ||
computer or modifying a private copy. Propagation includes copying, | ||
distribution (with or without modification), making available to the | ||
public, and in some countries other activities as well. | ||
To "propagate" a work means to do anything with it that, without permission, would make you directly | ||
or secondarily liable for infringement under applicable copyright law, except executing it on a | ||
computer or modifying a private copy. Propagation includes copying, distribution (with or without | ||
modification), making available to the public, and in some countries other activities as well. | ||
To "convey" a work means any kind of propagation that enables other | ||
parties to make or receive copies. Mere interaction with a user through | ||
a computer network, with no transfer of a copy, is not conveying. | ||
To "convey" a work means any kind of propagation that enables other parties to make or receive | ||
copies. Mere interaction with a user through a computer network, with no transfer of a copy, is not | ||
conveying. | ||
An interactive user interface displays "Appropriate Legal Notices" | ||
to the extent that it includes a convenient and prominently visible | ||
feature that (1) displays an appropriate copyright notice, and (2) | ||
tells the user that there is no warranty for the work (except to the | ||
extent that warranties are provided), that licensees may convey the | ||
work under this License, and how to view a copy of this License. If | ||
the interface presents a list of user commands or options, such as a | ||
menu, a prominent item in the list meets this criterion. | ||
An interactive user interface displays "Appropriate Legal Notices" to the extent that it includes a | ||
convenient and prominently visible feature that (1) displays an appropriate copyright notice, and | ||
(2) tells the user that there is no warranty for the work (except to the extent that warranties are | ||
provided), that licensees may convey the work under this License, and how to view a copy of this | ||
License. If the interface presents a list of user commands or options, such as a menu, a prominent | ||
item in the list meets this criterion. | ||
1. Source Code. | ||
The "source code" for a work means the preferred form of the work | ||
for making modifications to it. "Object code" means any non-source | ||
form of a work. | ||
The "source code" for a work means the preferred form of the work for making modifications to it. | ||
"Object code" means any non-source form of a work. | ||
A "Standard Interface" means an interface that either is an official | ||
standard defined by a recognized standards body, or, in the case of | ||
interfaces specified for a particular programming language, one that | ||
is widely used among developers working in that language. | ||
A "Standard Interface" means an interface that either is an official standard defined by a | ||
recognized standards body, or, in the case of interfaces specified for a particular programming | ||
language, one that is widely used among developers working in that language. | ||
The "System Libraries" of an executable work include anything, other | ||
than the work as a whole, that (a) is included in the normal form of | ||
packaging a Major Component, but which is not part of that Major | ||
Component, and (b) serves only to enable use of the work with that | ||
Major Component, or to implement a Standard Interface for which an | ||
implementation is available to the public in source code form. A | ||
"Major Component", in this context, means a major essential component | ||
(kernel, window system, and so on) of the specific operating system | ||
(if any) on which the executable work runs, or a compiler used to | ||
produce the work, or an object code interpreter used to run it. | ||
The "System Libraries" of an executable work include anything, other than the work as a whole, that | ||
(a) is included in the normal form of packaging a Major Component, but which is not part of that | ||
Major Component, and (b) serves only to enable use of the work with that Major Component, or to | ||
implement a Standard Interface for which an implementation is available to the public in source code | ||
form. A "Major Component", in this context, means a major essential component (kernel, window | ||
system, and so on) of the specific operating system (if any) on which the executable work runs, or a | ||
compiler used to produce the work, or an object code interpreter used to run it. | ||
The "Corresponding Source" for a work in object code form means all | ||
the source code needed to generate, install, and (for an executable | ||
work) run the object code and to modify the work, including scripts to | ||
control those activities. However, it does not include the work's | ||
System Libraries, or general-purpose tools or generally available free | ||
programs which are used unmodified in performing those activities but | ||
which are not part of the work. For example, Corresponding Source | ||
includes interface definition files associated with source files for | ||
the work, and the source code for shared libraries and dynamically | ||
linked subprograms that the work is specifically designed to require, | ||
such as by intimate data communication or control flow between those | ||
subprograms and other parts of the work. | ||
The "Corresponding Source" for a work in object code form means all the source code needed to | ||
generate, install, and (for an executable work) run the object code and to modify the work, | ||
including scripts to control those activities. However, it does not include the work's System | ||
Libraries, or general-purpose tools or generally available free programs which are used unmodified | ||
in performing those activities but which are not part of the work. For example, Corresponding Source | ||
includes interface definition files associated with source files for the work, and the source code | ||
for shared libraries and dynamically linked subprograms that the work is specifically designed to | ||
require, such as by intimate data communication or control flow between those subprograms and other | ||
parts of the work. | ||
The Corresponding Source need not include anything that users | ||
can regenerate automatically from other parts of the Corresponding | ||
Source. | ||
The Corresponding Source need not include anything that users can regenerate automatically from | ||
other parts of the Corresponding Source. | ||
The Corresponding Source for a work in source code form is that | ||
same work. | ||
The Corresponding Source for a work in source code form is that same work. | ||
2. Basic Permissions. | ||
All rights granted under this License are granted for the term of | ||
copyright on the Program, and are irrevocable provided the stated | ||
conditions are met. This License explicitly affirms your unlimited | ||
permission to run the unmodified Program. The output from running a | ||
covered work is covered by this License only if the output, given its | ||
content, constitutes a covered work. This License acknowledges your | ||
rights of fair use or other equivalent, as provided by copyright law. | ||
All rights granted under this License are granted for the term of copyright on the Program, and are | ||
irrevocable provided the stated conditions are met. This License explicitly affirms your unlimited | ||
permission to run the unmodified Program. The output from running a covered work is covered by this | ||
License only if the output, given its content, constitutes a covered work. This License acknowledges | ||
your rights of fair use or other equivalent, as provided by copyright law. | ||
You may make, run and propagate covered works that you do not | ||
convey, without conditions so long as your license otherwise remains | ||
in force. You may convey covered works to others for the sole purpose | ||
of having them make modifications exclusively for you, or provide you | ||
with facilities for running those works, provided that you comply with | ||
the terms of this License in conveying all material for which you do | ||
not control copyright. Those thus making or running the covered works | ||
for you must do so exclusively on your behalf, under your direction | ||
and control, on terms that prohibit them from making any copies of | ||
your copyrighted material outside their relationship with you. | ||
You may make, run and propagate covered works that you do not convey, without conditions so long as | ||
your license otherwise remains in force. You may convey covered works to others for the sole purpose | ||
of having them make modifications exclusively for you, or provide you with facilities for running | ||
those works, provided that you comply with the terms of this License in conveying all material for | ||
which you do not control copyright. Those thus making or running the covered works for you must do | ||
so exclusively on your behalf, under your direction and control, on terms that prohibit them from | ||
making any copies of your copyrighted material outside their relationship with you. | ||
Conveying under any other circumstances is permitted solely under | ||
the conditions stated below. Sublicensing is not allowed; section 10 | ||
makes it unnecessary. | ||
Conveying under any other circumstances is permitted solely under the conditions stated below. | ||
Sublicensing is not allowed; section 10 makes it unnecessary. | ||
3. Protecting Users' Legal Rights From Anti-Circumvention Law. | ||
No covered work shall be deemed part of an effective technological | ||
measure under any applicable law fulfilling obligations under article | ||
11 of the WIPO copyright treaty adopted on 20 December 1996, or | ||
similar laws prohibiting or restricting circumvention of such | ||
measures. | ||
No covered work shall be deemed part of an effective technological measure under any applicable law | ||
fulfilling obligations under article 11 of the WIPO copyright treaty adopted on 20 December 1996, or | ||
similar laws prohibiting or restricting circumvention of such measures. | ||
When you convey a covered work, you waive any legal power to forbid | ||
circumvention of technological measures to the extent such circumvention | ||
is effected by exercising rights under this License with respect to | ||
the covered work, and you disclaim any intention to limit operation or | ||
modification of the work as a means of enforcing, against the work's | ||
users, your or third parties' legal rights to forbid circumvention of | ||
technological measures. | ||
When you convey a covered work, you waive any legal power to forbid circumvention of technological | ||
measures to the extent such circumvention is effected by exercising rights under this License with | ||
respect to the covered work, and you disclaim any intention to limit operation or modification of | ||
the work as a means of enforcing, against the work's users, your or third parties' legal rights to | ||
forbid circumvention of technological measures. | ||
4. Conveying Verbatim Copies. | ||
You may convey verbatim copies of the Program's source code as you | ||
receive it, in any medium, provided that you conspicuously and | ||
appropriately publish on each copy an appropriate copyright notice; | ||
keep intact all notices stating that this License and any | ||
non-permissive terms added in accord with section 7 apply to the code; | ||
keep intact all notices of the absence of any warranty; and give all | ||
recipients a copy of this License along with the Program. | ||
You may convey verbatim copies of the Program's source code as you receive it, in any medium, | ||
provided that you conspicuously and appropriately publish on each copy an appropriate copyright | ||
notice; keep intact all notices stating that this License and any non-permissive terms added in | ||
accord with section 7 apply to the code; keep intact all notices of the absence of any warranty; and | ||
give all recipients a copy of this License along with the Program. | ||
You may charge any price or no price for each copy that you convey, | ||
and you may offer support or warranty protection for a fee. | ||
You may charge any price or no price for each copy that you convey, and you may offer support or | ||
warranty protection for a fee. | ||
5. Conveying Modified Source Versions. | ||
You may convey a work based on the Program, or the modifications to | ||
produce it from the Program, in the form of source code under the | ||
terms of section 4, provided that you also meet all of these conditions: | ||
You may convey a work based on the Program, or the modifications to produce it from the Program, in | ||
the form of source code under the terms of section 4, provided that you also meet all of these | ||
conditions: | ||
@@ -236,18 +193,14 @@ a) The work must carry prominent notices stating that you modified | ||
A compilation of a covered work with other separate and independent | ||
works, which are not by their nature extensions of the covered work, | ||
and which are not combined with it such as to form a larger program, | ||
in or on a volume of a storage or distribution medium, is called an | ||
"aggregate" if the compilation and its resulting copyright are not | ||
used to limit the access or legal rights of the compilation's users | ||
beyond what the individual works permit. Inclusion of a covered work | ||
in an aggregate does not cause this License to apply to the other | ||
parts of the aggregate. | ||
A compilation of a covered work with other separate and independent works, which are not by their | ||
nature extensions of the covered work, and which are not combined with it such as to form a larger | ||
program, in or on a volume of a storage or distribution medium, is called an "aggregate" if the | ||
compilation and its resulting copyright are not used to limit the access or legal rights of the | ||
compilation's users beyond what the individual works permit. Inclusion of a covered work in an | ||
aggregate does not cause this License to apply to the other parts of the aggregate. | ||
6. Conveying Non-Source Forms. | ||
You may convey a covered work in object code form under the terms | ||
of sections 4 and 5, provided that you also convey the | ||
machine-readable Corresponding Source under the terms of this License, | ||
in one of these ways: | ||
You may convey a covered work in object code form under the terms of sections 4 and 5, provided that | ||
you also convey the machine-readable Corresponding Source under the terms of this License, in one of | ||
these ways: | ||
@@ -295,73 +248,57 @@ a) Convey the object code in, or embodied in, a physical product | ||
A separable portion of the object code, whose source code is excluded | ||
from the Corresponding Source as a System Library, need not be | ||
included in conveying the object code work. | ||
A separable portion of the object code, whose source code is excluded from the Corresponding Source | ||
as a System Library, need not be included in conveying the object code work. | ||
A "User Product" is either (1) a "consumer product", which means any | ||
tangible personal property which is normally used for personal, family, | ||
or household purposes, or (2) anything designed or sold for incorporation | ||
into a dwelling. In determining whether a product is a consumer product, | ||
doubtful cases shall be resolved in favor of coverage. For a particular | ||
product received by a particular user, "normally used" refers to a | ||
typical or common use of that class of product, regardless of the status | ||
of the particular user or of the way in which the particular user | ||
actually uses, or expects or is expected to use, the product. A product | ||
is a consumer product regardless of whether the product has substantial | ||
commercial, industrial or non-consumer uses, unless such uses represent | ||
the only significant mode of use of the product. | ||
A "User Product" is either (1) a "consumer product", which means any tangible personal property | ||
which is normally used for personal, family, or household purposes, or (2) anything designed or sold | ||
for incorporation into a dwelling. In determining whether a product is a consumer product, doubtful | ||
cases shall be resolved in favor of coverage. For a particular product received by a particular | ||
user, "normally used" refers to a typical or common use of that class of product, regardless of the | ||
status of the particular user or of the way in which the particular user actually uses, or expects | ||
or is expected to use, the product. A product is a consumer product regardless of whether the | ||
product has substantial commercial, industrial or non-consumer uses, unless such uses represent the | ||
only significant mode of use of the product. | ||
"Installation Information" for a User Product means any methods, | ||
procedures, authorization keys, or other information required to install | ||
and execute modified versions of a covered work in that User Product from | ||
a modified version of its Corresponding Source. The information must | ||
suffice to ensure that the continued functioning of the modified object | ||
code is in no case prevented or interfered with solely because | ||
modification has been made. | ||
"Installation Information" for a User Product means any methods, procedures, authorization keys, or | ||
other information required to install and execute modified versions of a covered work in that User | ||
Product from a modified version of its Corresponding Source. The information must suffice to ensure | ||
that the continued functioning of the modified object code is in no case prevented or interfered | ||
with solely because modification has been made. | ||
If you convey an object code work under this section in, or with, or | ||
specifically for use in, a User Product, and the conveying occurs as | ||
part of a transaction in which the right of possession and use of the | ||
User Product is transferred to the recipient in perpetuity or for a | ||
fixed term (regardless of how the transaction is characterized), the | ||
Corresponding Source conveyed under this section must be accompanied | ||
by the Installation Information. But this requirement does not apply | ||
if neither you nor any third party retains the ability to install | ||
modified object code on the User Product (for example, the work has | ||
been installed in ROM). | ||
If you convey an object code work under this section in, or with, or specifically for use in, a User | ||
Product, and the conveying occurs as part of a transaction in which the right of possession and use | ||
of the User Product is transferred to the recipient in perpetuity or for a fixed term (regardless of | ||
how the transaction is characterized), the Corresponding Source conveyed under this section must be | ||
accompanied by the Installation Information. But this requirement does not apply if neither you nor | ||
any third party retains the ability to install modified object code on the User Product (for | ||
example, the work has been installed in ROM). | ||
The requirement to provide Installation Information does not include a | ||
requirement to continue to provide support service, warranty, or updates | ||
for a work that has been modified or installed by the recipient, or for | ||
the User Product in which it has been modified or installed. Access to a | ||
network may be denied when the modification itself materially and | ||
adversely affects the operation of the network or violates the rules and | ||
protocols for communication across the network. | ||
The requirement to provide Installation Information does not include a requirement to continue to | ||
provide support service, warranty, or updates for a work that has been modified or installed by the | ||
recipient, or for the User Product in which it has been modified or installed. Access to a network | ||
may be denied when the modification itself materially and adversely affects the operation of the | ||
network or violates the rules and protocols for communication across the network. | ||
Corresponding Source conveyed, and Installation Information provided, | ||
in accord with this section must be in a format that is publicly | ||
documented (and with an implementation available to the public in | ||
source code form), and must require no special password or key for | ||
unpacking, reading or copying. | ||
Corresponding Source conveyed, and Installation Information provided, in accord with this section | ||
must be in a format that is publicly documented (and with an implementation available to the public | ||
in source code form), and must require no special password or key for unpacking, reading or copying. | ||
7. Additional Terms. | ||
"Additional permissions" are terms that supplement the terms of this | ||
License by making exceptions from one or more of its conditions. | ||
Additional permissions that are applicable to the entire Program shall | ||
be treated as though they were included in this License, to the extent | ||
that they are valid under applicable law. If additional permissions | ||
apply only to part of the Program, that part may be used separately | ||
under those permissions, but the entire Program remains governed by | ||
this License without regard to the additional permissions. | ||
"Additional permissions" are terms that supplement the terms of this License by making exceptions | ||
from one or more of its conditions. Additional permissions that are applicable to the entire Program | ||
shall be treated as though they were included in this License, to the extent that they are valid | ||
under applicable law. If additional permissions apply only to part of the Program, that part may be | ||
used separately under those permissions, but the entire Program remains governed by this License | ||
without regard to the additional permissions. | ||
When you convey a copy of a covered work, you may at your option | ||
remove any additional permissions from that copy, or from any part of | ||
it. (Additional permissions may be written to require their own | ||
removal in certain cases when you modify the work.) You may place | ||
additional permissions on material, added by you to a covered work, | ||
for which you have or can give appropriate copyright permission. | ||
When you convey a copy of a covered work, you may at your option remove any additional permissions | ||
from that copy, or from any part of it. (Additional permissions may be written to require their own | ||
removal in certain cases when you modify the work.) You may place additional permissions on | ||
material, added by you to a covered work, for which you have or can give appropriate copyright | ||
permission. | ||
Notwithstanding any other provision of this License, for material you | ||
add to a covered work, you may (if authorized by the copyright holders of | ||
that material) supplement the terms of this License with terms: | ||
Notwithstanding any other provision of this License, for material you add to a covered work, you may | ||
(if authorized by the copyright holders of that material) supplement the terms of this License with | ||
terms: | ||
@@ -391,201 +328,156 @@ a) Disclaiming warranty or limiting liability differently from the | ||
All other non-permissive additional terms are considered "further | ||
restrictions" within the meaning of section 10. If the Program as you | ||
received it, or any part of it, contains a notice stating that it is | ||
governed by this License along with a term that is a further | ||
restriction, you may remove that term. If a license document contains | ||
a further restriction but permits relicensing or conveying under this | ||
License, you may add to a covered work material governed by the terms | ||
of that license document, provided that the further restriction does | ||
not survive such relicensing or conveying. | ||
All other non-permissive additional terms are considered "further restrictions" within the meaning | ||
of section 10. If the Program as you received it, or any part of it, contains a notice stating that | ||
it is governed by this License along with a term that is a further restriction, you may remove that | ||
term. If a license document contains a further restriction but permits relicensing or conveying | ||
under this License, you may add to a covered work material governed by the terms of that license | ||
document, provided that the further restriction does not survive such relicensing or conveying. | ||
If you add terms to a covered work in accord with this section, you | ||
must place, in the relevant source files, a statement of the | ||
additional terms that apply to those files, or a notice indicating | ||
If you add terms to a covered work in accord with this section, you must place, in the relevant | ||
source files, a statement of the additional terms that apply to those files, or a notice indicating | ||
where to find the applicable terms. | ||
Additional terms, permissive or non-permissive, may be stated in the | ||
form of a separately written license, or stated as exceptions; | ||
the above requirements apply either way. | ||
Additional terms, permissive or non-permissive, may be stated in the form of a separately written | ||
license, or stated as exceptions; the above requirements apply either way. | ||
8. Termination. | ||
You may not propagate or modify a covered work except as expressly | ||
provided under this License. Any attempt otherwise to propagate or | ||
modify it is void, and will automatically terminate your rights under | ||
this License (including any patent licenses granted under the third | ||
paragraph of section 11). | ||
You may not propagate or modify a covered work except as expressly provided under this License. Any | ||
attempt otherwise to propagate or modify it is void, and will automatically terminate your rights | ||
under this License (including any patent licenses granted under the third paragraph of section 11). | ||
However, if you cease all violation of this License, then your | ||
license from a particular copyright holder is reinstated (a) | ||
provisionally, unless and until the copyright holder explicitly and | ||
finally terminates your license, and (b) permanently, if the copyright | ||
holder fails to notify you of the violation by some reasonable means | ||
prior to 60 days after the cessation. | ||
However, if you cease all violation of this License, then your license from a particular copyright | ||
holder is reinstated (a) provisionally, unless and until the copyright holder explicitly and finally | ||
terminates your license, and (b) permanently, if the copyright holder fails to notify you of the | ||
violation by some reasonable means prior to 60 days after the cessation. | ||
Moreover, your license from a particular copyright holder is | ||
reinstated permanently if the copyright holder notifies you of the | ||
violation by some reasonable means, this is the first time you have | ||
received notice of violation of this License (for any work) from that | ||
copyright holder, and you cure the violation prior to 30 days after | ||
your receipt of the notice. | ||
Moreover, your license from a particular copyright holder is reinstated permanently if the copyright | ||
holder notifies you of the violation by some reasonable means, this is the first time you have | ||
received notice of violation of this License (for any work) from that copyright holder, and you cure | ||
the violation prior to 30 days after your receipt of the notice. | ||
Termination of your rights under this section does not terminate the | ||
licenses of parties who have received copies or rights from you under | ||
this License. If your rights have been terminated and not permanently | ||
reinstated, you do not qualify to receive new licenses for the same | ||
material under section 10. | ||
Termination of your rights under this section does not terminate the licenses of parties who have | ||
received copies or rights from you under this License. If your rights have been terminated and not | ||
permanently reinstated, you do not qualify to receive new licenses for the same material under | ||
section 10. | ||
9. Acceptance Not Required for Having Copies. | ||
You are not required to accept this License in order to receive or | ||
run a copy of the Program. Ancillary propagation of a covered work | ||
occurring solely as a consequence of using peer-to-peer transmission | ||
to receive a copy likewise does not require acceptance. However, | ||
nothing other than this License grants you permission to propagate or | ||
modify any covered work. These actions infringe copyright if you do | ||
not accept this License. Therefore, by modifying or propagating a | ||
covered work, you indicate your acceptance of this License to do so. | ||
You are not required to accept this License in order to receive or run a copy of the Program. | ||
Ancillary propagation of a covered work occurring solely as a consequence of using peer-to-peer | ||
transmission to receive a copy likewise does not require acceptance. However, nothing other than | ||
this License grants you permission to propagate or modify any covered work. These actions infringe | ||
copyright if you do not accept this License. Therefore, by modifying or propagating a covered work, | ||
you indicate your acceptance of this License to do so. | ||
10. Automatic Licensing of Downstream Recipients. | ||
Each time you convey a covered work, the recipient automatically | ||
receives a license from the original licensors, to run, modify and | ||
propagate that work, subject to this License. You are not responsible | ||
for enforcing compliance by third parties with this License. | ||
Each time you convey a covered work, the recipient automatically receives a license from the | ||
original licensors, to run, modify and propagate that work, subject to this License. You are not | ||
responsible for enforcing compliance by third parties with this License. | ||
An "entity transaction" is a transaction transferring control of an | ||
organization, or substantially all assets of one, or subdividing an | ||
organization, or merging organizations. If propagation of a covered | ||
work results from an entity transaction, each party to that | ||
transaction who receives a copy of the work also receives whatever | ||
licenses to the work the party's predecessor in interest had or could | ||
give under the previous paragraph, plus a right to possession of the | ||
Corresponding Source of the work from the predecessor in interest, if | ||
the predecessor has it or can get it with reasonable efforts. | ||
An "entity transaction" is a transaction transferring control of an organization, or substantially | ||
all assets of one, or subdividing an organization, or merging organizations. If propagation of a | ||
covered work results from an entity transaction, each party to that transaction who receives a copy | ||
of the work also receives whatever licenses to the work the party's predecessor in interest had or | ||
could give under the previous paragraph, plus a right to possession of the Corresponding Source of | ||
the work from the predecessor in interest, if the predecessor has it or can get it with reasonable | ||
efforts. | ||
You may not impose any further restrictions on the exercise of the | ||
rights granted or affirmed under this License. For example, you may | ||
not impose a license fee, royalty, or other charge for exercise of | ||
rights granted under this License, and you may not initiate litigation | ||
(including a cross-claim or counterclaim in a lawsuit) alleging that | ||
any patent claim is infringed by making, using, selling, offering for | ||
sale, or importing the Program or any portion of it. | ||
You may not impose any further restrictions on the exercise of the rights granted or affirmed under | ||
this License. For example, you may not impose a license fee, royalty, or other charge for exercise | ||
of rights granted under this License, and you may not initiate litigation (including a cross-claim | ||
or counterclaim in a lawsuit) alleging that any patent claim is infringed by making, using, selling, | ||
offering for sale, or importing the Program or any portion of it. | ||
11. Patents. | ||
A "contributor" is a copyright holder who authorizes use under this | ||
License of the Program or a work on which the Program is based. The | ||
work thus licensed is called the contributor's "contributor version". | ||
A "contributor" is a copyright holder who authorizes use under this License of the Program or a work | ||
on which the Program is based. The work thus licensed is called the contributor's "contributor | ||
version". | ||
A contributor's "essential patent claims" are all patent claims | ||
owned or controlled by the contributor, whether already acquired or | ||
hereafter acquired, that would be infringed by some manner, permitted | ||
by this License, of making, using, or selling its contributor version, | ||
but do not include claims that would be infringed only as a | ||
consequence of further modification of the contributor version. For | ||
purposes of this definition, "control" includes the right to grant | ||
patent sublicenses in a manner consistent with the requirements of | ||
this License. | ||
A contributor's "essential patent claims" are all patent claims owned or controlled by the | ||
contributor, whether already acquired or hereafter acquired, that would be infringed by some manner, | ||
permitted by this License, of making, using, or selling its contributor version, but do not include | ||
claims that would be infringed only as a consequence of further modification of the contributor | ||
version. For purposes of this definition, "control" includes the right to grant patent sublicenses | ||
in a manner consistent with the requirements of this License. | ||
Each contributor grants you a non-exclusive, worldwide, royalty-free | ||
patent license under the contributor's essential patent claims, to | ||
make, use, sell, offer for sale, import and otherwise run, modify and | ||
propagate the contents of its contributor version. | ||
Each contributor grants you a non-exclusive, worldwide, royalty-free patent license under the | ||
contributor's essential patent claims, to make, use, sell, offer for sale, import and otherwise run, | ||
modify and propagate the contents of its contributor version. | ||
In the following three paragraphs, a "patent license" is any express | ||
agreement or commitment, however denominated, not to enforce a patent | ||
(such as an express permission to practice a patent or covenant not to | ||
sue for patent infringement). To "grant" such a patent license to a | ||
party means to make such an agreement or commitment not to enforce a | ||
patent against the party. | ||
In the following three paragraphs, a "patent license" is any express agreement or commitment, | ||
however denominated, not to enforce a patent (such as an express permission to practice a patent or | ||
covenant not to sue for patent infringement). To "grant" such a patent license to a party means to | ||
make such an agreement or commitment not to enforce a patent against the party. | ||
If you convey a covered work, knowingly relying on a patent license, | ||
and the Corresponding Source of the work is not available for anyone | ||
to copy, free of charge and under the terms of this License, through a | ||
publicly available network server or other readily accessible means, | ||
then you must either (1) cause the Corresponding Source to be so | ||
available, or (2) arrange to deprive yourself of the benefit of the | ||
patent license for this particular work, or (3) arrange, in a manner | ||
consistent with the requirements of this License, to extend the patent | ||
license to downstream recipients. "Knowingly relying" means you have | ||
actual knowledge that, but for the patent license, your conveying the | ||
covered work in a country, or your recipient's use of the covered work | ||
in a country, would infringe one or more identifiable patents in that | ||
country that you have reason to believe are valid. | ||
If you convey a covered work, knowingly relying on a patent license, and the Corresponding Source of | ||
the work is not available for anyone to copy, free of charge and under the terms of this License, | ||
through a publicly available network server or other readily accessible means, then you must either | ||
(1) cause the Corresponding Source to be so available, or (2) arrange to deprive yourself of the | ||
benefit of the patent license for this particular work, or (3) arrange, in a manner consistent with | ||
the requirements of this License, to extend the patent license to downstream recipients. "Knowingly | ||
relying" means you have actual knowledge that, but for the patent license, your conveying the | ||
covered work in a country, or your recipient's use of the covered work in a country, would infringe | ||
one or more identifiable patents in that country that you have reason to believe are valid. | ||
If, pursuant to or in connection with a single transaction or | ||
arrangement, you convey, or propagate by procuring conveyance of, a | ||
covered work, and grant a patent license to some of the parties | ||
receiving the covered work authorizing them to use, propagate, modify | ||
or convey a specific copy of the covered work, then the patent license | ||
you grant is automatically extended to all recipients of the covered | ||
work and works based on it. | ||
If, pursuant to or in connection with a single transaction or arrangement, you convey, or propagate | ||
by procuring conveyance of, a covered work, and grant a patent license to some of the parties | ||
receiving the covered work authorizing them to use, propagate, modify or convey a specific copy of | ||
the covered work, then the patent license you grant is automatically extended to all recipients of | ||
the covered work and works based on it. | ||
A patent license is "discriminatory" if it does not include within | ||
the scope of its coverage, prohibits the exercise of, or is | ||
conditioned on the non-exercise of one or more of the rights that are | ||
specifically granted under this License. You may not convey a covered | ||
work if you are a party to an arrangement with a third party that is | ||
in the business of distributing software, under which you make payment | ||
to the third party based on the extent of your activity of conveying | ||
the work, and under which the third party grants, to any of the | ||
parties who would receive the covered work from you, a discriminatory | ||
patent license (a) in connection with copies of the covered work | ||
conveyed by you (or copies made from those copies), or (b) primarily | ||
for and in connection with specific products or compilations that | ||
contain the covered work, unless you entered into that arrangement, | ||
or that patent license was granted, prior to 28 March 2007. | ||
A patent license is "discriminatory" if it does not include within the scope of its coverage, | ||
prohibits the exercise of, or is conditioned on the non-exercise of one or more of the rights that | ||
are specifically granted under this License. You may not convey a covered work if you are a party to | ||
an arrangement with a third party that is in the business of distributing software, under which you | ||
make payment to the third party based on the extent of your activity of conveying the work, and | ||
under which the third party grants, to any of the parties who would receive the covered work from | ||
you, a discriminatory patent license (a) in connection with copies of the covered work conveyed by | ||
you (or copies made from those copies), or (b) primarily for and in connection with specific | ||
products or compilations that contain the covered work, unless you entered into that arrangement, or | ||
that patent license was granted, prior to 28 March 2007. | ||
Nothing in this License shall be construed as excluding or limiting | ||
any implied license or other defenses to infringement that may | ||
otherwise be available to you under applicable patent law. | ||
Nothing in this License shall be construed as excluding or limiting any implied license or other | ||
defenses to infringement that may otherwise be available to you under applicable patent law. | ||
12. No Surrender of Others' Freedom. | ||
If conditions are imposed on you (whether by court order, agreement or | ||
otherwise) that contradict the conditions of this License, they do not | ||
excuse you from the conditions of this License. If you cannot convey a | ||
covered work so as to satisfy simultaneously your obligations under this | ||
License and any other pertinent obligations, then as a consequence you may | ||
not convey it at all. For example, if you agree to terms that obligate you | ||
to collect a royalty for further conveying from those to whom you convey | ||
the Program, the only way you could satisfy both those terms and this | ||
License would be to refrain entirely from conveying the Program. | ||
If conditions are imposed on you (whether by court order, agreement or otherwise) that contradict | ||
the conditions of this License, they do not excuse you from the conditions of this License. If you | ||
cannot convey a covered work so as to satisfy simultaneously your obligations under this License and | ||
any other pertinent obligations, then as a consequence you may not convey it at all. For example, if | ||
you agree to terms that obligate you to collect a royalty for further conveying from those to whom | ||
you convey the Program, the only way you could satisfy both those terms and this License would be to | ||
refrain entirely from conveying the Program. | ||
13. Use with the GNU Affero General Public License. | ||
Notwithstanding any other provision of this License, you have | ||
permission to link or combine any covered work with a work licensed | ||
under version 3 of the GNU Affero General Public License into a single | ||
combined work, and to convey the resulting work. The terms of this | ||
License will continue to apply to the part which is the covered work, | ||
but the special requirements of the GNU Affero General Public License, | ||
section 13, concerning interaction through a network will apply to the | ||
combination as such. | ||
Notwithstanding any other provision of this License, you have permission to link or combine any | ||
covered work with a work licensed under version 3 of the GNU Affero General Public License into a | ||
single combined work, and to convey the resulting work. The terms of this License will continue to | ||
apply to the part which is the covered work, but the special requirements of the GNU Affero General | ||
Public License, section 13, concerning interaction through a network will apply to the combination | ||
as such. | ||
14. Revised Versions of this License. | ||
The Free Software Foundation may publish revised and/or new versions of | ||
the GNU General Public License from time to time. Such new versions will | ||
be similar in spirit to the present version, but may differ in detail to | ||
address new problems or concerns. | ||
The Free Software Foundation may publish revised and/or new versions of the GNU General Public | ||
License from time to time. Such new versions will be similar in spirit to the present version, but | ||
may differ in detail to address new problems or concerns. | ||
Each version is given a distinguishing version number. If the | ||
Program specifies that a certain numbered version of the GNU General | ||
Public License "or any later version" applies to it, you have the | ||
option of following the terms and conditions either of that numbered | ||
version or of any later version published by the Free Software | ||
Foundation. If the Program does not specify a version number of the | ||
GNU General Public License, you may choose any version ever published | ||
by the Free Software Foundation. | ||
Each version is given a distinguishing version number. If the Program specifies that a certain | ||
numbered version of the GNU General Public License "or any later version" applies to it, you have | ||
the option of following the terms and conditions either of that numbered version or of any later | ||
version published by the Free Software Foundation. If the Program does not specify a version number | ||
of the GNU General Public License, you may choose any version ever published by the Free Software | ||
Foundation. | ||
If the Program specifies that a proxy can decide which future | ||
versions of the GNU General Public License can be used, that proxy's | ||
public statement of acceptance of a version permanently authorizes you | ||
to choose that version for the Program. | ||
If the Program specifies that a proxy can decide which future versions of the GNU General Public | ||
License can be used, that proxy's public statement of acceptance of a version permanently authorizes | ||
you to choose that version for the Program. | ||
Later license versions may give you additional or different | ||
permissions. However, no additional obligations are imposed on any | ||
author or copyright holder as a result of your choosing to follow a | ||
Later license versions may give you additional or different permissions. However, no additional | ||
obligations are imposed on any author or copyright holder as a result of your choosing to follow a | ||
later version. | ||
@@ -595,31 +487,25 @@ | ||
THERE IS NO WARRANTY FOR THE PROGRAM, TO THE EXTENT PERMITTED BY | ||
APPLICABLE LAW. EXCEPT WHEN OTHERWISE STATED IN WRITING THE COPYRIGHT | ||
HOLDERS AND/OR OTHER PARTIES PROVIDE THE PROGRAM "AS IS" WITHOUT WARRANTY | ||
OF ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING, BUT NOT LIMITED TO, | ||
THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR | ||
PURPOSE. THE ENTIRE RISK AS TO THE QUALITY AND PERFORMANCE OF THE PROGRAM | ||
IS WITH YOU. SHOULD THE PROGRAM PROVE DEFECTIVE, YOU ASSUME THE COST OF | ||
ALL NECESSARY SERVICING, REPAIR OR CORRECTION. | ||
THERE IS NO WARRANTY FOR THE PROGRAM, TO THE EXTENT PERMITTED BY APPLICABLE LAW. EXCEPT WHEN | ||
OTHERWISE STATED IN WRITING THE COPYRIGHT HOLDERS AND/OR OTHER PARTIES PROVIDE THE PROGRAM "AS IS" | ||
WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING, BUT NOT LIMITED TO, THE | ||
IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. THE ENTIRE RISK AS TO | ||
THE QUALITY AND PERFORMANCE OF THE PROGRAM IS WITH YOU. SHOULD THE PROGRAM PROVE DEFECTIVE, YOU | ||
ASSUME THE COST OF ALL NECESSARY SERVICING, REPAIR OR CORRECTION. | ||
16. Limitation of Liability. | ||
IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN WRITING | ||
WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MODIFIES AND/OR CONVEYS | ||
THE PROGRAM AS PERMITTED ABOVE, BE LIABLE TO YOU FOR DAMAGES, INCLUDING ANY | ||
GENERAL, SPECIAL, INCIDENTAL OR CONSEQUENTIAL DAMAGES ARISING OUT OF THE | ||
USE OR INABILITY TO USE THE PROGRAM (INCLUDING BUT NOT LIMITED TO LOSS OF | ||
DATA OR DATA BEING RENDERED INACCURATE OR LOSSES SUSTAINED BY YOU OR THIRD | ||
PARTIES OR A FAILURE OF THE PROGRAM TO OPERATE WITH ANY OTHER PROGRAMS), | ||
EVEN IF SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE POSSIBILITY OF | ||
SUCH DAMAGES. | ||
IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN WRITING WILL ANY COPYRIGHT HOLDER, OR | ||
ANY OTHER PARTY WHO MODIFIES AND/OR CONVEYS THE PROGRAM AS PERMITTED ABOVE, BE LIABLE TO YOU FOR | ||
DAMAGES, INCLUDING ANY GENERAL, SPECIAL, INCIDENTAL OR CONSEQUENTIAL DAMAGES ARISING OUT OF THE USE | ||
OR INABILITY TO USE THE PROGRAM (INCLUDING BUT NOT LIMITED TO LOSS OF DATA OR DATA BEING RENDERED | ||
INACCURATE OR LOSSES SUSTAINED BY YOU OR THIRD PARTIES OR A FAILURE OF THE PROGRAM TO OPERATE WITH | ||
ANY OTHER PROGRAMS), EVEN IF SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE POSSIBILITY OF SUCH | ||
DAMAGES. | ||
17. Interpretation of Sections 15 and 16. | ||
If the disclaimer of warranty and limitation of liability provided | ||
above cannot be given local legal effect according to their terms, | ||
reviewing courts shall apply local law that most closely approximates | ||
an absolute waiver of all civil liability in connection with the | ||
Program, unless a warranty or assumption of liability accompanies a | ||
copy of the Program in return for a fee. | ||
If the disclaimer of warranty and limitation of liability provided above cannot be given local legal | ||
effect according to their terms, reviewing courts shall apply local law that most closely | ||
approximates an absolute waiver of all civil liability in connection with the Program, unless a | ||
warranty or assumption of liability accompanies a copy of the Program in return for a fee. | ||
@@ -626,0 +512,0 @@ @untidy/thetvdb |
{ | ||
"name": "@untidy/thetvdb", | ||
"description": "fully-typed client for accessing the TheTVDB API V4 for Node.js", | ||
"version": "0.0.2", | ||
"version": "0.0.4", | ||
"type": "module", | ||
"types": "./dist/index.d.ts", | ||
"exports": "./dist/index.js", | ||
@@ -17,10 +18,10 @@ "files": [ | ||
"@changesets/cli": "^2.26.1", | ||
"@swc/core": "^1.3.49", | ||
"@swc/jest": "^0.2.24", | ||
"@types/jest": "^29.5.0", | ||
"@types/node": "^18.15.11", | ||
"@typescript-eslint/eslint-plugin": "^5.58.0", | ||
"@typescript-eslint/parser": "^5.58.0", | ||
"@swc/core": "^1.3.57", | ||
"@swc/jest": "^0.2.26", | ||
"@types/jest": "^29.5.1", | ||
"@types/node": "^20.1.1", | ||
"@typescript-eslint/eslint-plugin": "^5.59.5", | ||
"@typescript-eslint/parser": "^5.59.5", | ||
"dotenv": "^16.0.3", | ||
"eslint": "^8.38.0", | ||
"eslint": "^8.40.0", | ||
"eslint-config-prettier": "^8.8.0", | ||
@@ -34,6 +35,6 @@ "eslint-config-standard-with-typescript": "^34.0.1", | ||
"jest": "^29.5.0", | ||
"prettier": "^2.8.7", | ||
"tsx": "^3.12.6", | ||
"prettier": "^2.8.8", | ||
"tsx": "^3.12.7", | ||
"typescript": "^5.0.4", | ||
"undici": "^5.21.2" | ||
"undici": "^5.22.0" | ||
}, | ||
@@ -52,3 +53,3 @@ "engines": { | ||
"scripts": { | ||
"dev": "cd src/ && tsx playground.ts", | ||
"dev": "tsx src/playground.ts", | ||
"format": "prettier --cache -w .", | ||
@@ -61,5 +62,5 @@ "lint": "eslint . --cache --cache-location \"./node_modules/.cache/eslint/\"", | ||
"test": "jest", | ||
"test:coverage": "jest --coverage=true", | ||
"test:coverage": "jest --coverage", | ||
"release": "pnpm run build && changeset publish" | ||
} | ||
} |
@@ -5,16 +5,43 @@ # @untidy/thetvdb | ||
`@untidy/thetvdb` is a lightweight and fully-typed client for accessing the TheTVDB API V4 for Node.js. It provides a simple and intuitive interface for querying multiple API endpoints. | ||
A lightweight and fully-typed client for accessing the TheTVDB API V4 for Node.js. This package | ||
provides a simple and intuitive interface for querying multiple API endpoints. | ||
> **Note** | ||
> `@untidy/thetvdb` is an unofficial package and is not affiliated with or endorsed by TheTVDB. However, it uses the official TheTVDB API endpoints to retrieve information. | ||
> This is an unofficial package and is not affiliated with or endorsed by TheTVDB. However, it uses | ||
> the official TheTVDB API endpoints to retrieve information. | ||
## :sparkles: Features | ||
- Access multiple endpoints of the TheTVDB API [(check supported endpoints)](./docs/endpoints.md) | ||
- Access multiple endpoints of the TheTVDB API | ||
[(check supported endpoints)](https://github.com/falsepopsky/thetvdb/blob/main/docs/endpoints.md) | ||
- Built with TypeScript for full typing support | ||
- Uses the native `fetch` module from Node.js for making HTTP requests | ||
- ESM only | ||
## :package: Install | ||
You can install `@untidy/thetvdb` package using your preferred package manager: | ||
With npm: | ||
``` | ||
npm install @untidy/thetvdb | ||
``` | ||
With yarn: | ||
``` | ||
yarn add @untidy/thetvdb | ||
``` | ||
With pnpm: | ||
``` | ||
pnpm add @untidy/thetvdb | ||
``` | ||
## :beginner: Usage | ||
`@untidy/thetvdb` is easy to use, simply create an instance of the class with your API token, and call any of the available methods to retrieve data from the TheTVDB API. | ||
`@untidy/thetvdb` is easy to use, simply create an instance of the class with your API token, and | ||
call any of the available methods to retrieve data from the TheTVDB API. | ||
@@ -28,5 +55,5 @@ Example usage: | ||
const client = new TheTVDB(token); | ||
const { status, result } = await client.getCharacter('64140522'); | ||
const { data } = await client.getCharacter('64140522'); | ||
console.log(status, result); | ||
console.log(data); | ||
``` | ||
@@ -36,8 +63,10 @@ | ||
- API | ||
- [API](https://github.com/falsepopsky/thetvdb/blob/main/docs/api.md) | ||
- [Supported endpoints](https://github.com/falsepopsky/thetvdb/blob/main/docs/endpoints.md) | ||
- Examples | ||
- [Examples](https://github.com/falsepopsky/thetvdb/blob/main/docs/examples.md) | ||
## :scroll: License | ||
[GPL-3.0-or-later](https://github.com/falsepopsky/thetvdb/blob/main/LICENSE.md) | ||
`@untidy/thetvdb` is licensed under the | ||
[GPL-3.0-or-later](https://github.com/falsepopsky/thetvdb/blob/main/LICENSE.md) license - © 2023 | ||
[falsepopsky](https://github.com/falsepopsky). |
License Policy Violation
LicenseThis package is not allowed per your license policy. Review the package's license to ensure compliance.
Found 1 instance in 1 package
License Policy Violation
LicenseThis package is not allowed per your license policy. Review the package's license to ensure compliance.
Found 1 instance in 1 package
Environment variable access
Supply chain riskPackage accesses environment variables, which may be a sign of credential stuffing or data theft.
Found 1 instance in 1 package
48475
362
70
0
11