katanakit-js 4.0.4 → 5.2.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +184 -10
- package/dist/adapters/insforge/index.d.ts +3 -0
- package/dist/adapters/insforge/index.d.ts.map +1 -0
- package/dist/adapters/insforge/index.js +2 -0
- package/dist/adapters/insforge/index.js.map +1 -0
- package/dist/adapters/insforge/insforge.service.d.ts +116 -0
- package/dist/adapters/insforge/insforge.service.d.ts.map +1 -0
- package/dist/adapters/insforge/insforge.service.js +437 -0
- package/dist/adapters/insforge/insforge.service.js.map +1 -0
- package/dist/adapters/notion/notion.service.d.ts.map +1 -1
- package/dist/adapters/notion/notion.service.js +72 -54
- package/dist/adapters/notion/notion.service.js.map +1 -1
- package/dist/adapters/wordpress/wordpress.service.d.ts.map +1 -1
- package/dist/adapters/wordpress/wordpress.service.js +163 -85
- package/dist/adapters/wordpress/wordpress.service.js.map +1 -1
- package/dist/config/seo.service.d.ts.map +1 -1
- package/dist/config/seo.service.js +42 -4
- package/dist/config/seo.service.js.map +1 -1
- package/dist/core/index.d.ts +5 -0
- package/dist/core/index.d.ts.map +1 -1
- package/dist/core/index.js +5 -0
- package/dist/core/index.js.map +1 -1
- package/dist/core/services/error.service.d.ts +21 -1
- package/dist/core/services/error.service.d.ts.map +1 -1
- package/dist/core/services/error.service.js +39 -0
- package/dist/core/services/error.service.js.map +1 -1
- package/dist/core/services/faker.service.d.ts +160 -0
- package/dist/core/services/faker.service.d.ts.map +1 -0
- package/dist/core/services/faker.service.js +235 -0
- package/dist/core/services/faker.service.js.map +1 -0
- package/dist/core/services/http.service.d.ts.map +1 -1
- package/dist/core/services/http.service.js +10 -16
- package/dist/core/services/http.service.js.map +1 -1
- package/dist/core/services/media.service.d.ts +97 -0
- package/dist/core/services/media.service.d.ts.map +1 -0
- package/dist/core/services/media.service.js +239 -0
- package/dist/core/services/media.service.js.map +1 -0
- package/dist/core/services/reactive.service.d.ts.map +1 -1
- package/dist/core/services/reactive.service.js +5 -14
- package/dist/core/services/reactive.service.js.map +1 -1
- package/dist/core/services/result.service.d.ts +41 -0
- package/dist/core/services/result.service.d.ts.map +1 -0
- package/dist/core/services/result.service.js +60 -0
- package/dist/core/services/result.service.js.map +1 -0
- package/dist/core/services/validation.service.d.ts +22 -0
- package/dist/core/services/validation.service.d.ts.map +1 -0
- package/dist/core/services/validation.service.js +41 -0
- package/dist/core/services/validation.service.js.map +1 -0
- package/dist/core/services/youtube.service.d.ts +79 -0
- package/dist/core/services/youtube.service.d.ts.map +1 -0
- package/dist/core/services/youtube.service.js +388 -0
- package/dist/core/services/youtube.service.js.map +1 -0
- package/dist/index.d.ts +1 -0
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +1 -0
- package/dist/index.js.map +1 -1
- package/dist/infrastructure/filesystem/filesystem.service.d.ts +267 -0
- package/dist/infrastructure/filesystem/filesystem.service.d.ts.map +1 -0
- package/dist/infrastructure/filesystem/filesystem.service.js +453 -0
- package/dist/infrastructure/filesystem/filesystem.service.js.map +1 -0
- package/dist/infrastructure/filesystem/path.service.d.ts +115 -0
- package/dist/infrastructure/filesystem/path.service.d.ts.map +1 -0
- package/dist/infrastructure/filesystem/path.service.js +154 -0
- package/dist/infrastructure/filesystem/path.service.js.map +1 -0
- package/dist/infrastructure/index.d.ts +3 -0
- package/dist/infrastructure/index.d.ts.map +1 -1
- package/dist/infrastructure/index.js +3 -0
- package/dist/infrastructure/index.js.map +1 -1
- package/dist/infrastructure/media/media.service.d.ts +15 -0
- package/dist/infrastructure/media/media.service.d.ts.map +1 -0
- package/dist/infrastructure/media/media.service.js +44 -0
- package/dist/infrastructure/media/media.service.js.map +1 -0
- package/dist/infrastructure/storage/storage.service.d.ts.map +1 -1
- package/dist/infrastructure/storage/storage.service.js +10 -8
- package/dist/infrastructure/storage/storage.service.js.map +1 -1
- package/dist/schemas/access.schema.d.ts +69 -0
- package/dist/schemas/access.schema.d.ts.map +1 -0
- package/dist/schemas/access.schema.js +36 -0
- package/dist/schemas/access.schema.js.map +1 -0
- package/dist/schemas/ai.schema.d.ts +53 -0
- package/dist/schemas/ai.schema.d.ts.map +1 -0
- package/dist/schemas/ai.schema.js +34 -0
- package/dist/schemas/ai.schema.js.map +1 -0
- package/dist/schemas/common.schema.d.ts +49 -0
- package/dist/schemas/common.schema.d.ts.map +1 -0
- package/dist/schemas/common.schema.js +23 -0
- package/dist/schemas/common.schema.js.map +1 -0
- package/dist/schemas/core.schema.d.ts +164 -0
- package/dist/schemas/core.schema.d.ts.map +1 -0
- package/dist/schemas/core.schema.js +109 -0
- package/dist/schemas/core.schema.js.map +1 -0
- package/dist/schemas/faker.schema.d.ts +12 -0
- package/dist/schemas/faker.schema.d.ts.map +1 -0
- package/dist/schemas/faker.schema.js +12 -0
- package/dist/schemas/faker.schema.js.map +1 -0
- package/dist/schemas/filesystem.schema.d.ts +71 -0
- package/dist/schemas/filesystem.schema.d.ts.map +1 -0
- package/dist/schemas/filesystem.schema.js +56 -0
- package/dist/schemas/filesystem.schema.js.map +1 -0
- package/dist/schemas/index.d.ts +13 -0
- package/dist/schemas/index.d.ts.map +1 -0
- package/dist/schemas/index.js +13 -0
- package/dist/schemas/index.js.map +1 -0
- package/dist/schemas/insforge.schema.d.ts +69 -0
- package/dist/schemas/insforge.schema.d.ts.map +1 -0
- package/dist/schemas/insforge.schema.js +82 -0
- package/dist/schemas/insforge.schema.js.map +1 -0
- package/dist/schemas/media.schema.d.ts +51 -0
- package/dist/schemas/media.schema.d.ts.map +1 -0
- package/dist/schemas/media.schema.js +50 -0
- package/dist/schemas/media.schema.js.map +1 -0
- package/dist/schemas/notion.schema.d.ts +1058 -0
- package/dist/schemas/notion.schema.d.ts.map +1 -0
- package/dist/schemas/notion.schema.js +248 -0
- package/dist/schemas/notion.schema.js.map +1 -0
- package/dist/schemas/rss.schema.d.ts +35 -0
- package/dist/schemas/rss.schema.d.ts.map +1 -0
- package/dist/schemas/rss.schema.js +44 -0
- package/dist/schemas/rss.schema.js.map +1 -0
- package/dist/schemas/wordpress.schema.d.ts +1304 -0
- package/dist/schemas/wordpress.schema.d.ts.map +1 -0
- package/dist/schemas/wordpress.schema.js +404 -0
- package/dist/schemas/wordpress.schema.js.map +1 -0
- package/dist/schemas/youtube.schema.d.ts +122 -0
- package/dist/schemas/youtube.schema.d.ts.map +1 -0
- package/dist/schemas/youtube.schema.js +113 -0
- package/dist/schemas/youtube.schema.js.map +1 -0
- package/dist/types/index.d.ts +191 -800
- package/dist/types/index.d.ts.map +1 -1
- package/package.json +40 -15
|
@@ -0,0 +1,113 @@
|
|
|
1
|
+
import { z } from "zod";
|
|
2
|
+
/** Config for the YouTube service. One GCP project serves all repos. */
|
|
3
|
+
export const YoutubeApiConfigSchema = z.object({
|
|
4
|
+
/** YouTube Data API v3 key (server/build-time only, never public). */
|
|
5
|
+
apiKey: z.string(),
|
|
6
|
+
/** Default channel id (`UC…`). Per-call params can override it. */
|
|
7
|
+
channelId: z.string(),
|
|
8
|
+
});
|
|
9
|
+
/** Params for `useGetChannelVideos`. */
|
|
10
|
+
export const YoutubeListParamsSchema = z.object({
|
|
11
|
+
/** Channel id (defaults to the one from `useInitYoutube`). */
|
|
12
|
+
channelId: z.string().min(1).optional(),
|
|
13
|
+
/** Skip the channels lookup when the uploads playlist id is known. */
|
|
14
|
+
playlistId: z.string().min(1).optional(),
|
|
15
|
+
/** Items per page (1–50, defaults to `12`). */
|
|
16
|
+
maxResults: z.number().int().min(1).max(50).optional(),
|
|
17
|
+
/** Opaque page token from a previous response. */
|
|
18
|
+
pageToken: z.string().min(1).optional(),
|
|
19
|
+
});
|
|
20
|
+
/** Resolution-keyed thumbnails (all derivable without an API key). */
|
|
21
|
+
export const YoutubeVideoThumbnailsSchema = z.object({
|
|
22
|
+
default: z.string().min(1),
|
|
23
|
+
medium: z.string().min(1),
|
|
24
|
+
high: z.string().min(1),
|
|
25
|
+
});
|
|
26
|
+
/** Normalized video, enriched with player-ready URLs. */
|
|
27
|
+
export const YoutubeVideoNormalizedSchema = z.object({
|
|
28
|
+
id: z.string().min(1),
|
|
29
|
+
title: z.string(),
|
|
30
|
+
description: z.string(),
|
|
31
|
+
publishedAt: z.string(),
|
|
32
|
+
channelTitle: z.string().optional(),
|
|
33
|
+
thumbnails: YoutubeVideoThumbnailsSchema,
|
|
34
|
+
/** `hqdefault` shortcut for posters/facades. */
|
|
35
|
+
thumbnail: z.string().min(1),
|
|
36
|
+
/** Watch URL. */
|
|
37
|
+
url: z.string().min(1),
|
|
38
|
+
/** Privacy-enhanced (`youtube-nocookie`) embed URL. */
|
|
39
|
+
embedUrl: z.string().min(1),
|
|
40
|
+
/** From `videos.list` (`contentDetails.duration`), in seconds. */
|
|
41
|
+
durationSeconds: z.number().nonnegative().optional(),
|
|
42
|
+
/** From `videos.list` (`statistics.viewCount`). */
|
|
43
|
+
viewCount: z.number().nonnegative().optional(),
|
|
44
|
+
});
|
|
45
|
+
/** Paginated channel listing result. */
|
|
46
|
+
export const YoutubeVideoPageSchema = z.object({
|
|
47
|
+
videos: z.array(YoutubeVideoNormalizedSchema),
|
|
48
|
+
nextPageToken: z.string().optional(),
|
|
49
|
+
prevPageToken: z.string().optional(),
|
|
50
|
+
totalResults: z.number().nonnegative().optional(),
|
|
51
|
+
});
|
|
52
|
+
/* -------------------------------------------------------------------------- */
|
|
53
|
+
/* Raw API responses (runtime validation boundary) */
|
|
54
|
+
/* -------------------------------------------------------------------------- */
|
|
55
|
+
const optionalThumbnail = z.object({ url: z.string().optional() }).optional();
|
|
56
|
+
/** Minimal `channels.list` shape (only what the service reads). */
|
|
57
|
+
export const YoutubeChannelsResponseSchema = z.object({
|
|
58
|
+
items: z
|
|
59
|
+
.array(z.object({
|
|
60
|
+
contentDetails: z
|
|
61
|
+
.object({
|
|
62
|
+
relatedPlaylists: z.object({ uploads: z.string().optional() }).optional(),
|
|
63
|
+
})
|
|
64
|
+
.optional(),
|
|
65
|
+
}))
|
|
66
|
+
.optional(),
|
|
67
|
+
});
|
|
68
|
+
/** Minimal `playlistItems.list` shape (only what the service reads). */
|
|
69
|
+
export const YoutubePlaylistItemsResponseSchema = z.object({
|
|
70
|
+
nextPageToken: z.string().optional(),
|
|
71
|
+
prevPageToken: z.string().optional(),
|
|
72
|
+
pageInfo: z.object({ totalResults: z.number().optional() }).optional(),
|
|
73
|
+
items: z
|
|
74
|
+
.array(z.object({
|
|
75
|
+
snippet: z
|
|
76
|
+
.object({
|
|
77
|
+
title: z.string().optional(),
|
|
78
|
+
description: z.string().optional(),
|
|
79
|
+
publishedAt: z.string().optional(),
|
|
80
|
+
channelTitle: z.string().optional(),
|
|
81
|
+
resourceId: z.object({ videoId: z.string().optional() }).optional(),
|
|
82
|
+
thumbnails: z
|
|
83
|
+
.object({
|
|
84
|
+
default: optionalThumbnail,
|
|
85
|
+
medium: optionalThumbnail,
|
|
86
|
+
high: optionalThumbnail,
|
|
87
|
+
})
|
|
88
|
+
.optional(),
|
|
89
|
+
})
|
|
90
|
+
.optional(),
|
|
91
|
+
contentDetails: z.object({ videoId: z.string().optional() }).optional(),
|
|
92
|
+
}))
|
|
93
|
+
.optional(),
|
|
94
|
+
});
|
|
95
|
+
/** Minimal `videos.list` shape (only what the service reads). */
|
|
96
|
+
export const YoutubeVideosResponseSchema = z.object({
|
|
97
|
+
items: z
|
|
98
|
+
.array(z.object({
|
|
99
|
+
id: z.string().optional(),
|
|
100
|
+
snippet: z
|
|
101
|
+
.object({
|
|
102
|
+
title: z.string().optional(),
|
|
103
|
+
description: z.string().optional(),
|
|
104
|
+
publishedAt: z.string().optional(),
|
|
105
|
+
channelTitle: z.string().optional(),
|
|
106
|
+
})
|
|
107
|
+
.optional(),
|
|
108
|
+
contentDetails: z.object({ duration: z.string().optional() }).optional(),
|
|
109
|
+
statistics: z.object({ viewCount: z.string().optional() }).optional(),
|
|
110
|
+
}))
|
|
111
|
+
.optional(),
|
|
112
|
+
});
|
|
113
|
+
//# sourceMappingURL=youtube.schema.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"youtube.schema.js","sourceRoot":"","sources":["../../src/schemas/youtube.schema.ts"],"names":[],"mappings":"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"}
|