@chanomhub/sdk 1.2.1 → 1.2.3
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +22 -0
- package/dist/__tests__/imageUrl.test.js +38 -13
- package/dist/__tests__/imageUrl.test.js.map +1 -1
- package/dist/client.d.ts +1 -1
- package/dist/client.d.ts.map +1 -1
- package/dist/config.d.ts +2 -0
- package/dist/config.d.ts.map +1 -1
- package/dist/config.js +1 -0
- package/dist/config.js.map +1 -1
- package/dist/examples/manage-article.js +20 -4
- package/dist/examples/manage-article.js.map +1 -1
- package/dist/index.d.ts +4 -2
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +4 -1
- package/dist/index.js.map +1 -1
- package/dist/repositories/downloadsRepository.d.ts +66 -0
- package/dist/repositories/downloadsRepository.d.ts.map +1 -0
- package/dist/repositories/downloadsRepository.js +115 -0
- package/dist/repositories/downloadsRepository.js.map +1 -0
- package/dist/repositories/index.d.ts +1 -0
- package/dist/repositories/index.d.ts.map +1 -1
- package/dist/repositories/index.js +3 -1
- package/dist/repositories/index.js.map +1 -1
- package/dist/transforms/imageUrl.d.ts +9 -0
- package/dist/transforms/imageUrl.d.ts.map +1 -1
- package/dist/transforms/imageUrl.js +33 -0
- package/dist/transforms/imageUrl.js.map +1 -1
- package/dist/types/download.d.ts +65 -0
- package/dist/types/download.d.ts.map +1 -0
- package/dist/types/download.js +6 -0
- package/dist/types/download.js.map +1 -0
- package/dist/types/index.d.ts +1 -0
- package/dist/types/index.d.ts.map +1 -1
- package/dist/types/index.js +1 -0
- package/dist/types/index.js.map +1 -1
- package/package.json +12 -12
package/README.md
CHANGED
|
@@ -117,6 +117,28 @@ const sdk = createChanomhubClient({
|
|
|
117
117
|
});
|
|
118
118
|
```
|
|
119
119
|
|
|
120
|
+
### Safely Handling Images (CDN Fallback)
|
|
121
|
+
|
|
122
|
+
The SDK provides a `getFallbackUrl` utility to handle cases where the CDN image fails to load. This allows your application to gracefully degrade to the original storage URL.
|
|
123
|
+
|
|
124
|
+
```typescript
|
|
125
|
+
import { getFallbackUrl } from '@chanomhub/sdk';
|
|
126
|
+
|
|
127
|
+
// In your image component (e.g., React/Next.js)
|
|
128
|
+
<img
|
|
129
|
+
src={article.mainImage}
|
|
130
|
+
onError={(e) => {
|
|
131
|
+
// Falls back to direct storage URL (e.g., skips cdn-cgi optimization)
|
|
132
|
+
// You can pass specific config.storageUrl if configured, otherwise it defaults to stripped CDN path
|
|
133
|
+
const fallback = getFallbackUrl(e.currentTarget.src, config.cdnUrl);
|
|
134
|
+
|
|
135
|
+
if (fallback && fallback !== e.currentTarget.src) {
|
|
136
|
+
e.currentTarget.src = fallback;
|
|
137
|
+
}
|
|
138
|
+
}}
|
|
139
|
+
/>
|
|
140
|
+
```
|
|
141
|
+
|
|
120
142
|
### Next.js Server Components
|
|
121
143
|
|
|
122
144
|
For Next.js Server Components, use the special helper:
|
|
@@ -2,7 +2,8 @@
|
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
3
|
const vitest_1 = require("vitest");
|
|
4
4
|
const imageUrl_1 = require("../transforms/imageUrl");
|
|
5
|
-
const CDN_URL = 'https://cdn.chanomhub.com';
|
|
5
|
+
const CDN_URL = 'https://cdn.chanomhub.com/cdn-cgi/image/format=auto';
|
|
6
|
+
const STORAGE_URL = 'https://cdn.chanomhub.com';
|
|
6
7
|
(0, vitest_1.describe)('resolveImageUrl', () => {
|
|
7
8
|
(0, vitest_1.it)('should return null for null input', () => {
|
|
8
9
|
(0, vitest_1.expect)((0, imageUrl_1.resolveImageUrl)(null, CDN_URL)).toBeNull();
|
|
@@ -19,10 +20,10 @@ const CDN_URL = 'https://cdn.chanomhub.com';
|
|
|
19
20
|
(0, vitest_1.expect)((0, imageUrl_1.resolveImageUrl)(url, CDN_URL)).toBe(url);
|
|
20
21
|
});
|
|
21
22
|
(0, vitest_1.it)('should prepend CDN URL for filename only', () => {
|
|
22
|
-
(0, vitest_1.expect)((0, imageUrl_1.resolveImageUrl)('abc.jpg', CDN_URL)).toBe(
|
|
23
|
+
(0, vitest_1.expect)((0, imageUrl_1.resolveImageUrl)('abc.jpg', CDN_URL)).toBe(`${CDN_URL}/abc.jpg`);
|
|
23
24
|
});
|
|
24
25
|
(0, vitest_1.it)('should handle filenames with paths', () => {
|
|
25
|
-
(0, vitest_1.expect)((0, imageUrl_1.resolveImageUrl)('uploads/abc.jpg', CDN_URL)).toBe(
|
|
26
|
+
(0, vitest_1.expect)((0, imageUrl_1.resolveImageUrl)('uploads/abc.jpg', CDN_URL)).toBe(`${CDN_URL}/uploads/abc.jpg`);
|
|
26
27
|
});
|
|
27
28
|
});
|
|
28
29
|
(0, vitest_1.describe)('transformImageUrlsDeep', () => {
|
|
@@ -39,10 +40,10 @@ const CDN_URL = 'https://cdn.chanomhub.com';
|
|
|
39
40
|
title: 'Test Article',
|
|
40
41
|
};
|
|
41
42
|
const result = (0, imageUrl_1.transformImageUrlsDeep)(data, CDN_URL);
|
|
42
|
-
(0, vitest_1.expect)(result.mainImage).toBe(
|
|
43
|
-
(0, vitest_1.expect)(result.coverImage).toBe(
|
|
44
|
-
(0, vitest_1.expect)(result.backgroundImage).toBe(
|
|
45
|
-
(0, vitest_1.expect)(result.image).toBe(
|
|
43
|
+
(0, vitest_1.expect)(result.mainImage).toBe(`${CDN_URL}/main.jpg`);
|
|
44
|
+
(0, vitest_1.expect)(result.coverImage).toBe(`${CDN_URL}/cover.jpg`);
|
|
45
|
+
(0, vitest_1.expect)(result.backgroundImage).toBe(`${CDN_URL}/bg.jpg`);
|
|
46
|
+
(0, vitest_1.expect)(result.image).toBe(`${CDN_URL}/profile.jpg`);
|
|
46
47
|
(0, vitest_1.expect)(result.title).toBe('Test Article'); // Non-image field unchanged
|
|
47
48
|
});
|
|
48
49
|
(0, vitest_1.it)('should not transform already full URLs', () => {
|
|
@@ -57,8 +58,8 @@ const CDN_URL = 'https://cdn.chanomhub.com';
|
|
|
57
58
|
images: [{ url: 'image1.jpg' }, { url: 'image2.jpg' }],
|
|
58
59
|
};
|
|
59
60
|
const result = (0, imageUrl_1.transformImageUrlsDeep)(data, CDN_URL);
|
|
60
|
-
(0, vitest_1.expect)(result.images[0].url).toBe(
|
|
61
|
-
(0, vitest_1.expect)(result.images[1].url).toBe(
|
|
61
|
+
(0, vitest_1.expect)(result.images[0].url).toBe(`${CDN_URL}/image1.jpg`);
|
|
62
|
+
(0, vitest_1.expect)(result.images[1].url).toBe(`${CDN_URL}/image2.jpg`);
|
|
62
63
|
});
|
|
63
64
|
(0, vitest_1.it)('should recursively transform nested objects', () => {
|
|
64
65
|
const data = {
|
|
@@ -70,14 +71,38 @@ const CDN_URL = 'https://cdn.chanomhub.com';
|
|
|
70
71
|
},
|
|
71
72
|
};
|
|
72
73
|
const result = (0, imageUrl_1.transformImageUrlsDeep)(data, CDN_URL);
|
|
73
|
-
(0, vitest_1.expect)(result.article.mainImage).toBe(
|
|
74
|
-
(0, vitest_1.expect)(result.article.author.image).toBe(
|
|
74
|
+
(0, vitest_1.expect)(result.article.mainImage).toBe(`${CDN_URL}/article.jpg`);
|
|
75
|
+
(0, vitest_1.expect)(result.article.author.image).toBe(`${CDN_URL}/author.jpg`);
|
|
75
76
|
});
|
|
76
77
|
(0, vitest_1.it)('should handle arrays at root level', () => {
|
|
77
78
|
const data = [{ mainImage: 'img1.jpg' }, { mainImage: 'img2.jpg' }];
|
|
78
79
|
const result = (0, imageUrl_1.transformImageUrlsDeep)(data, CDN_URL);
|
|
79
|
-
(0, vitest_1.expect)(result[0].mainImage).toBe(
|
|
80
|
-
(0, vitest_1.expect)(result[1].mainImage).toBe(
|
|
80
|
+
(0, vitest_1.expect)(result[0].mainImage).toBe(`${CDN_URL}/img1.jpg`);
|
|
81
|
+
(0, vitest_1.expect)(result[1].mainImage).toBe(`${CDN_URL}/img2.jpg`);
|
|
82
|
+
});
|
|
83
|
+
});
|
|
84
|
+
(0, vitest_1.describe)('getFallbackUrl', () => {
|
|
85
|
+
(0, vitest_1.it)('should return null for null/undefined input', () => {
|
|
86
|
+
(0, vitest_1.expect)((0, imageUrl_1.getFallbackUrl)(null, CDN_URL)).toBeNull();
|
|
87
|
+
(0, vitest_1.expect)((0, imageUrl_1.getFallbackUrl)(undefined, CDN_URL)).toBeNull();
|
|
88
|
+
});
|
|
89
|
+
(0, vitest_1.it)('should return filename as-is if just filename', () => {
|
|
90
|
+
(0, vitest_1.expect)((0, imageUrl_1.getFallbackUrl)('abc.jpg', CDN_URL)).toBe('abc.jpg');
|
|
91
|
+
});
|
|
92
|
+
(0, vitest_1.it)('should strip CDN URL from full URL', () => {
|
|
93
|
+
const fullUrl = `${CDN_URL}/abc.jpg`;
|
|
94
|
+
(0, vitest_1.expect)((0, imageUrl_1.getFallbackUrl)(fullUrl, CDN_URL)).toBe('abc.jpg');
|
|
95
|
+
});
|
|
96
|
+
(0, vitest_1.it)('should handle optional storageUrl', () => {
|
|
97
|
+
const fullUrl = `${CDN_URL}/abc.jpg`;
|
|
98
|
+
(0, vitest_1.expect)((0, imageUrl_1.getFallbackUrl)(fullUrl, CDN_URL, STORAGE_URL)).toBe(`${STORAGE_URL}/abc.jpg`);
|
|
99
|
+
});
|
|
100
|
+
(0, vitest_1.it)('should return other external URLs as-is', () => {
|
|
101
|
+
const url = 'https://other-cdn.com/image.jpg';
|
|
102
|
+
(0, vitest_1.expect)((0, imageUrl_1.getFallbackUrl)(url, CDN_URL, STORAGE_URL)).toBe(url);
|
|
103
|
+
});
|
|
104
|
+
(0, vitest_1.it)('should prepend storageUrl to filename if provided', () => {
|
|
105
|
+
(0, vitest_1.expect)((0, imageUrl_1.getFallbackUrl)('abc.jpg', CDN_URL, STORAGE_URL)).toBe(`${STORAGE_URL}/abc.jpg`);
|
|
81
106
|
});
|
|
82
107
|
});
|
|
83
108
|
//# sourceMappingURL=imageUrl.test.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"imageUrl.test.js","sourceRoot":"","sources":["../../__tests__/imageUrl.test.ts"],"names":[],"mappings":";;AAAA,mCAA8C;AAC9C,
|
|
1
|
+
{"version":3,"file":"imageUrl.test.js","sourceRoot":"","sources":["../../__tests__/imageUrl.test.ts"],"names":[],"mappings":"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"}
|
package/dist/client.d.ts
CHANGED
|
@@ -36,7 +36,7 @@ export interface RestResponse<T> {
|
|
|
36
36
|
* @returns REST fetch function
|
|
37
37
|
*/
|
|
38
38
|
export declare function createRestClient(config: ChanomhubConfig): <T>(endpoint: string, options?: {
|
|
39
|
-
method?: "GET" | "POST" | "PUT" | "DELETE";
|
|
39
|
+
method?: "GET" | "POST" | "PUT" | "DELETE" | "PATCH";
|
|
40
40
|
body?: Record<string, unknown>;
|
|
41
41
|
}) => Promise<RestResponse<T>>;
|
|
42
42
|
export type RestFetcher = ReturnType<typeof createRestClient>;
|
package/dist/client.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"client.d.ts","sourceRoot":"","sources":["../client.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,UAAU,CAAC;AAChD,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,gBAAgB,CAAC;AAGtD,MAAM,WAAW,YAAY;IACzB,6BAA6B;IAC7B,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB,+CAA+C;IAC/C,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,0BAA0B;IAC1B,OAAO,CAAC,EAAE,OAAO,CAAC;CACrB;AAED;;;;;GAKG;AACH,wBAAgB,mBAAmB,CAAC,MAAM,EAAE,eAAe,IACpB,CAAC,EAChC,OAAO,MAAM,EACb,YAAW,MAAM,CAAC,MAAM,EAAE,OAAO,CAAM,EACvC,UAAS,YAAiB,KAC3B,OAAO,CAAC,eAAe,CAAC,CAAC,CAAC,CAAC,CAkEjC;AAED,MAAM,MAAM,cAAc,GAAG,UAAU,CAAC,OAAO,mBAAmB,CAAC,CAAC;AAEpE;;GAEG;AACH,MAAM,WAAW,YAAY,CAAC,CAAC;IAC3B,IAAI,EAAE,CAAC,GAAG,IAAI,CAAC;IACf,KAAK,CAAC,EAAE,MAAM,CAAC;CAClB;AAED;;;;;GAKG;AACH,wBAAgB,gBAAgB,CAAC,MAAM,EAAE,eAAe,IACpB,CAAC,EAC7B,UAAU,MAAM,EAChB,UAAS;IACL,MAAM,CAAC,EAAE,KAAK,GAAG,MAAM,GAAG,KAAK,GAAG,QAAQ,CAAC;
|
|
1
|
+
{"version":3,"file":"client.d.ts","sourceRoot":"","sources":["../client.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,UAAU,CAAC;AAChD,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,gBAAgB,CAAC;AAGtD,MAAM,WAAW,YAAY;IACzB,6BAA6B;IAC7B,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB,+CAA+C;IAC/C,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,0BAA0B;IAC1B,OAAO,CAAC,EAAE,OAAO,CAAC;CACrB;AAED;;;;;GAKG;AACH,wBAAgB,mBAAmB,CAAC,MAAM,EAAE,eAAe,IACpB,CAAC,EAChC,OAAO,MAAM,EACb,YAAW,MAAM,CAAC,MAAM,EAAE,OAAO,CAAM,EACvC,UAAS,YAAiB,KAC3B,OAAO,CAAC,eAAe,CAAC,CAAC,CAAC,CAAC,CAkEjC;AAED,MAAM,MAAM,cAAc,GAAG,UAAU,CAAC,OAAO,mBAAmB,CAAC,CAAC;AAEpE;;GAEG;AACH,MAAM,WAAW,YAAY,CAAC,CAAC;IAC3B,IAAI,EAAE,CAAC,GAAG,IAAI,CAAC;IACf,KAAK,CAAC,EAAE,MAAM,CAAC;CAClB;AAED;;;;;GAKG;AACH,wBAAgB,gBAAgB,CAAC,MAAM,EAAE,eAAe,IACpB,CAAC,EAC7B,UAAU,MAAM,EAChB,UAAS;IACL,MAAM,CAAC,EAAE,KAAK,GAAG,MAAM,GAAG,KAAK,GAAG,QAAQ,GAAG,OAAO,CAAC;IACrD,IAAI,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;CAC7B,KACP,OAAO,CAAC,YAAY,CAAC,CAAC,CAAC,CAAC,CA4D9B;AAED,MAAM,MAAM,WAAW,GAAG,UAAU,CAAC,OAAO,gBAAgB,CAAC,CAAC"}
|
package/dist/config.d.ts
CHANGED
|
@@ -6,6 +6,8 @@ export interface ChanomhubConfig {
|
|
|
6
6
|
apiUrl: string;
|
|
7
7
|
/** CDN base URL for images */
|
|
8
8
|
cdnUrl: string;
|
|
9
|
+
/** Original storage base URL (fallback) */
|
|
10
|
+
storageUrl?: string;
|
|
9
11
|
/** Authentication token (optional) */
|
|
10
12
|
token?: string;
|
|
11
13
|
/** Default cache duration in seconds (0 = no cache) */
|
package/dist/config.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"config.d.ts","sourceRoot":"","sources":["../config.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,MAAM,WAAW,eAAe;IAC5B,mBAAmB;IACnB,MAAM,EAAE,MAAM,CAAC;IACf,8BAA8B;IAC9B,MAAM,EAAE,MAAM,CAAC;IACf,sCAAsC;IACtC,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,uDAAuD;IACvD,mBAAmB,CAAC,EAAE,MAAM,CAAC;IAC7B,gDAAgD;IAChD,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,6CAA6C;IAC7C,eAAe,CAAC,EAAE,MAAM,CAAC;CAC5B;AAED,eAAO,MAAM,cAAc,EAAE,
|
|
1
|
+
{"version":3,"file":"config.d.ts","sourceRoot":"","sources":["../config.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,MAAM,WAAW,eAAe;IAC5B,mBAAmB;IACnB,MAAM,EAAE,MAAM,CAAC;IACf,8BAA8B;IAC9B,MAAM,EAAE,MAAM,CAAC;IACf,2CAA2C;IAC3C,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,sCAAsC;IACtC,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,uDAAuD;IACvD,mBAAmB,CAAC,EAAE,MAAM,CAAC;IAC7B,gDAAgD;IAChD,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,6CAA6C;IAC7C,eAAe,CAAC,EAAE,MAAM,CAAC;CAC5B;AAED,eAAO,MAAM,cAAc,EAAE,eAK5B,CAAC;AAEF,0BAA0B;AAC1B,MAAM,MAAM,aAAa,GACnB,OAAO,GACP,gBAAgB,GAChB,WAAW,GACX,UAAU,GACV,cAAc,GACd,gBAAgB,CAAC;AAEvB,uBAAuB;AACvB,MAAM,MAAM,UAAU,GAChB,OAAO,GACP,MAAM,GACN,OAAO,GACP,QAAQ,GACR,OAAO,GACP,eAAe,GACf,SAAS,GACT,UAAU,GACV,OAAO,GACP,aAAa,CAAC"}
|
package/dist/config.js
CHANGED
|
@@ -7,6 +7,7 @@ exports.DEFAULT_CONFIG = void 0;
|
|
|
7
7
|
exports.DEFAULT_CONFIG = {
|
|
8
8
|
apiUrl: 'https://api.chanomhub.com',
|
|
9
9
|
cdnUrl: 'https://cdn.chanomhub.com/cdn-cgi/image/format=auto',
|
|
10
|
+
storageUrl: 'https://cdn.chanomhub.com', // Fallback to raw CDN URL
|
|
10
11
|
defaultCacheSeconds: 3600,
|
|
11
12
|
};
|
|
12
13
|
//# sourceMappingURL=config.js.map
|
package/dist/config.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"config.js","sourceRoot":"","sources":["../config.ts"],"names":[],"mappings":";AAAA;;GAEG;;;
|
|
1
|
+
{"version":3,"file":"config.js","sourceRoot":"","sources":["../config.ts"],"names":[],"mappings":";AAAA;;GAEG;;;AAmBU,QAAA,cAAc,GAAoB;IAC3C,MAAM,EAAE,2BAA2B;IACnC,MAAM,EAAE,qDAAqD;IAC7D,UAAU,EAAE,2BAA2B,EAAE,0BAA0B;IACnE,mBAAmB,EAAE,IAAI;CAC5B,CAAC"}
|
|
@@ -18,10 +18,11 @@ async function main() {
|
|
|
18
18
|
ver: '1.0.0',
|
|
19
19
|
status: 'DRAFT',
|
|
20
20
|
engine: 'RENPY',
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
21
|
+
// Metadata fields
|
|
22
|
+
tags: ['Hentai', 'Visual Novel'],
|
|
23
|
+
categories: ['Game'],
|
|
24
|
+
platforms: ['Windows', 'Android'],
|
|
25
|
+
creator: 'Awesome Studio', // Creator / Studio name
|
|
25
26
|
};
|
|
26
27
|
try {
|
|
27
28
|
console.log('Creating article...');
|
|
@@ -32,6 +33,21 @@ async function main() {
|
|
|
32
33
|
description: 'Updated description',
|
|
33
34
|
});
|
|
34
35
|
console.log('Updated article:', JSON.stringify(updated, null, 2));
|
|
36
|
+
console.log('Fetching full article details (what you get on web page load)...');
|
|
37
|
+
const fullArticle = await client.articles.getBySlug(created.slug);
|
|
38
|
+
if (fullArticle) {
|
|
39
|
+
console.log('Full Article Data:');
|
|
40
|
+
console.log('- Title:', fullArticle.title);
|
|
41
|
+
console.log('- Tags:', fullArticle.tags);
|
|
42
|
+
console.log('- Categories:', fullArticle.categories);
|
|
43
|
+
console.log('- Platforms:', fullArticle.platforms);
|
|
44
|
+
console.log('- Creators:', fullArticle.creators);
|
|
45
|
+
console.log('- Engine:', fullArticle.engine);
|
|
46
|
+
console.log('- Author:', fullArticle.author);
|
|
47
|
+
}
|
|
48
|
+
else {
|
|
49
|
+
console.error('Failed to fetch full article');
|
|
50
|
+
}
|
|
35
51
|
console.log('Deleting article...');
|
|
36
52
|
await client.articles.delete(created.slug);
|
|
37
53
|
console.log('Deleted article');
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"manage-article.js","sourceRoot":"","sources":["../../examples/manage-article.ts"],"names":[],"mappings":";;AACA,oCAAiD;AAGjD,KAAK,UAAU,IAAI;IACf,4CAA4C;IAC5C,MAAM,KAAK,GAAG,OAAO,CAAC,GAAG,CAAC,eAAe,CAAC;IAC1C,IAAI,CAAC,KAAK,EAAE,CAAC;QACT,OAAO,CAAC,KAAK,CAAC,oCAAoC,CAAC,CAAC;QACpD,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;IACpB,CAAC;IAED,MAAM,MAAM,GAAG,IAAA,6BAAqB,EAAC,EAAE,KAAK,EAAE,CAAC,CAAC;IAEhD,MAAM,UAAU,GAAkB;QAC9B,KAAK,EAAE,kBAAkB;QACzB,IAAI,EAAE,mBAAmB,GAAG,IAAI,CAAC,GAAG,EAAE;QACtC,WAAW,EAAE,kBAAkB;QAC/B,IAAI,EAAE,mBAAmB;QACzB,QAAQ,EAAE,IAAI;QACd,GAAG,EAAE,OAAO;QACZ,MAAM,EAAE,OAAO;QACf,MAAM,EAAE,OAAO;QACf,IAAI,EAAE,CAAC,
|
|
1
|
+
{"version":3,"file":"manage-article.js","sourceRoot":"","sources":["../../examples/manage-article.ts"],"names":[],"mappings":"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"}
|
package/dist/index.d.ts
CHANGED
|
@@ -31,12 +31,12 @@
|
|
|
31
31
|
* ```
|
|
32
32
|
*/
|
|
33
33
|
import { type GraphQLFetcher } from './client';
|
|
34
|
-
import { type ArticleRepository, type FavoritesRepository, type UsersRepository, type SearchRepository, type AuthRepository } from './repositories';
|
|
34
|
+
import { type ArticleRepository, type FavoritesRepository, type UsersRepository, type SearchRepository, type AuthRepository, type DownloadsRepository } from './repositories';
|
|
35
35
|
import { type ChanomhubConfig } from './config';
|
|
36
36
|
export * from './types';
|
|
37
37
|
export * from './config';
|
|
38
38
|
export * from './errors';
|
|
39
|
-
export { resolveImageUrl } from './transforms/imageUrl';
|
|
39
|
+
export { resolveImageUrl, getFallbackUrl } from './transforms/imageUrl';
|
|
40
40
|
/** Chanomhub SDK Client interface */
|
|
41
41
|
export interface ChanomhubClient {
|
|
42
42
|
/** Article operations */
|
|
@@ -49,6 +49,8 @@ export interface ChanomhubClient {
|
|
|
49
49
|
search: SearchRepository;
|
|
50
50
|
/** Authentication operations (requires Supabase config for OAuth) */
|
|
51
51
|
auth: AuthRepository;
|
|
52
|
+
/** Downloads management operations */
|
|
53
|
+
downloads: DownloadsRepository;
|
|
52
54
|
/** Raw GraphQL fetcher for custom queries */
|
|
53
55
|
graphql: GraphQLFetcher;
|
|
54
56
|
/** SDK configuration */
|
package/dist/index.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../index.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA+BG;AAEH,OAAO,EAAyC,KAAK,cAAc,EAAE,MAAM,UAAU,CAAC;AACtF,OAAO,
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../index.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA+BG;AAEH,OAAO,EAAyC,KAAK,cAAc,EAAE,MAAM,UAAU,CAAC;AACtF,OAAO,EAOH,KAAK,iBAAiB,EACtB,KAAK,mBAAmB,EACxB,KAAK,eAAe,EACpB,KAAK,gBAAgB,EACrB,KAAK,cAAc,EACnB,KAAK,mBAAmB,EAC3B,MAAM,gBAAgB,CAAC;AACxB,OAAO,EAAkB,KAAK,eAAe,EAAE,MAAM,UAAU,CAAC;AAGhE,cAAc,SAAS,CAAC;AACxB,cAAc,UAAU,CAAC;AACzB,cAAc,UAAU,CAAC;AACzB,OAAO,EAAE,eAAe,EAAE,cAAc,EAAE,MAAM,uBAAuB,CAAC;AAExE,qCAAqC;AACrC,MAAM,WAAW,eAAe;IAC5B,yBAAyB;IACzB,QAAQ,EAAE,iBAAiB,CAAC;IAC5B,2BAA2B;IAC3B,SAAS,EAAE,mBAAmB,CAAC;IAC/B,8BAA8B;IAC9B,KAAK,EAAE,eAAe,CAAC;IACvB,wBAAwB;IACxB,MAAM,EAAE,gBAAgB,CAAC;IACzB,qEAAqE;IACrE,IAAI,EAAE,cAAc,CAAC;IACrB,sCAAsC;IACtC,SAAS,EAAE,mBAAmB,CAAC;IAC/B,6CAA6C;IAC7C,OAAO,EAAE,cAAc,CAAC;IACxB,wBAAwB;IACxB,MAAM,EAAE,eAAe,CAAC;CAC3B;AAED;;;;;;;;;;;;;;;;;;;;;GAqBG;AACH,wBAAgB,qBAAqB,CAAC,MAAM,GAAE,OAAO,CAAC,eAAe,CAAM,GAAG,eAAe,CAyB5F;AAED;;;;;;;GAOG;AACH,wBAAgB,yBAAyB,CACrC,KAAK,EAAE,MAAM,EACb,MAAM,GAAE,OAAO,CAAC,eAAe,CAAM,GACtC,eAAe,CAMjB;AAGD,eAAe,qBAAqB,CAAC"}
|
package/dist/index.js
CHANGED
|
@@ -46,7 +46,7 @@ var __exportStar = (this && this.__exportStar) || function(m, exports) {
|
|
|
46
46
|
for (var p in m) if (p !== "default" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);
|
|
47
47
|
};
|
|
48
48
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
49
|
-
exports.resolveImageUrl = void 0;
|
|
49
|
+
exports.getFallbackUrl = exports.resolveImageUrl = void 0;
|
|
50
50
|
exports.createChanomhubClient = createChanomhubClient;
|
|
51
51
|
exports.createAuthenticatedClient = createAuthenticatedClient;
|
|
52
52
|
const client_1 = require("./client");
|
|
@@ -58,6 +58,7 @@ __exportStar(require("./config"), exports);
|
|
|
58
58
|
__exportStar(require("./errors"), exports);
|
|
59
59
|
var imageUrl_1 = require("./transforms/imageUrl");
|
|
60
60
|
Object.defineProperty(exports, "resolveImageUrl", { enumerable: true, get: function () { return imageUrl_1.resolveImageUrl; } });
|
|
61
|
+
Object.defineProperty(exports, "getFallbackUrl", { enumerable: true, get: function () { return imageUrl_1.getFallbackUrl; } });
|
|
61
62
|
/**
|
|
62
63
|
* Creates a Chanomhub API client
|
|
63
64
|
*
|
|
@@ -92,12 +93,14 @@ function createChanomhubClient(config = {}) {
|
|
|
92
93
|
const users = (0, repositories_1.createUsersRepository)(rest);
|
|
93
94
|
const search = (0, repositories_1.createSearchRepository)(graphql);
|
|
94
95
|
const auth = (0, repositories_1.createAuthRepository)(rest, fullConfig);
|
|
96
|
+
const downloads = (0, repositories_1.createDownloadsRepository)(rest, fullConfig);
|
|
95
97
|
return {
|
|
96
98
|
articles,
|
|
97
99
|
favorites,
|
|
98
100
|
users,
|
|
99
101
|
search,
|
|
100
102
|
auth,
|
|
103
|
+
downloads,
|
|
101
104
|
graphql,
|
|
102
105
|
config: fullConfig,
|
|
103
106
|
};
|
package/dist/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../index.ts"],"names":[],"mappings":";AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA+BG;;;;;;;;;;;;;;;;;
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../index.ts"],"names":[],"mappings":";AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA+BG;;;;;;;;;;;;;;;;;AAmEH,sDAyBC;AAUD,8DASC;AA7GD,qCAAsF;AACtF,iDAawB;AACxB,qCAAgE;AAEhE,kBAAkB;AAClB,0CAAwB;AACxB,2CAAyB;AACzB,2CAAyB;AACzB,kDAAwE;AAA/D,2GAAA,eAAe,OAAA;AAAE,0GAAA,cAAc,OAAA;AAsBxC;;;;;;;;;;;;;;;;;;;;;GAqBG;AACH,SAAgB,qBAAqB,CAAC,SAAmC,EAAE;IACvE,MAAM,UAAU,GAAoB;QAChC,GAAG,uBAAc;QACjB,GAAG,MAAM;KACZ,CAAC;IAEF,MAAM,OAAO,GAAG,IAAA,4BAAmB,EAAC,UAAU,CAAC,CAAC;IAChD,MAAM,IAAI,GAAG,IAAA,yBAAgB,EAAC,UAAU,CAAC,CAAC;IAC1C,MAAM,QAAQ,GAAG,IAAA,sCAAuB,EAAC,OAAO,EAAE,IAAI,CAAC,CAAC;IACxD,MAAM,SAAS,GAAG,IAAA,wCAAyB,EAAC,IAAI,EAAE,UAAU,CAAC,CAAC;IAC9D,MAAM,KAAK,GAAG,IAAA,oCAAqB,EAAC,IAAI,CAAC,CAAC;IAC1C,MAAM,MAAM,GAAG,IAAA,qCAAsB,EAAC,OAAO,CAAC,CAAC;IAC/C,MAAM,IAAI,GAAG,IAAA,mCAAoB,EAAC,IAAI,EAAE,UAAU,CAAC,CAAC;IACpD,MAAM,SAAS,GAAG,IAAA,wCAAyB,EAAC,IAAI,EAAE,UAAU,CAAC,CAAC;IAE9D,OAAO;QACH,QAAQ;QACR,SAAS;QACT,KAAK;QACL,MAAM;QACN,IAAI;QACJ,SAAS;QACT,OAAO;QACP,MAAM,EAAE,UAAU;KACrB,CAAC;AACN,CAAC;AAED;;;;;;;GAOG;AACH,SAAgB,yBAAyB,CACrC,KAAa,EACb,SAAmC,EAAE;IAErC,OAAO,qBAAqB,CAAC;QACzB,GAAG,MAAM;QACT,KAAK;QACL,mBAAmB,EAAE,CAAC,EAAE,2CAA2C;KACtE,CAAC,CAAC;AACP,CAAC;AAED,iBAAiB;AACjB,kBAAe,qBAAqB,CAAC"}
|
|
@@ -0,0 +1,66 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Chanomhub SDK - Downloads Repository
|
|
3
|
+
*
|
|
4
|
+
* Provides API methods for managing download links.
|
|
5
|
+
*/
|
|
6
|
+
import type { RestFetcher } from '../client';
|
|
7
|
+
import type { ChanomhubConfig } from '../config';
|
|
8
|
+
import type { DownloadLink, CreateDownloadLinkRequest, UpdateDownloadLinkRequest, ModerateDownloadLinkRequest, DownloadLinksListResponse, ListDownloadsOptions } from '../types/download';
|
|
9
|
+
export interface DownloadsRepository {
|
|
10
|
+
/**
|
|
11
|
+
* Create a new download link
|
|
12
|
+
* @param data - Download link data
|
|
13
|
+
* @returns Created download link
|
|
14
|
+
*/
|
|
15
|
+
create(data: CreateDownloadLinkRequest): Promise<DownloadLink | null>;
|
|
16
|
+
/**
|
|
17
|
+
* Get all download links filtered by status (moderator/admin only)
|
|
18
|
+
* @param options - Filter and pagination options
|
|
19
|
+
* @returns Paginated list of download links
|
|
20
|
+
*/
|
|
21
|
+
getAll(options?: ListDownloadsOptions): Promise<DownloadLinksListResponse | null>;
|
|
22
|
+
/**
|
|
23
|
+
* Get all download links for a specific article
|
|
24
|
+
* @param articleId - Article ID
|
|
25
|
+
* @returns Array of download links
|
|
26
|
+
*/
|
|
27
|
+
getByArticle(articleId: number): Promise<DownloadLink[]>;
|
|
28
|
+
/**
|
|
29
|
+
* Get all pending download links with pagination (moderator/admin only)
|
|
30
|
+
* @param page - Page number (default: 1)
|
|
31
|
+
* @param limit - Items per page (default: 20)
|
|
32
|
+
* @returns Paginated list of pending download links
|
|
33
|
+
*/
|
|
34
|
+
getPending(page?: number, limit?: number): Promise<DownloadLinksListResponse | null>;
|
|
35
|
+
/**
|
|
36
|
+
* Moderate a download link (moderator/admin only)
|
|
37
|
+
* @param id - Download link ID
|
|
38
|
+
* @param data - Moderation data (status)
|
|
39
|
+
* @returns Updated download link
|
|
40
|
+
*/
|
|
41
|
+
moderate(id: number, data: ModerateDownloadLinkRequest): Promise<DownloadLink | null>;
|
|
42
|
+
/**
|
|
43
|
+
* Get a specific download link by ID
|
|
44
|
+
* @param id - Download link ID
|
|
45
|
+
* @returns Download link or null if not found
|
|
46
|
+
*/
|
|
47
|
+
getById(id: number): Promise<DownloadLink | null>;
|
|
48
|
+
/**
|
|
49
|
+
* Update a download link
|
|
50
|
+
* @param id - Download link ID
|
|
51
|
+
* @param data - Update data
|
|
52
|
+
* @returns Updated download link
|
|
53
|
+
*/
|
|
54
|
+
update(id: number, data: UpdateDownloadLinkRequest): Promise<DownloadLink | null>;
|
|
55
|
+
/**
|
|
56
|
+
* Delete a download link
|
|
57
|
+
* @param id - Download link ID
|
|
58
|
+
* @returns True if deleted successfully
|
|
59
|
+
*/
|
|
60
|
+
delete(id: number): Promise<boolean>;
|
|
61
|
+
}
|
|
62
|
+
/**
|
|
63
|
+
* Creates a downloads repository with the given REST client
|
|
64
|
+
*/
|
|
65
|
+
export declare function createDownloadsRepository(fetcher: RestFetcher, config: ChanomhubConfig): DownloadsRepository;
|
|
66
|
+
//# sourceMappingURL=downloadsRepository.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"downloadsRepository.d.ts","sourceRoot":"","sources":["../../repositories/downloadsRepository.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,WAAW,CAAC;AAC7C,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,WAAW,CAAC;AAEjD,OAAO,KAAK,EACR,YAAY,EACZ,yBAAyB,EACzB,yBAAyB,EACzB,2BAA2B,EAE3B,yBAAyB,EACzB,oBAAoB,EAEvB,MAAM,mBAAmB,CAAC;AAE3B,MAAM,WAAW,mBAAmB;IAChC;;;;OAIG;IACH,MAAM,CAAC,IAAI,EAAE,yBAAyB,GAAG,OAAO,CAAC,YAAY,GAAG,IAAI,CAAC,CAAC;IAEtE;;;;OAIG;IACH,MAAM,CAAC,OAAO,CAAC,EAAE,oBAAoB,GAAG,OAAO,CAAC,yBAAyB,GAAG,IAAI,CAAC,CAAC;IAElF;;;;OAIG;IACH,YAAY,CAAC,SAAS,EAAE,MAAM,GAAG,OAAO,CAAC,YAAY,EAAE,CAAC,CAAC;IAEzD;;;;;OAKG;IACH,UAAU,CAAC,IAAI,CAAC,EAAE,MAAM,EAAE,KAAK,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC,yBAAyB,GAAG,IAAI,CAAC,CAAC;IAErF;;;;;OAKG;IACH,QAAQ,CAAC,EAAE,EAAE,MAAM,EAAE,IAAI,EAAE,2BAA2B,GAAG,OAAO,CAAC,YAAY,GAAG,IAAI,CAAC,CAAC;IAEtF;;;;OAIG;IACH,OAAO,CAAC,EAAE,EAAE,MAAM,GAAG,OAAO,CAAC,YAAY,GAAG,IAAI,CAAC,CAAC;IAElD;;;;;OAKG;IACH,MAAM,CAAC,EAAE,EAAE,MAAM,EAAE,IAAI,EAAE,yBAAyB,GAAG,OAAO,CAAC,YAAY,GAAG,IAAI,CAAC,CAAC;IAElF;;;;OAIG;IACH,MAAM,CAAC,EAAE,EAAE,MAAM,GAAG,OAAO,CAAC,OAAO,CAAC,CAAC;CACxC;AAED;;GAEG;AACH,wBAAgB,yBAAyB,CACrC,OAAO,EAAE,WAAW,EACpB,MAAM,EAAE,eAAe,GACxB,mBAAmB,CAwJrB"}
|
|
@@ -0,0 +1,115 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
/**
|
|
3
|
+
* Chanomhub SDK - Downloads Repository
|
|
4
|
+
*
|
|
5
|
+
* Provides API methods for managing download links.
|
|
6
|
+
*/
|
|
7
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
8
|
+
exports.createDownloadsRepository = createDownloadsRepository;
|
|
9
|
+
const errors_1 = require("../errors");
|
|
10
|
+
/**
|
|
11
|
+
* Creates a downloads repository with the given REST client
|
|
12
|
+
*/
|
|
13
|
+
function createDownloadsRepository(fetcher, config) {
|
|
14
|
+
function requireAuth() {
|
|
15
|
+
if (!config.token) {
|
|
16
|
+
throw new errors_1.AuthenticationError('Authentication required for downloads management. Use createAuthenticatedClient() or provide a token.');
|
|
17
|
+
}
|
|
18
|
+
}
|
|
19
|
+
async function create(data) {
|
|
20
|
+
var _a;
|
|
21
|
+
requireAuth();
|
|
22
|
+
const { data: response, error } = await fetcher('/api/downloads', { method: 'POST', body: data });
|
|
23
|
+
if (error) {
|
|
24
|
+
console.error('Failed to create download link:', error);
|
|
25
|
+
return null;
|
|
26
|
+
}
|
|
27
|
+
return (_a = response === null || response === void 0 ? void 0 : response.downloadLink) !== null && _a !== void 0 ? _a : null;
|
|
28
|
+
}
|
|
29
|
+
async function getAll(options) {
|
|
30
|
+
requireAuth();
|
|
31
|
+
const params = new URLSearchParams();
|
|
32
|
+
if (options === null || options === void 0 ? void 0 : options.status)
|
|
33
|
+
params.set('status', options.status);
|
|
34
|
+
if (options === null || options === void 0 ? void 0 : options.page)
|
|
35
|
+
params.set('page', String(options.page));
|
|
36
|
+
if (options === null || options === void 0 ? void 0 : options.limit)
|
|
37
|
+
params.set('limit', String(options.limit));
|
|
38
|
+
const queryString = params.toString();
|
|
39
|
+
const url = `/api/downloads${queryString ? `?${queryString}` : ''}`;
|
|
40
|
+
const { data, error } = await fetcher(url, { method: 'GET' });
|
|
41
|
+
if (error) {
|
|
42
|
+
console.error('Failed to get download links:', error);
|
|
43
|
+
return null;
|
|
44
|
+
}
|
|
45
|
+
return data;
|
|
46
|
+
}
|
|
47
|
+
async function getByArticle(articleId) {
|
|
48
|
+
const { data, error } = await fetcher(`/api/downloads/article/${articleId}`, { method: 'GET' });
|
|
49
|
+
if (error) {
|
|
50
|
+
console.error('Failed to get download links for article:', error);
|
|
51
|
+
return [];
|
|
52
|
+
}
|
|
53
|
+
return data !== null && data !== void 0 ? data : [];
|
|
54
|
+
}
|
|
55
|
+
async function getPending(page = 1, limit = 20) {
|
|
56
|
+
requireAuth();
|
|
57
|
+
const params = new URLSearchParams();
|
|
58
|
+
params.set('page', String(page));
|
|
59
|
+
params.set('limit', String(limit));
|
|
60
|
+
const { data, error } = await fetcher(`/api/downloads/pending?${params.toString()}`, { method: 'GET' });
|
|
61
|
+
if (error) {
|
|
62
|
+
console.error('Failed to get pending download links:', error);
|
|
63
|
+
return null;
|
|
64
|
+
}
|
|
65
|
+
return data;
|
|
66
|
+
}
|
|
67
|
+
async function moderate(id, moderationData) {
|
|
68
|
+
var _a;
|
|
69
|
+
requireAuth();
|
|
70
|
+
const { data: response, error } = await fetcher(`/api/downloads/${id}/moderate`, { method: 'PATCH', body: moderationData });
|
|
71
|
+
if (error) {
|
|
72
|
+
console.error('Failed to moderate download link:', error);
|
|
73
|
+
return null;
|
|
74
|
+
}
|
|
75
|
+
return (_a = response === null || response === void 0 ? void 0 : response.downloadLink) !== null && _a !== void 0 ? _a : null;
|
|
76
|
+
}
|
|
77
|
+
async function getById(id) {
|
|
78
|
+
const { data, error } = await fetcher(`/api/downloads/${id}`, { method: 'GET' });
|
|
79
|
+
if (error) {
|
|
80
|
+
console.error('Failed to get download link:', error);
|
|
81
|
+
return null;
|
|
82
|
+
}
|
|
83
|
+
return data;
|
|
84
|
+
}
|
|
85
|
+
async function update(id, updateData) {
|
|
86
|
+
var _a;
|
|
87
|
+
requireAuth();
|
|
88
|
+
const { data: response, error } = await fetcher(`/api/downloads/${id}`, { method: 'PATCH', body: updateData });
|
|
89
|
+
if (error) {
|
|
90
|
+
console.error('Failed to update download link:', error);
|
|
91
|
+
return null;
|
|
92
|
+
}
|
|
93
|
+
return (_a = response === null || response === void 0 ? void 0 : response.downloadLink) !== null && _a !== void 0 ? _a : null;
|
|
94
|
+
}
|
|
95
|
+
async function deleteDownload(id) {
|
|
96
|
+
requireAuth();
|
|
97
|
+
const { error } = await fetcher(`/api/downloads/${id}`, { method: 'DELETE' });
|
|
98
|
+
if (error) {
|
|
99
|
+
console.error('Failed to delete download link:', error);
|
|
100
|
+
return false;
|
|
101
|
+
}
|
|
102
|
+
return true;
|
|
103
|
+
}
|
|
104
|
+
return {
|
|
105
|
+
create,
|
|
106
|
+
getAll,
|
|
107
|
+
getByArticle,
|
|
108
|
+
getPending,
|
|
109
|
+
moderate,
|
|
110
|
+
getById,
|
|
111
|
+
update,
|
|
112
|
+
delete: deleteDownload,
|
|
113
|
+
};
|
|
114
|
+
}
|
|
115
|
+
//# sourceMappingURL=downloadsRepository.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"downloadsRepository.js","sourceRoot":"","sources":["../../repositories/downloadsRepository.ts"],"names":[],"mappings":"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"}
|
|
@@ -6,4 +6,5 @@ export { createFavoritesRepository, type FavoritesRepository, type FavoriteRespo
|
|
|
6
6
|
export { createUsersRepository, type UsersRepository } from './usersRepository';
|
|
7
7
|
export { createSearchRepository, type SearchRepository, type SearchOptions, } from './searchRepository';
|
|
8
8
|
export { createAuthRepository, type AuthRepository } from './authRepository';
|
|
9
|
+
export { createDownloadsRepository, type DownloadsRepository } from './downloadsRepository';
|
|
9
10
|
//# sourceMappingURL=index.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../repositories/index.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,OAAO,EAAE,uBAAuB,EAAE,KAAK,iBAAiB,EAAE,MAAM,qBAAqB,CAAC;AACtF,OAAO,EACH,yBAAyB,EACzB,KAAK,mBAAmB,EACxB,KAAK,gBAAgB,GACxB,MAAM,uBAAuB,CAAC;AAC/B,OAAO,EAAE,qBAAqB,EAAE,KAAK,eAAe,EAAE,MAAM,mBAAmB,CAAC;AAChF,OAAO,EACH,sBAAsB,EACtB,KAAK,gBAAgB,EACrB,KAAK,aAAa,GACrB,MAAM,oBAAoB,CAAC;AAC5B,OAAO,EAAE,oBAAoB,EAAE,KAAK,cAAc,EAAE,MAAM,kBAAkB,CAAC"}
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../repositories/index.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,OAAO,EAAE,uBAAuB,EAAE,KAAK,iBAAiB,EAAE,MAAM,qBAAqB,CAAC;AACtF,OAAO,EACH,yBAAyB,EACzB,KAAK,mBAAmB,EACxB,KAAK,gBAAgB,GACxB,MAAM,uBAAuB,CAAC;AAC/B,OAAO,EAAE,qBAAqB,EAAE,KAAK,eAAe,EAAE,MAAM,mBAAmB,CAAC;AAChF,OAAO,EACH,sBAAsB,EACtB,KAAK,gBAAgB,EACrB,KAAK,aAAa,GACrB,MAAM,oBAAoB,CAAC;AAC5B,OAAO,EAAE,oBAAoB,EAAE,KAAK,cAAc,EAAE,MAAM,kBAAkB,CAAC;AAC7E,OAAO,EAAE,yBAAyB,EAAE,KAAK,mBAAmB,EAAE,MAAM,uBAAuB,CAAC"}
|
|
@@ -3,7 +3,7 @@
|
|
|
3
3
|
* Chanomhub SDK - Repositories Index
|
|
4
4
|
*/
|
|
5
5
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
6
|
-
exports.createAuthRepository = exports.createSearchRepository = exports.createUsersRepository = exports.createFavoritesRepository = exports.createArticleRepository = void 0;
|
|
6
|
+
exports.createDownloadsRepository = exports.createAuthRepository = exports.createSearchRepository = exports.createUsersRepository = exports.createFavoritesRepository = exports.createArticleRepository = void 0;
|
|
7
7
|
var articleRepository_1 = require("./articleRepository");
|
|
8
8
|
Object.defineProperty(exports, "createArticleRepository", { enumerable: true, get: function () { return articleRepository_1.createArticleRepository; } });
|
|
9
9
|
var favoritesRepository_1 = require("./favoritesRepository");
|
|
@@ -14,4 +14,6 @@ var searchRepository_1 = require("./searchRepository");
|
|
|
14
14
|
Object.defineProperty(exports, "createSearchRepository", { enumerable: true, get: function () { return searchRepository_1.createSearchRepository; } });
|
|
15
15
|
var authRepository_1 = require("./authRepository");
|
|
16
16
|
Object.defineProperty(exports, "createAuthRepository", { enumerable: true, get: function () { return authRepository_1.createAuthRepository; } });
|
|
17
|
+
var downloadsRepository_1 = require("./downloadsRepository");
|
|
18
|
+
Object.defineProperty(exports, "createDownloadsRepository", { enumerable: true, get: function () { return downloadsRepository_1.createDownloadsRepository; } });
|
|
17
19
|
//# sourceMappingURL=index.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../repositories/index.ts"],"names":[],"mappings":";AAAA;;GAEG;;;AAEH,yDAAsF;AAA7E,4HAAA,uBAAuB,OAAA;AAChC,6DAI+B;AAH3B,gIAAA,yBAAyB,OAAA;AAI7B,qDAAgF;AAAvE,wHAAA,qBAAqB,OAAA;AAC9B,uDAI4B;AAHxB,0HAAA,sBAAsB,OAAA;AAI1B,mDAA6E;AAApE,sHAAA,oBAAoB,OAAA"}
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../repositories/index.ts"],"names":[],"mappings":";AAAA;;GAEG;;;AAEH,yDAAsF;AAA7E,4HAAA,uBAAuB,OAAA;AAChC,6DAI+B;AAH3B,gIAAA,yBAAyB,OAAA;AAI7B,qDAAgF;AAAvE,wHAAA,qBAAqB,OAAA;AAC9B,uDAI4B;AAHxB,0HAAA,sBAAsB,OAAA;AAI1B,mDAA6E;AAApE,sHAAA,oBAAoB,OAAA;AAC7B,6DAA4F;AAAnF,gIAAA,yBAAyB,OAAA"}
|
|
@@ -10,6 +10,15 @@
|
|
|
10
10
|
* - Handles null/undefined gracefully
|
|
11
11
|
*/
|
|
12
12
|
export declare function resolveImageUrl(imageUrl: string | null | undefined, cdnUrl: string): string | null;
|
|
13
|
+
/**
|
|
14
|
+
* Generates a fallback URL (original source) for an image.
|
|
15
|
+
* Useful when the CDN is unavailable or fails to load.
|
|
16
|
+
*
|
|
17
|
+
* @param imageUrl - The full image URL (potentially from CDN) or filename
|
|
18
|
+
* @param cdnUrl - The CDN base URL to strip (if present)
|
|
19
|
+
* @param storageUrl - The original storage base URL to prepend
|
|
20
|
+
*/
|
|
21
|
+
export declare function getFallbackUrl(imageUrl: string | null | undefined, cdnUrl: string, storageUrl?: string): string | null;
|
|
13
22
|
/**
|
|
14
23
|
* Deep transforms all image URLs in an object/array recursively.
|
|
15
24
|
*/
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"imageUrl.d.ts","sourceRoot":"","sources":["../../transforms/imageUrl.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH;;;;;GAKG;AACH,wBAAgB,eAAe,CAC3B,QAAQ,EAAE,MAAM,GAAG,IAAI,GAAG,SAAS,EACnC,MAAM,EAAE,MAAM,GACf,MAAM,GAAG,IAAI,CAUf;AAKD;;GAEG;AACH,wBAAgB,sBAAsB,CAAC,CAAC,EAAE,IAAI,EAAE,CAAC,EAAE,MAAM,EAAE,MAAM,GAAG,CAAC,CAoCpE"}
|
|
1
|
+
{"version":3,"file":"imageUrl.d.ts","sourceRoot":"","sources":["../../transforms/imageUrl.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH;;;;;GAKG;AACH,wBAAgB,eAAe,CAC3B,QAAQ,EAAE,MAAM,GAAG,IAAI,GAAG,SAAS,EACnC,MAAM,EAAE,MAAM,GACf,MAAM,GAAG,IAAI,CAUf;AAED;;;;;;;GAOG;AACH,wBAAgB,cAAc,CAC1B,QAAQ,EAAE,MAAM,GAAG,IAAI,GAAG,SAAS,EACnC,MAAM,EAAE,MAAM,EACd,UAAU,CAAC,EAAE,MAAM,GACpB,MAAM,GAAG,IAAI,CAyBf;AAKD;;GAEG;AACH,wBAAgB,sBAAsB,CAAC,CAAC,EAAE,IAAI,EAAE,CAAC,EAAE,MAAM,EAAE,MAAM,GAAG,CAAC,CAoCpE"}
|
|
@@ -6,6 +6,7 @@
|
|
|
6
6
|
*/
|
|
7
7
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
8
8
|
exports.resolveImageUrl = resolveImageUrl;
|
|
9
|
+
exports.getFallbackUrl = getFallbackUrl;
|
|
9
10
|
exports.transformImageUrlsDeep = transformImageUrlsDeep;
|
|
10
11
|
/**
|
|
11
12
|
* Resolves an image URL.
|
|
@@ -23,6 +24,38 @@ function resolveImageUrl(imageUrl, cdnUrl) {
|
|
|
23
24
|
// Filename only - prepend CDN base URL
|
|
24
25
|
return `${cdnUrl}/${imageUrl}`;
|
|
25
26
|
}
|
|
27
|
+
/**
|
|
28
|
+
* Generates a fallback URL (original source) for an image.
|
|
29
|
+
* Useful when the CDN is unavailable or fails to load.
|
|
30
|
+
*
|
|
31
|
+
* @param imageUrl - The full image URL (potentially from CDN) or filename
|
|
32
|
+
* @param cdnUrl - The CDN base URL to strip (if present)
|
|
33
|
+
* @param storageUrl - The original storage base URL to prepend
|
|
34
|
+
*/
|
|
35
|
+
function getFallbackUrl(imageUrl, cdnUrl, storageUrl) {
|
|
36
|
+
if (!imageUrl)
|
|
37
|
+
return null;
|
|
38
|
+
let filename = imageUrl;
|
|
39
|
+
// If it's a full CDN URL, strip the CDN prefix
|
|
40
|
+
if (imageUrl.startsWith(cdnUrl)) {
|
|
41
|
+
// Remove cdnUrl and any leading slash
|
|
42
|
+
const relativePath = imageUrl.slice(cdnUrl.length);
|
|
43
|
+
filename = relativePath.startsWith('/') ? relativePath.slice(1) : relativePath;
|
|
44
|
+
}
|
|
45
|
+
else if (imageUrl.startsWith('http://') || imageUrl.startsWith('https://')) {
|
|
46
|
+
// If it's another full URL (not our CDN), return as-is or null?
|
|
47
|
+
// Assume if it's not our CDN, we can't fallback easily unless it's just a filename
|
|
48
|
+
// But if the input was already just a filename, we use it.
|
|
49
|
+
// If it is some other external URL, we probably just return it as is or null.
|
|
50
|
+
// For safety, if it doesn't start with CDN url, and is a full url, we assume it might already be the fallback or external.
|
|
51
|
+
return imageUrl;
|
|
52
|
+
}
|
|
53
|
+
// Prepend storage URL if available
|
|
54
|
+
if (storageUrl) {
|
|
55
|
+
return `${storageUrl}/${filename}`;
|
|
56
|
+
}
|
|
57
|
+
return filename;
|
|
58
|
+
}
|
|
26
59
|
/** Known image field names */
|
|
27
60
|
const IMAGE_FIELDS = new Set(['mainImage', 'backgroundImage', 'coverImage', 'image']);
|
|
28
61
|
/**
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"imageUrl.js","sourceRoot":"","sources":["../../transforms/imageUrl.ts"],"names":[],"mappings":";AAAA;;;;GAIG;;AAQH,0CAaC;AAQD,wDAoCC;
|
|
1
|
+
{"version":3,"file":"imageUrl.js","sourceRoot":"","sources":["../../transforms/imageUrl.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,65 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Chanomhub SDK - Download Types
|
|
3
|
+
*/
|
|
4
|
+
/** Source status for moderation */
|
|
5
|
+
export type SourceStatus = 'PENDING' | 'APPROVED' | 'REJECTED';
|
|
6
|
+
/** Download link entity */
|
|
7
|
+
export interface DownloadLink {
|
|
8
|
+
id: number;
|
|
9
|
+
articleId: number;
|
|
10
|
+
createdById?: number | null;
|
|
11
|
+
name?: string | null;
|
|
12
|
+
url: string;
|
|
13
|
+
isActive: boolean;
|
|
14
|
+
status: SourceStatus;
|
|
15
|
+
vipOnly: boolean;
|
|
16
|
+
forVersion?: string | null;
|
|
17
|
+
createdAt: string;
|
|
18
|
+
updatedAt: string;
|
|
19
|
+
/** Included when expanded */
|
|
20
|
+
createdBy?: {
|
|
21
|
+
id: number;
|
|
22
|
+
name: string;
|
|
23
|
+
} | null;
|
|
24
|
+
}
|
|
25
|
+
/** Request to create a new download link */
|
|
26
|
+
export interface CreateDownloadLinkRequest {
|
|
27
|
+
[key: string]: unknown;
|
|
28
|
+
articleId: number;
|
|
29
|
+
name?: string;
|
|
30
|
+
url: string;
|
|
31
|
+
vipOnly?: boolean;
|
|
32
|
+
forVersion?: string;
|
|
33
|
+
}
|
|
34
|
+
/** Request to update a download link */
|
|
35
|
+
export interface UpdateDownloadLinkRequest {
|
|
36
|
+
[key: string]: unknown;
|
|
37
|
+
name?: string;
|
|
38
|
+
url?: string;
|
|
39
|
+
isActive?: boolean;
|
|
40
|
+
vipOnly?: boolean;
|
|
41
|
+
forVersion?: string;
|
|
42
|
+
}
|
|
43
|
+
/** Request to moderate a download link */
|
|
44
|
+
export interface ModerateDownloadLinkRequest {
|
|
45
|
+
[key: string]: unknown;
|
|
46
|
+
status: 'APPROVED' | 'REJECTED';
|
|
47
|
+
}
|
|
48
|
+
/** Response for create/update operations */
|
|
49
|
+
export interface DownloadLinkResponse {
|
|
50
|
+
downloadLink: DownloadLink;
|
|
51
|
+
}
|
|
52
|
+
/** Paginated list of download links */
|
|
53
|
+
export interface DownloadLinksListResponse {
|
|
54
|
+
items: DownloadLink[];
|
|
55
|
+
total: number;
|
|
56
|
+
page: number;
|
|
57
|
+
pageSize: number;
|
|
58
|
+
}
|
|
59
|
+
/** Options for listing downloads */
|
|
60
|
+
export interface ListDownloadsOptions {
|
|
61
|
+
status?: SourceStatus;
|
|
62
|
+
page?: number;
|
|
63
|
+
limit?: number;
|
|
64
|
+
}
|
|
65
|
+
//# sourceMappingURL=download.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"download.d.ts","sourceRoot":"","sources":["../../types/download.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,mCAAmC;AACnC,MAAM,MAAM,YAAY,GAAG,SAAS,GAAG,UAAU,GAAG,UAAU,CAAC;AAE/D,2BAA2B;AAC3B,MAAM,WAAW,YAAY;IACzB,EAAE,EAAE,MAAM,CAAC;IACX,SAAS,EAAE,MAAM,CAAC;IAClB,WAAW,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IAC5B,IAAI,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IACrB,GAAG,EAAE,MAAM,CAAC;IACZ,QAAQ,EAAE,OAAO,CAAC;IAClB,MAAM,EAAE,YAAY,CAAC;IACrB,OAAO,EAAE,OAAO,CAAC;IACjB,UAAU,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IAC3B,SAAS,EAAE,MAAM,CAAC;IAClB,SAAS,EAAE,MAAM,CAAC;IAClB,6BAA6B;IAC7B,SAAS,CAAC,EAAE;QACR,EAAE,EAAE,MAAM,CAAC;QACX,IAAI,EAAE,MAAM,CAAC;KAChB,GAAG,IAAI,CAAC;CACZ;AAED,4CAA4C;AAC5C,MAAM,WAAW,yBAAyB;IACtC,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC;IACvB,SAAS,EAAE,MAAM,CAAC;IAClB,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,GAAG,EAAE,MAAM,CAAC;IACZ,OAAO,CAAC,EAAE,OAAO,CAAC;IAClB,UAAU,CAAC,EAAE,MAAM,CAAC;CACvB;AAED,wCAAwC;AACxC,MAAM,WAAW,yBAAyB;IACtC,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC;IACvB,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,GAAG,CAAC,EAAE,MAAM,CAAC;IACb,QAAQ,CAAC,EAAE,OAAO,CAAC;IACnB,OAAO,CAAC,EAAE,OAAO,CAAC;IAClB,UAAU,CAAC,EAAE,MAAM,CAAC;CACvB;AAED,0CAA0C;AAC1C,MAAM,WAAW,2BAA2B;IACxC,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC;IACvB,MAAM,EAAE,UAAU,GAAG,UAAU,CAAC;CACnC;AAED,4CAA4C;AAC5C,MAAM,WAAW,oBAAoB;IACjC,YAAY,EAAE,YAAY,CAAC;CAC9B;AAED,uCAAuC;AACvC,MAAM,WAAW,yBAAyB;IACtC,KAAK,EAAE,YAAY,EAAE,CAAC;IACtB,KAAK,EAAE,MAAM,CAAC;IACd,IAAI,EAAE,MAAM,CAAC;IACb,QAAQ,EAAE,MAAM,CAAC;CACpB;AAED,oCAAoC;AACpC,MAAM,WAAW,oBAAoB;IACjC,MAAM,CAAC,EAAE,YAAY,CAAC;IACtB,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,KAAK,CAAC,EAAE,MAAM,CAAC;CAClB"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"download.js","sourceRoot":"","sources":["../../types/download.ts"],"names":[],"mappings":";AAAA;;GAEG"}
|
package/dist/types/index.d.ts
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../types/index.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,cAAc,UAAU,CAAC;AACzB,cAAc,WAAW,CAAC;AAC1B,cAAc,QAAQ,CAAC;AACvB,YAAY,EAAE,eAAe,EAAE,MAAM,QAAQ,CAAC;AAC9C,cAAc,QAAQ,CAAC"}
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../types/index.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,cAAc,UAAU,CAAC;AACzB,cAAc,WAAW,CAAC;AAC1B,cAAc,QAAQ,CAAC;AACvB,YAAY,EAAE,eAAe,EAAE,MAAM,QAAQ,CAAC;AAC9C,cAAc,QAAQ,CAAC;AACvB,cAAc,YAAY,CAAC"}
|
package/dist/types/index.js
CHANGED
package/dist/types/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../types/index.ts"],"names":[],"mappings":";AAAA;;GAEG;;;;;;;;;;;;;;;;AAEH,2CAAyB;AACzB,4CAA0B;AAC1B,yCAAuB;AAEvB,yCAAuB"}
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../types/index.ts"],"names":[],"mappings":";AAAA;;GAEG;;;;;;;;;;;;;;;;AAEH,2CAAyB;AACzB,4CAA0B;AAC1B,yCAAuB;AAEvB,yCAAuB;AACvB,6CAA2B"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@chanomhub/sdk",
|
|
3
|
-
"version": "1.2.
|
|
3
|
+
"version": "1.2.3",
|
|
4
4
|
"description": "ChanomHub SDK",
|
|
5
5
|
"main": "dist/index.js",
|
|
6
6
|
"types": "dist/index.d.ts",
|
|
@@ -48,23 +48,23 @@
|
|
|
48
48
|
"author": "",
|
|
49
49
|
"license": "ISC",
|
|
50
50
|
"devDependencies": {
|
|
51
|
-
"@supabase/supabase-js": "^2.
|
|
52
|
-
"@types/node": "^25.0.
|
|
53
|
-
"@typescript-eslint/eslint-plugin": "^8.
|
|
54
|
-
"@typescript-eslint/parser": "^8.
|
|
55
|
-
"@vitest/coverage-v8": "^4.0.
|
|
51
|
+
"@supabase/supabase-js": "^2.93.2",
|
|
52
|
+
"@types/node": "^25.0.10",
|
|
53
|
+
"@typescript-eslint/eslint-plugin": "^8.54.0",
|
|
54
|
+
"@typescript-eslint/parser": "^8.54.0",
|
|
55
|
+
"@vitest/coverage-v8": "^4.0.18",
|
|
56
56
|
"eslint": "^9.39.2",
|
|
57
57
|
"eslint-config-prettier": "^10.1.8",
|
|
58
|
-
"eslint-plugin-prettier": "^5.5.
|
|
58
|
+
"eslint-plugin-prettier": "^5.5.5",
|
|
59
59
|
"msw": "^2.12.7",
|
|
60
|
-
"next": "^16.1.
|
|
61
|
-
"prettier": "^3.
|
|
60
|
+
"next": "^16.1.6",
|
|
61
|
+
"prettier": "^3.8.1",
|
|
62
62
|
"starlight-typedoc": "^0.21.5",
|
|
63
|
-
"typedoc": "^0.28.
|
|
63
|
+
"typedoc": "^0.28.16",
|
|
64
64
|
"typedoc-plugin-markdown": "^4.9.0",
|
|
65
65
|
"typescript": "^5.9.3",
|
|
66
|
-
"typescript-eslint": "^8.
|
|
67
|
-
"vitest": "^4.0.
|
|
66
|
+
"typescript-eslint": "^8.54.0",
|
|
67
|
+
"vitest": "^4.0.18"
|
|
68
68
|
},
|
|
69
69
|
"peerDependencies": {
|
|
70
70
|
"@supabase/supabase-js": ">=2.0.0",
|