@zivue/zuuid 0.1.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/CHANGELOG.md +10 -0
- package/LICENSE +21 -0
- package/README.md +368 -0
- package/dist/client.d.ts +29 -0
- package/dist/client.d.ts.map +1 -0
- package/dist/client.js +39 -0
- package/dist/entity.d.ts +106 -0
- package/dist/entity.d.ts.map +1 -0
- package/dist/entity.js +101 -0
- package/dist/hash.d.ts +3 -0
- package/dist/hash.d.ts.map +1 -0
- package/dist/hash.js +9 -0
- package/dist/identity.d.ts +14 -0
- package/dist/identity.d.ts.map +1 -0
- package/dist/identity.js +39 -0
- package/dist/index.d.ts +9 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +8 -0
- package/dist/providers/tmdb/client.d.ts +30 -0
- package/dist/providers/tmdb/client.d.ts.map +1 -0
- package/dist/providers/tmdb/client.js +92 -0
- package/dist/providers/tmdb/constants.d.ts +5 -0
- package/dist/providers/tmdb/constants.d.ts.map +1 -0
- package/dist/providers/tmdb/constants.js +4 -0
- package/dist/providers/tmdb/index.d.ts +7 -0
- package/dist/providers/tmdb/index.d.ts.map +1 -0
- package/dist/providers/tmdb/index.js +6 -0
- package/dist/providers/tmdb/movie.d.ts +164 -0
- package/dist/providers/tmdb/movie.d.ts.map +1 -0
- package/dist/providers/tmdb/movie.js +537 -0
- package/dist/providers/tmdb/person.d.ts +84 -0
- package/dist/providers/tmdb/person.d.ts.map +1 -0
- package/dist/providers/tmdb/person.js +345 -0
- package/dist/providers/tmdb/tv.d.ts +181 -0
- package/dist/providers/tmdb/tv.d.ts.map +1 -0
- package/dist/providers/tmdb/tv.js +522 -0
- package/dist/providers/tmdb/types.d.ts +36 -0
- package/dist/providers/tmdb/types.d.ts.map +1 -0
- package/dist/providers/tmdb/types.js +1 -0
- package/dist/source.d.ts +35 -0
- package/dist/source.d.ts.map +1 -0
- package/dist/source.js +53 -0
- package/dist/types.d.ts +5 -0
- package/dist/types.d.ts.map +1 -0
- package/dist/types.js +1 -0
- package/dist/uuid.d.ts +3 -0
- package/dist/uuid.d.ts.map +1 -0
- package/dist/uuid.js +32 -0
- package/package.json +72 -0
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"hash.d.ts","sourceRoot":"","sources":["../src/hash.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,YAAY,CAAC;AAE5C,wBAAsB,iBAAiB,CAAC,OAAO,EAAE,SAAS,GAAG,OAAO,CAAC,MAAM,CAAC,CAE3E"}
|
package/dist/hash.js
ADDED
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
export async function stablePayloadHash(payload) {
|
|
2
|
+
return sha256Hex(new TextEncoder().encode(JSON.stringify(payload)));
|
|
3
|
+
}
|
|
4
|
+
async function sha256Hex(bytes) {
|
|
5
|
+
const digestInput = new ArrayBuffer(bytes.byteLength);
|
|
6
|
+
new Uint8Array(digestInput).set(bytes);
|
|
7
|
+
const digest = new Uint8Array(await globalThis.crypto.subtle.digest("SHA-256", digestInput));
|
|
8
|
+
return Array.from(digest, (byte) => byte.toString(16).padStart(2, "0")).join("");
|
|
9
|
+
}
|
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
export type ProviderName = "musicbrainz" | "gamesdb" | "openlibrary" | "tmdb" | "jikan" | "comicvine" | "setlistfm" | "ticketmaster" | "podcast" | "openstreetmap" | "wger" | "openfoodfacts" | "goodreads" | "rss" | "web";
|
|
2
|
+
export type ProviderNamespace = {
|
|
3
|
+
provider: ProviderName;
|
|
4
|
+
namespace: string;
|
|
5
|
+
};
|
|
6
|
+
export type ProviderZuuidInput = {
|
|
7
|
+
provider: string;
|
|
8
|
+
category: string;
|
|
9
|
+
externalId: string | number;
|
|
10
|
+
};
|
|
11
|
+
export declare const PROVIDER_NAMESPACES: ProviderNamespace[];
|
|
12
|
+
export declare function providerNamespace(provider: string): string | undefined;
|
|
13
|
+
export declare function providerZuuid(input: ProviderZuuidInput): Promise<string>;
|
|
14
|
+
//# sourceMappingURL=identity.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"identity.d.ts","sourceRoot":"","sources":["../src/identity.ts"],"names":[],"mappings":"AAEA,MAAM,MAAM,YAAY,GACpB,aAAa,GACb,SAAS,GACT,aAAa,GACb,MAAM,GACN,OAAO,GACP,WAAW,GACX,WAAW,GACX,cAAc,GACd,SAAS,GACT,eAAe,GACf,MAAM,GACN,eAAe,GACf,WAAW,GACX,KAAK,GACL,KAAK,CAAC;AAEV,MAAM,MAAM,iBAAiB,GAAG;IAC9B,QAAQ,EAAE,YAAY,CAAC;IACvB,SAAS,EAAE,MAAM,CAAC;CACnB,CAAC;AAEF,MAAM,MAAM,kBAAkB,GAAG;IAC/B,QAAQ,EAAE,MAAM,CAAC;IACjB,QAAQ,EAAE,MAAM,CAAC;IACjB,UAAU,EAAE,MAAM,GAAG,MAAM,CAAC;CAC7B,CAAC;AAEF,eAAO,MAAM,mBAAmB,EAAE,iBAAiB,EAgBlD,CAAC;AAEF,wBAAgB,iBAAiB,CAAC,QAAQ,EAAE,MAAM,GAAG,MAAM,GAAG,SAAS,CAEtE;AAED,wBAAsB,aAAa,CAAC,KAAK,EAAE,kBAAkB,GAAG,OAAO,CAAC,MAAM,CAAC,CAkB9E"}
|
package/dist/identity.js
ADDED
|
@@ -0,0 +1,39 @@
|
|
|
1
|
+
import { uuidV5 } from "./uuid.js";
|
|
2
|
+
export const PROVIDER_NAMESPACES = [
|
|
3
|
+
{ provider: "musicbrainz", namespace: "9e4a2c71-f528-4d83-b710-a40c3e917f2a" },
|
|
4
|
+
{ provider: "gamesdb", namespace: "7ca1b820-aebc-41d2-90c5-00d05fe440d9" },
|
|
5
|
+
{ provider: "openlibrary", namespace: "3ea1c742-b50f-4a93-912d-7c8e1fa364d1" },
|
|
6
|
+
{ provider: "tmdb", namespace: "6ba7b810-9dad-11d1-80b4-00c04fd430c8" },
|
|
7
|
+
{ provider: "jikan", namespace: "7ca8b920-aebe-22e2-91c5-01d15ee541d9" },
|
|
8
|
+
{ provider: "comicvine", namespace: "8db9ca31-bfcf-33f3-a2d6-12e26ff652ea" },
|
|
9
|
+
{ provider: "setlistfm", namespace: "9ecadb42-c0d0-4404-b3e7-23f3700763fb" },
|
|
10
|
+
{ provider: "ticketmaster", namespace: "afdbec53-d1e1-5515-c4f8-34048118740c" },
|
|
11
|
+
{ provider: "podcast", namespace: "befb0c64-e2f2-6626-d509-45159229851d" },
|
|
12
|
+
{ provider: "openstreetmap", namespace: "cf0c1d75-f303-7737-e60a-5626a33a962e" },
|
|
13
|
+
{ provider: "wger", namespace: "3e8fa214-c75b-4d91-a36e-11b27af8634c" },
|
|
14
|
+
{ provider: "openfoodfacts", namespace: "b472d18a-5e3f-497c-821d-9a0e55c67b31" },
|
|
15
|
+
{ provider: "goodreads", namespace: "913a7c05-e48b-4d3a-a16f-b7520cd9834e" },
|
|
16
|
+
{ provider: "rss", namespace: "2540ad68-f1e4-4a1d-98c5-76f08f499121" },
|
|
17
|
+
{ provider: "web", namespace: "3f7b7add-b417-4892-862c-2db2df12f981" }
|
|
18
|
+
];
|
|
19
|
+
export function providerNamespace(provider) {
|
|
20
|
+
return PROVIDER_NAMESPACES.find((entry) => entry.provider === provider)?.namespace;
|
|
21
|
+
}
|
|
22
|
+
export async function providerZuuid(input) {
|
|
23
|
+
const namespace = providerNamespace(input.provider);
|
|
24
|
+
if (!namespace) {
|
|
25
|
+
throw new Error(`unknown provider namespace: ${input.provider}`);
|
|
26
|
+
}
|
|
27
|
+
const category = normalizeKeyPart(input.category);
|
|
28
|
+
if (!category) {
|
|
29
|
+
throw new Error("category must not be empty");
|
|
30
|
+
}
|
|
31
|
+
const externalId = String(input.externalId).trim();
|
|
32
|
+
if (!externalId) {
|
|
33
|
+
throw new Error("external id must not be empty");
|
|
34
|
+
}
|
|
35
|
+
return uuidV5(`${category}:${externalId}`, namespace);
|
|
36
|
+
}
|
|
37
|
+
function normalizeKeyPart(value) {
|
|
38
|
+
return value.trim().toLowerCase();
|
|
39
|
+
}
|
package/dist/index.d.ts
ADDED
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
export * from "./client.js";
|
|
2
|
+
export * from "./hash.js";
|
|
3
|
+
export * from "./entity.js";
|
|
4
|
+
export * from "./identity.js";
|
|
5
|
+
export * from "./providers/tmdb/index.js";
|
|
6
|
+
export * from "./source.js";
|
|
7
|
+
export * from "./types.js";
|
|
8
|
+
export * from "./uuid.js";
|
|
9
|
+
//# sourceMappingURL=index.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,cAAc,aAAa,CAAC;AAC5B,cAAc,WAAW,CAAC;AAC1B,cAAc,aAAa,CAAC;AAC5B,cAAc,eAAe,CAAC;AAC9B,cAAc,2BAA2B,CAAC;AAC1C,cAAc,aAAa,CAAC;AAC5B,cAAc,YAAY,CAAC;AAC3B,cAAc,WAAW,CAAC"}
|
package/dist/index.js
ADDED
|
@@ -0,0 +1,30 @@
|
|
|
1
|
+
import type { SearchResponse, ZuuidData, ZuuidSearchResult } from "../../entity.js";
|
|
2
|
+
import type { SourceRecord } from "../../source.js";
|
|
3
|
+
import { type FetchTmdbMovieInput } from "./movie.js";
|
|
4
|
+
import { type FetchTmdbPersonInput } from "./person.js";
|
|
5
|
+
import { type FetchTmdbTvInput } from "./tv.js";
|
|
6
|
+
import type { TmdbProviderOptions, TmdbSearchInput, TmdbTransformOptions } from "./types.js";
|
|
7
|
+
export declare class TmdbProvider {
|
|
8
|
+
readonly apiBase: string;
|
|
9
|
+
readonly posterBaseUrl: string | null;
|
|
10
|
+
readonly backdropBaseUrl: string | null;
|
|
11
|
+
readonly language: string;
|
|
12
|
+
private readonly fetchImpl;
|
|
13
|
+
private readonly credential;
|
|
14
|
+
constructor(options: TmdbProviderOptions);
|
|
15
|
+
getJson<T>(path: string, params: Record<string, string>): Promise<T | undefined>;
|
|
16
|
+
fetchMovieSourceRecord(input: FetchTmdbMovieInput): Promise<SourceRecord | undefined>;
|
|
17
|
+
fetchMovie(input: FetchTmdbMovieInput): Promise<ZuuidData | undefined>;
|
|
18
|
+
searchMovieSourceRecords(input: TmdbSearchInput): Promise<SearchResponse<SourceRecord>>;
|
|
19
|
+
searchMovies(input: TmdbSearchInput): Promise<SearchResponse<ZuuidSearchResult>>;
|
|
20
|
+
fetchTvSourceRecord(input: FetchTmdbTvInput): Promise<SourceRecord | undefined>;
|
|
21
|
+
fetchTv(input: FetchTmdbTvInput): Promise<ZuuidData | undefined>;
|
|
22
|
+
searchTvSourceRecords(input: TmdbSearchInput): Promise<SearchResponse<SourceRecord>>;
|
|
23
|
+
searchTv(input: TmdbSearchInput): Promise<SearchResponse<ZuuidSearchResult>>;
|
|
24
|
+
fetchPersonSourceRecord(input: FetchTmdbPersonInput): Promise<SourceRecord | undefined>;
|
|
25
|
+
fetchPerson(input: FetchTmdbPersonInput): Promise<ZuuidData | undefined>;
|
|
26
|
+
searchPersonSourceRecords(input: TmdbSearchInput): Promise<SearchResponse<SourceRecord>>;
|
|
27
|
+
searchPeople(input: TmdbSearchInput): Promise<SearchResponse<ZuuidSearchResult>>;
|
|
28
|
+
transformOptions(): TmdbTransformOptions;
|
|
29
|
+
}
|
|
30
|
+
//# sourceMappingURL=client.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"client.d.ts","sourceRoot":"","sources":["../../../src/providers/tmdb/client.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,cAAc,EAAE,SAAS,EAAE,iBAAiB,EAAE,MAAM,iBAAiB,CAAC;AACpF,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,iBAAiB,CAAC;AAEpD,OAAO,EAA8E,KAAK,mBAAmB,EAAsB,MAAM,YAAY,CAAC;AACtJ,OAAO,EAAgF,KAAK,oBAAoB,EAAuB,MAAM,aAAa,CAAC;AAC3J,OAAO,EAAoE,KAAK,gBAAgB,EAAmB,MAAM,SAAS,CAAC;AACnI,OAAO,KAAK,EAA6B,mBAAmB,EAAE,eAAe,EAAE,oBAAoB,EAAE,MAAM,YAAY,CAAC;AAExH,qBAAa,YAAY;IACvB,QAAQ,CAAC,OAAO,EAAE,MAAM,CAAC;IACzB,QAAQ,CAAC,aAAa,EAAE,MAAM,GAAG,IAAI,CAAC;IACtC,QAAQ,CAAC,eAAe,EAAE,MAAM,GAAG,IAAI,CAAC;IACxC,QAAQ,CAAC,QAAQ,EAAE,MAAM,CAAC;IAE1B,OAAO,CAAC,QAAQ,CAAC,SAAS,CAAY;IACtC,OAAO,CAAC,QAAQ,CAAC,UAAU,CAAiB;gBAEhC,OAAO,EAAE,mBAAmB;IAYlC,OAAO,CAAC,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,GAAG,OAAO,CAAC,CAAC,GAAG,SAAS,CAAC;IA2BhF,sBAAsB,CAAC,KAAK,EAAE,mBAAmB,GAAG,OAAO,CAAC,YAAY,GAAG,SAAS,CAAC;IAIrF,UAAU,CAAC,KAAK,EAAE,mBAAmB,GAAG,OAAO,CAAC,SAAS,GAAG,SAAS,CAAC;IAKtE,wBAAwB,CAAC,KAAK,EAAE,eAAe,GAAG,OAAO,CAAC,cAAc,CAAC,YAAY,CAAC,CAAC;IAIvF,YAAY,CAAC,KAAK,EAAE,eAAe,GAAG,OAAO,CAAC,cAAc,CAAC,iBAAiB,CAAC,CAAC;IAIhF,mBAAmB,CAAC,KAAK,EAAE,gBAAgB,GAAG,OAAO,CAAC,YAAY,GAAG,SAAS,CAAC;IAI/E,OAAO,CAAC,KAAK,EAAE,gBAAgB,GAAG,OAAO,CAAC,SAAS,GAAG,SAAS,CAAC;IAKhE,qBAAqB,CAAC,KAAK,EAAE,eAAe,GAAG,OAAO,CAAC,cAAc,CAAC,YAAY,CAAC,CAAC;IAIpF,QAAQ,CAAC,KAAK,EAAE,eAAe,GAAG,OAAO,CAAC,cAAc,CAAC,iBAAiB,CAAC,CAAC;IAI5E,uBAAuB,CAAC,KAAK,EAAE,oBAAoB,GAAG,OAAO,CAAC,YAAY,GAAG,SAAS,CAAC;IAIvF,WAAW,CAAC,KAAK,EAAE,oBAAoB,GAAG,OAAO,CAAC,SAAS,GAAG,SAAS,CAAC;IAKxE,yBAAyB,CAAC,KAAK,EAAE,eAAe,GAAG,OAAO,CAAC,cAAc,CAAC,YAAY,CAAC,CAAC;IAIxF,YAAY,CAAC,KAAK,EAAE,eAAe,GAAG,OAAO,CAAC,cAAc,CAAC,iBAAiB,CAAC,CAAC;IAItF,gBAAgB,IAAI,oBAAoB;CAMzC"}
|
|
@@ -0,0 +1,92 @@
|
|
|
1
|
+
import { TMDB_API_BASE, TMDB_BACKDROP_BASE_URL, TMDB_POSTER_BASE_URL } from "./constants.js";
|
|
2
|
+
import { fetchTmdbMovieSourceRecord, searchTmdbMovieSourceRecords, searchTmdbMovies, transformTmdbMovie } from "./movie.js";
|
|
3
|
+
import { fetchTmdbPersonSourceRecord, searchTmdbPeople, searchTmdbPersonSourceRecords, transformTmdbPerson } from "./person.js";
|
|
4
|
+
import { fetchTmdbTvSourceRecord, searchTmdbTv, searchTmdbTvSourceRecords, transformTmdbTv } from "./tv.js";
|
|
5
|
+
export class TmdbProvider {
|
|
6
|
+
apiBase;
|
|
7
|
+
posterBaseUrl;
|
|
8
|
+
backdropBaseUrl;
|
|
9
|
+
language;
|
|
10
|
+
fetchImpl;
|
|
11
|
+
credential;
|
|
12
|
+
constructor(options) {
|
|
13
|
+
this.apiBase = options.apiBase ?? TMDB_API_BASE;
|
|
14
|
+
this.fetchImpl = options.fetch ?? globalThis.fetch.bind(globalThis);
|
|
15
|
+
this.posterBaseUrl = options.posterBaseUrl === undefined ? TMDB_POSTER_BASE_URL : options.posterBaseUrl;
|
|
16
|
+
this.backdropBaseUrl = options.backdropBaseUrl === undefined ? TMDB_BACKDROP_BASE_URL : options.backdropBaseUrl;
|
|
17
|
+
this.language = options.language ?? "en-US";
|
|
18
|
+
this.credential =
|
|
19
|
+
options.bearerToken !== undefined
|
|
20
|
+
? { bearerToken: options.bearerToken.trim() }
|
|
21
|
+
: { apiKey: options.apiKey.trim() };
|
|
22
|
+
}
|
|
23
|
+
async getJson(path, params) {
|
|
24
|
+
const url = new URL(`${this.apiBase.replace(/\/$/, "")}/${path.replace(/^\//, "")}`);
|
|
25
|
+
for (const [key, value] of Object.entries(params)) {
|
|
26
|
+
url.searchParams.set(key, value);
|
|
27
|
+
}
|
|
28
|
+
const headers = new Headers();
|
|
29
|
+
headers.set("accept", "application/json");
|
|
30
|
+
if (this.credential.apiKey !== undefined) {
|
|
31
|
+
url.searchParams.set("api_key", this.credential.apiKey);
|
|
32
|
+
}
|
|
33
|
+
else {
|
|
34
|
+
headers.set("authorization", `Bearer ${this.credential.bearerToken}`);
|
|
35
|
+
}
|
|
36
|
+
const response = await this.fetchImpl(url, { headers });
|
|
37
|
+
if (response.status === 404) {
|
|
38
|
+
return undefined;
|
|
39
|
+
}
|
|
40
|
+
if (!response.ok) {
|
|
41
|
+
const body = await response.text().catch(() => "");
|
|
42
|
+
const authMode = this.credential.apiKey !== undefined ? "api_key" : "bearer";
|
|
43
|
+
throw new Error(`TMDB API returned ${response.status} using ${authMode}: ${body}`);
|
|
44
|
+
}
|
|
45
|
+
return response.json();
|
|
46
|
+
}
|
|
47
|
+
async fetchMovieSourceRecord(input) {
|
|
48
|
+
return fetchTmdbMovieSourceRecord(this, input);
|
|
49
|
+
}
|
|
50
|
+
async fetchMovie(input) {
|
|
51
|
+
const source = await this.fetchMovieSourceRecord(input);
|
|
52
|
+
return source ? transformTmdbMovie(source, this.transformOptions()) : undefined;
|
|
53
|
+
}
|
|
54
|
+
async searchMovieSourceRecords(input) {
|
|
55
|
+
return searchTmdbMovieSourceRecords(this, input);
|
|
56
|
+
}
|
|
57
|
+
async searchMovies(input) {
|
|
58
|
+
return searchTmdbMovies(this, input, this.transformOptions());
|
|
59
|
+
}
|
|
60
|
+
async fetchTvSourceRecord(input) {
|
|
61
|
+
return fetchTmdbTvSourceRecord(this, input);
|
|
62
|
+
}
|
|
63
|
+
async fetchTv(input) {
|
|
64
|
+
const source = await this.fetchTvSourceRecord(input);
|
|
65
|
+
return source ? transformTmdbTv(source, this.transformOptions()) : undefined;
|
|
66
|
+
}
|
|
67
|
+
async searchTvSourceRecords(input) {
|
|
68
|
+
return searchTmdbTvSourceRecords(this, input);
|
|
69
|
+
}
|
|
70
|
+
async searchTv(input) {
|
|
71
|
+
return searchTmdbTv(this, input, this.transformOptions());
|
|
72
|
+
}
|
|
73
|
+
async fetchPersonSourceRecord(input) {
|
|
74
|
+
return fetchTmdbPersonSourceRecord(this, input);
|
|
75
|
+
}
|
|
76
|
+
async fetchPerson(input) {
|
|
77
|
+
const source = await this.fetchPersonSourceRecord(input);
|
|
78
|
+
return source ? transformTmdbPerson(source, this.transformOptions()) : undefined;
|
|
79
|
+
}
|
|
80
|
+
async searchPersonSourceRecords(input) {
|
|
81
|
+
return searchTmdbPersonSourceRecords(this, input);
|
|
82
|
+
}
|
|
83
|
+
async searchPeople(input) {
|
|
84
|
+
return searchTmdbPeople(this, input, this.transformOptions());
|
|
85
|
+
}
|
|
86
|
+
transformOptions() {
|
|
87
|
+
return {
|
|
88
|
+
posterBaseUrl: this.posterBaseUrl,
|
|
89
|
+
backdropBaseUrl: this.backdropBaseUrl
|
|
90
|
+
};
|
|
91
|
+
}
|
|
92
|
+
}
|
|
@@ -0,0 +1,5 @@
|
|
|
1
|
+
export declare const TMDB_PROVIDER = "tmdb";
|
|
2
|
+
export declare const TMDB_API_BASE = "https://api.themoviedb.org/3";
|
|
3
|
+
export declare const TMDB_POSTER_BASE_URL = "https://image.tmdb.org/t/p/w500";
|
|
4
|
+
export declare const TMDB_BACKDROP_BASE_URL = "https://image.tmdb.org/t/p/w1280";
|
|
5
|
+
//# sourceMappingURL=constants.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"constants.d.ts","sourceRoot":"","sources":["../../../src/providers/tmdb/constants.ts"],"names":[],"mappings":"AAAA,eAAO,MAAM,aAAa,SAAS,CAAC;AACpC,eAAO,MAAM,aAAa,iCAAiC,CAAC;AAC5D,eAAO,MAAM,oBAAoB,oCAAoC,CAAC;AACtE,eAAO,MAAM,sBAAsB,qCAAqC,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/providers/tmdb/index.ts"],"names":[],"mappings":"AAAA,cAAc,aAAa,CAAC;AAC5B,cAAc,gBAAgB,CAAC;AAC/B,cAAc,YAAY,CAAC;AAC3B,cAAc,aAAa,CAAC;AAC5B,cAAc,SAAS,CAAC;AACxB,cAAc,YAAY,CAAC"}
|
|
@@ -0,0 +1,164 @@
|
|
|
1
|
+
import { type SearchResponse, type ZuuidData, type ZuuidSearchResult } from "../../entity.js";
|
|
2
|
+
import { type SourceRecord } from "../../source.js";
|
|
3
|
+
import type { JsonValue } from "../../types.js";
|
|
4
|
+
import type { TmdbProvider } from "./client.js";
|
|
5
|
+
import type { TmdbSearchInput, TmdbTransformOptions } from "./types.js";
|
|
6
|
+
export declare const TMDB_MOVIE_CATEGORY = "movie";
|
|
7
|
+
export type FetchTmdbMovieInput = {
|
|
8
|
+
id: string | number;
|
|
9
|
+
};
|
|
10
|
+
export type TmdbMoviePayload = {
|
|
11
|
+
adult?: boolean;
|
|
12
|
+
id?: number | string;
|
|
13
|
+
title?: string;
|
|
14
|
+
original_title?: string;
|
|
15
|
+
overview?: string;
|
|
16
|
+
release_date?: string;
|
|
17
|
+
vote_average?: number;
|
|
18
|
+
vote_count?: number;
|
|
19
|
+
poster_path?: string;
|
|
20
|
+
backdrop_path?: string;
|
|
21
|
+
original_language?: string;
|
|
22
|
+
genres?: {
|
|
23
|
+
name?: string;
|
|
24
|
+
}[];
|
|
25
|
+
imdb_id?: string;
|
|
26
|
+
external_ids?: {
|
|
27
|
+
imdb_id?: string | null;
|
|
28
|
+
wikidata_id?: string | null;
|
|
29
|
+
facebook_id?: string | null;
|
|
30
|
+
instagram_id?: string | null;
|
|
31
|
+
twitter_id?: string | null;
|
|
32
|
+
};
|
|
33
|
+
alternative_titles?: {
|
|
34
|
+
titles?: {
|
|
35
|
+
iso_3166_1?: string;
|
|
36
|
+
title?: string;
|
|
37
|
+
type?: string;
|
|
38
|
+
}[];
|
|
39
|
+
};
|
|
40
|
+
translations?: {
|
|
41
|
+
translations?: {
|
|
42
|
+
iso_639_1?: string;
|
|
43
|
+
iso_3166_1?: string;
|
|
44
|
+
name?: string;
|
|
45
|
+
english_name?: string;
|
|
46
|
+
data?: {
|
|
47
|
+
title?: string;
|
|
48
|
+
overview?: string;
|
|
49
|
+
homepage?: string;
|
|
50
|
+
};
|
|
51
|
+
}[];
|
|
52
|
+
};
|
|
53
|
+
credits?: {
|
|
54
|
+
cast?: TmdbCreditCast[];
|
|
55
|
+
crew?: TmdbCreditCrew[];
|
|
56
|
+
};
|
|
57
|
+
keywords?: {
|
|
58
|
+
keywords?: {
|
|
59
|
+
id?: number;
|
|
60
|
+
name?: string;
|
|
61
|
+
}[];
|
|
62
|
+
};
|
|
63
|
+
images?: {
|
|
64
|
+
posters?: TmdbImage[];
|
|
65
|
+
backdrops?: TmdbImage[];
|
|
66
|
+
logos?: TmdbImage[];
|
|
67
|
+
};
|
|
68
|
+
recommendations?: TmdbMovieListResponse;
|
|
69
|
+
similar?: TmdbMovieListResponse;
|
|
70
|
+
release_dates?: {
|
|
71
|
+
results?: {
|
|
72
|
+
iso_3166_1?: string;
|
|
73
|
+
release_dates?: {
|
|
74
|
+
certification?: string;
|
|
75
|
+
descriptors?: string[];
|
|
76
|
+
iso_639_1?: string;
|
|
77
|
+
note?: string;
|
|
78
|
+
release_date?: string;
|
|
79
|
+
type?: number;
|
|
80
|
+
}[];
|
|
81
|
+
}[];
|
|
82
|
+
};
|
|
83
|
+
belongs_to_collection?: {
|
|
84
|
+
id?: number;
|
|
85
|
+
name?: string;
|
|
86
|
+
poster_path?: string;
|
|
87
|
+
backdrop_path?: string;
|
|
88
|
+
} | null;
|
|
89
|
+
production_companies?: {
|
|
90
|
+
id?: number;
|
|
91
|
+
name?: string;
|
|
92
|
+
origin_country?: string;
|
|
93
|
+
logo_path?: string | null;
|
|
94
|
+
}[];
|
|
95
|
+
production_countries?: {
|
|
96
|
+
iso_3166_1?: string;
|
|
97
|
+
name?: string;
|
|
98
|
+
}[];
|
|
99
|
+
origin_country?: string[];
|
|
100
|
+
spoken_languages?: {
|
|
101
|
+
english_name?: string;
|
|
102
|
+
iso_639_1?: string;
|
|
103
|
+
name?: string;
|
|
104
|
+
}[];
|
|
105
|
+
runtime?: number;
|
|
106
|
+
status?: string;
|
|
107
|
+
tagline?: string;
|
|
108
|
+
popularity?: number;
|
|
109
|
+
budget?: number;
|
|
110
|
+
revenue?: number;
|
|
111
|
+
homepage?: string;
|
|
112
|
+
video?: boolean;
|
|
113
|
+
softcore?: boolean;
|
|
114
|
+
watch_providers?: {
|
|
115
|
+
results?: Record<string, JsonValue>;
|
|
116
|
+
};
|
|
117
|
+
};
|
|
118
|
+
export type TmdbCreditCast = {
|
|
119
|
+
id?: number;
|
|
120
|
+
name?: string;
|
|
121
|
+
character?: string;
|
|
122
|
+
order?: number;
|
|
123
|
+
profile_path?: string | null;
|
|
124
|
+
};
|
|
125
|
+
export type TmdbCreditCrew = {
|
|
126
|
+
id?: number;
|
|
127
|
+
name?: string;
|
|
128
|
+
department?: string;
|
|
129
|
+
job?: string;
|
|
130
|
+
profile_path?: string | null;
|
|
131
|
+
};
|
|
132
|
+
export type TmdbImage = {
|
|
133
|
+
file_path?: string;
|
|
134
|
+
width?: number;
|
|
135
|
+
height?: number;
|
|
136
|
+
iso_639_1?: string | null;
|
|
137
|
+
vote_average?: number;
|
|
138
|
+
};
|
|
139
|
+
export type TmdbMovieListResponse = {
|
|
140
|
+
results?: TmdbRelatedMovie[];
|
|
141
|
+
};
|
|
142
|
+
export type TmdbMovieSearchResult = TmdbRelatedMovie & {
|
|
143
|
+
overview?: string;
|
|
144
|
+
backdrop_path?: string | null;
|
|
145
|
+
genre_ids?: number[];
|
|
146
|
+
original_language?: string;
|
|
147
|
+
popularity?: number;
|
|
148
|
+
vote_count?: number;
|
|
149
|
+
adult?: boolean;
|
|
150
|
+
video?: boolean;
|
|
151
|
+
};
|
|
152
|
+
export type TmdbRelatedMovie = {
|
|
153
|
+
id?: number;
|
|
154
|
+
title?: string;
|
|
155
|
+
original_title?: string;
|
|
156
|
+
release_date?: string;
|
|
157
|
+
poster_path?: string | null;
|
|
158
|
+
vote_average?: number;
|
|
159
|
+
};
|
|
160
|
+
export declare function fetchTmdbMovieSourceRecord(provider: TmdbProvider, input: FetchTmdbMovieInput): Promise<SourceRecord | undefined>;
|
|
161
|
+
export declare function searchTmdbMovieSourceRecords(provider: TmdbProvider, input: TmdbSearchInput): Promise<SearchResponse<SourceRecord>>;
|
|
162
|
+
export declare function searchTmdbMovies(provider: TmdbProvider, input: TmdbSearchInput, options?: TmdbTransformOptions): Promise<SearchResponse<ZuuidSearchResult>>;
|
|
163
|
+
export declare function transformTmdbMovie(source: SourceRecord, options?: TmdbTransformOptions): Promise<ZuuidData>;
|
|
164
|
+
//# sourceMappingURL=movie.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"movie.d.ts","sourceRoot":"","sources":["../../../src/providers/tmdb/movie.ts"],"names":[],"mappings":"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"}
|