@chanomhub/sdk 1.0.5 → 1.0.6

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.
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=errors.test.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"errors.test.d.ts","sourceRoot":"","sources":["../../__tests__/errors.test.ts"],"names":[],"mappings":""}
@@ -0,0 +1,116 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ const vitest_1 = require("vitest");
4
+ const errors_1 = require("../errors");
5
+ (0, vitest_1.describe)('Error Classes', () => {
6
+ (0, vitest_1.describe)('ChanomhubError', () => {
7
+ (0, vitest_1.it)('should create error with message and defaults', () => {
8
+ const error = new errors_1.ChanomhubError('Test error');
9
+ (0, vitest_1.expect)(error.message).toBe('Test error');
10
+ (0, vitest_1.expect)(error.statusCode).toBe(500);
11
+ (0, vitest_1.expect)(error.code).toBe('UNKNOWN_ERROR');
12
+ (0, vitest_1.expect)(error.name).toBe('ChanomhubError');
13
+ });
14
+ (0, vitest_1.it)('should create error with custom status and code', () => {
15
+ const error = new errors_1.ChanomhubError('Custom', 418, 'TEAPOT');
16
+ (0, vitest_1.expect)(error.statusCode).toBe(418);
17
+ (0, vitest_1.expect)(error.code).toBe('TEAPOT');
18
+ });
19
+ });
20
+ (0, vitest_1.describe)('AuthenticationError', () => {
21
+ (0, vitest_1.it)('should create with default message', () => {
22
+ const error = new errors_1.AuthenticationError();
23
+ (0, vitest_1.expect)(error.message).toBe('Authentication required');
24
+ (0, vitest_1.expect)(error.statusCode).toBe(401);
25
+ (0, vitest_1.expect)(error.code).toBe('AUTHENTICATION_ERROR');
26
+ (0, vitest_1.expect)(error.name).toBe('AuthenticationError');
27
+ });
28
+ (0, vitest_1.it)('should create with custom message', () => {
29
+ const error = new errors_1.AuthenticationError('Token expired');
30
+ (0, vitest_1.expect)(error.message).toBe('Token expired');
31
+ });
32
+ });
33
+ (0, vitest_1.describe)('AuthorizationError', () => {
34
+ (0, vitest_1.it)('should create with correct properties', () => {
35
+ const error = new errors_1.AuthorizationError();
36
+ (0, vitest_1.expect)(error.message).toBe('Permission denied');
37
+ (0, vitest_1.expect)(error.statusCode).toBe(403);
38
+ (0, vitest_1.expect)(error.code).toBe('AUTHORIZATION_ERROR');
39
+ });
40
+ });
41
+ (0, vitest_1.describe)('NotFoundError', () => {
42
+ (0, vitest_1.it)('should create with correct properties', () => {
43
+ const error = new errors_1.NotFoundError();
44
+ (0, vitest_1.expect)(error.message).toBe('Resource not found');
45
+ (0, vitest_1.expect)(error.statusCode).toBe(404);
46
+ (0, vitest_1.expect)(error.code).toBe('NOT_FOUND');
47
+ });
48
+ });
49
+ (0, vitest_1.describe)('ValidationError', () => {
50
+ (0, vitest_1.it)('should create with errors object', () => {
51
+ const validationErrors = { email: ['Invalid email'], password: ['Too short'] };
52
+ const error = new errors_1.ValidationError('Validation failed', validationErrors);
53
+ (0, vitest_1.expect)(error.statusCode).toBe(400);
54
+ (0, vitest_1.expect)(error.code).toBe('VALIDATION_ERROR');
55
+ (0, vitest_1.expect)(error.errors).toEqual(validationErrors);
56
+ });
57
+ });
58
+ (0, vitest_1.describe)('NetworkError', () => {
59
+ (0, vitest_1.it)('should create with correct properties', () => {
60
+ const error = new errors_1.NetworkError('Connection timeout');
61
+ (0, vitest_1.expect)(error.message).toBe('Connection timeout');
62
+ (0, vitest_1.expect)(error.statusCode).toBe(0);
63
+ (0, vitest_1.expect)(error.code).toBe('NETWORK_ERROR');
64
+ });
65
+ });
66
+ (0, vitest_1.describe)('RateLimitError', () => {
67
+ (0, vitest_1.it)('should create with retryAfter', () => {
68
+ const error = new errors_1.RateLimitError('Too many requests', 60);
69
+ (0, vitest_1.expect)(error.statusCode).toBe(429);
70
+ (0, vitest_1.expect)(error.code).toBe('RATE_LIMIT');
71
+ (0, vitest_1.expect)(error.retryAfter).toBe(60);
72
+ });
73
+ });
74
+ (0, vitest_1.describe)('createErrorFromStatus', () => {
75
+ (0, vitest_1.it)('should create AuthenticationError for 401', () => {
76
+ const error = (0, errors_1.createErrorFromStatus)(401, 'Unauthorized');
77
+ (0, vitest_1.expect)(error).toBeInstanceOf(errors_1.AuthenticationError);
78
+ });
79
+ (0, vitest_1.it)('should create AuthorizationError for 403', () => {
80
+ const error = (0, errors_1.createErrorFromStatus)(403, 'Forbidden');
81
+ (0, vitest_1.expect)(error).toBeInstanceOf(errors_1.AuthorizationError);
82
+ });
83
+ (0, vitest_1.it)('should create NotFoundError for 404', () => {
84
+ const error = (0, errors_1.createErrorFromStatus)(404, 'Not found');
85
+ (0, vitest_1.expect)(error).toBeInstanceOf(errors_1.NotFoundError);
86
+ });
87
+ (0, vitest_1.it)('should create ValidationError for 400', () => {
88
+ const error = (0, errors_1.createErrorFromStatus)(400, 'Bad request');
89
+ (0, vitest_1.expect)(error).toBeInstanceOf(errors_1.ValidationError);
90
+ });
91
+ (0, vitest_1.it)('should create RateLimitError for 429', () => {
92
+ const error = (0, errors_1.createErrorFromStatus)(429, 'Rate limited');
93
+ (0, vitest_1.expect)(error).toBeInstanceOf(errors_1.RateLimitError);
94
+ });
95
+ (0, vitest_1.it)('should create ChanomhubError for unknown status', () => {
96
+ const error = (0, errors_1.createErrorFromStatus)(500, 'Server error');
97
+ (0, vitest_1.expect)(error).toBeInstanceOf(errors_1.ChanomhubError);
98
+ (0, vitest_1.expect)(error.statusCode).toBe(500);
99
+ });
100
+ });
101
+ (0, vitest_1.describe)('Error inheritance', () => {
102
+ (0, vitest_1.it)('all errors should be instanceof ChanomhubError', () => {
103
+ (0, vitest_1.expect)(new errors_1.AuthenticationError()).toBeInstanceOf(errors_1.ChanomhubError);
104
+ (0, vitest_1.expect)(new errors_1.AuthorizationError()).toBeInstanceOf(errors_1.ChanomhubError);
105
+ (0, vitest_1.expect)(new errors_1.NotFoundError()).toBeInstanceOf(errors_1.ChanomhubError);
106
+ (0, vitest_1.expect)(new errors_1.ValidationError()).toBeInstanceOf(errors_1.ChanomhubError);
107
+ (0, vitest_1.expect)(new errors_1.NetworkError()).toBeInstanceOf(errors_1.ChanomhubError);
108
+ (0, vitest_1.expect)(new errors_1.RateLimitError()).toBeInstanceOf(errors_1.ChanomhubError);
109
+ });
110
+ (0, vitest_1.it)('all errors should be instanceof Error', () => {
111
+ (0, vitest_1.expect)(new errors_1.ChanomhubError('test')).toBeInstanceOf(Error);
112
+ (0, vitest_1.expect)(new errors_1.AuthenticationError()).toBeInstanceOf(Error);
113
+ });
114
+ });
115
+ });
116
+ //# sourceMappingURL=errors.test.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"errors.test.js","sourceRoot":"","sources":["../../__tests__/errors.test.ts"],"names":[],"mappings":"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"}
@@ -1,2 +1,2 @@
1
- export declare const handlers: import("msw").GraphQLHandler[];
1
+ export declare const handlers: (import("msw").GraphQLHandler | import("msw").HttpHandler)[];
2
2
  //# sourceMappingURL=handlers.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"handlers.d.ts","sourceRoot":"","sources":["../../../__tests__/mocks/handlers.ts"],"names":[],"mappings":"AAEA,eAAO,MAAM,QAAQ,gCAuGpB,CAAC"}
1
+ {"version":3,"file":"handlers.d.ts","sourceRoot":"","sources":["../../../__tests__/mocks/handlers.ts"],"names":[],"mappings":"AAIA,eAAO,MAAM,QAAQ,8DAyPpB,CAAC"}
@@ -2,6 +2,7 @@
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
3
  exports.handlers = void 0;
4
4
  const msw_1 = require("msw");
5
+ const BASE_URL = 'https://api.chanomhub.com';
5
6
  exports.handlers = [
6
7
  // Happy path: Get Articles
7
8
  msw_1.graphql.query('GetArticles', () => {
@@ -40,6 +41,51 @@ exports.handlers = [
40
41
  },
41
42
  });
42
43
  }),
44
+ // Paginated Articles
45
+ msw_1.graphql.query('GetArticlesPaginated', () => {
46
+ return msw_1.HttpResponse.json({
47
+ data: {
48
+ articles: [
49
+ { id: 1, title: 'Article 1', slug: 'article-1', mainImage: 'img1.jpg', author: { name: 'A1', image: null }, tags: [], platforms: [], categories: [], creators: [], images: [] },
50
+ { id: 2, title: 'Article 2', slug: 'article-2', mainImage: 'img2.jpg', author: { name: 'A2', image: null }, tags: [], platforms: [], categories: [], creators: [], images: [] },
51
+ ],
52
+ articlesCount: 100,
53
+ },
54
+ });
55
+ }),
56
+ // Search Articles
57
+ msw_1.graphql.query('SearchArticles', () => {
58
+ return msw_1.HttpResponse.json({
59
+ data: {
60
+ articles: [
61
+ { id: 1, title: 'Found Article', slug: 'found-article', mainImage: 'found.jpg', author: { name: 'Author', image: null }, tags: [], engine: { id: 'e1', name: 'RenPy' } },
62
+ ],
63
+ articlesCount: 1,
64
+ },
65
+ });
66
+ }),
67
+ // Articles by Tag/Platform/Category
68
+ msw_1.graphql.query('GetArticlesByTag', () => {
69
+ return msw_1.HttpResponse.json({
70
+ data: {
71
+ articles: [{ id: 1, title: 'Tagged Article', slug: 'tagged', mainImage: null, author: { name: 'A', image: null }, tags: [], platforms: [], categories: [], creators: [], images: [] }],
72
+ },
73
+ });
74
+ }),
75
+ msw_1.graphql.query('GetArticlesByPlatform', () => {
76
+ return msw_1.HttpResponse.json({
77
+ data: {
78
+ articles: [{ id: 1, title: 'Platform Article', slug: 'platform', mainImage: null, author: { name: 'A', image: null }, tags: [], platforms: [], categories: [], creators: [], images: [] }],
79
+ },
80
+ });
81
+ }),
82
+ msw_1.graphql.query('GetArticlesByCategory', () => {
83
+ return msw_1.HttpResponse.json({
84
+ data: {
85
+ articles: [{ id: 1, title: 'Category Article', slug: 'category', mainImage: null, author: { name: 'A', image: null }, tags: [], platforms: [], categories: [], creators: [], images: [] }],
86
+ },
87
+ });
88
+ }),
43
89
  // Happy path: Get Article By Slug
44
90
  msw_1.graphql.query('GetArticleBySlug', ({ variables }) => {
45
91
  const { slug } = variables;
@@ -88,6 +134,42 @@ exports.handlers = [
88
134
  },
89
135
  });
90
136
  }),
137
+ // Get Article with Downloads
138
+ msw_1.graphql.query('GetArticleWithDownloads', () => {
139
+ return msw_1.HttpResponse.json({
140
+ data: {
141
+ article: {
142
+ id: 1,
143
+ title: 'Article With Downloads',
144
+ slug: 'with-downloads',
145
+ description: 'Desc',
146
+ body: 'Body',
147
+ ver: '1.0',
148
+ createdAt: '2023-01-01',
149
+ updatedAt: '2023-01-01',
150
+ status: 'PUBLISHED',
151
+ engine: { id: 'e1', name: 'RenPy' },
152
+ mainImage: 'main.jpg',
153
+ backgroundImage: null,
154
+ coverImage: null,
155
+ favorited: false,
156
+ favoritesCount: 5,
157
+ sequentialCode: '001',
158
+ author: { name: 'Author', bio: null, image: null, backgroundImage: null, following: false, socialMediaLinks: [] },
159
+ images: [],
160
+ creators: [],
161
+ tags: [],
162
+ platforms: [],
163
+ categories: [],
164
+ mods: [],
165
+ },
166
+ downloads: [
167
+ { id: 1, name: 'Download 1', url: 'https://dl.com/1', isActive: true, vipOnly: false },
168
+ ],
169
+ officialDownloadSources: [],
170
+ },
171
+ });
172
+ }),
91
173
  // Error path: Internal Server Error simulation
92
174
  msw_1.graphql.query('ServerErrorQuery', () => {
93
175
  return new msw_1.HttpResponse(null, { status: 500 });
@@ -100,5 +182,57 @@ exports.handlers = [
100
182
  ]
101
183
  });
102
184
  }),
185
+ // ===================== REST API Handlers =====================
186
+ // Favorites - Add
187
+ msw_1.http.post(`${BASE_URL}/api/articles/:slug/favorite`, ({ params }) => {
188
+ const { slug } = params;
189
+ if (slug === 'unauthorized') {
190
+ return new msw_1.HttpResponse(null, { status: 401 });
191
+ }
192
+ return msw_1.HttpResponse.json({
193
+ article: { id: 1, slug, title: 'Favorited Article', favorited: true, favoritesCount: 11 }
194
+ });
195
+ }),
196
+ // Favorites - Remove
197
+ msw_1.http.delete(`${BASE_URL}/api/articles/:slug/favorite`, ({ params }) => {
198
+ const { slug } = params;
199
+ return msw_1.HttpResponse.json({
200
+ article: { id: 1, slug, title: 'Unfavorited Article', favorited: false, favoritesCount: 10 }
201
+ });
202
+ }),
203
+ // Users - Get Current User
204
+ msw_1.http.get(`${BASE_URL}/api/user`, ({ request }) => {
205
+ const auth = request.headers.get('Authorization');
206
+ if (!auth) {
207
+ return new msw_1.HttpResponse(null, { status: 401 });
208
+ }
209
+ return msw_1.HttpResponse.json({
210
+ user: { id: 1, email: 'test@example.com', username: 'testuser', bio: 'Hello', image: 'avatar.jpg' }
211
+ });
212
+ }),
213
+ // Profiles - Get Profile
214
+ msw_1.http.get(`${BASE_URL}/api/profiles/:username`, ({ params }) => {
215
+ const { username } = params;
216
+ if (username === 'notfound') {
217
+ return new msw_1.HttpResponse(null, { status: 404 });
218
+ }
219
+ return msw_1.HttpResponse.json({
220
+ profile: { username, bio: 'User bio', image: 'profile.jpg', following: false }
221
+ });
222
+ }),
223
+ // Profiles - Follow
224
+ msw_1.http.post(`${BASE_URL}/api/profiles/:username/follow`, ({ params }) => {
225
+ const { username } = params;
226
+ return msw_1.HttpResponse.json({
227
+ profile: { username, bio: 'User bio', image: 'profile.jpg', following: true }
228
+ });
229
+ }),
230
+ // Profiles - Unfollow
231
+ msw_1.http.delete(`${BASE_URL}/api/profiles/:username/follow`, ({ params }) => {
232
+ const { username } = params;
233
+ return msw_1.HttpResponse.json({
234
+ profile: { username, bio: 'User bio', image: 'profile.jpg', following: false }
235
+ });
236
+ }),
103
237
  ];
104
238
  //# sourceMappingURL=handlers.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"handlers.js","sourceRoot":"","sources":["../../../__tests__/mocks/handlers.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"handlers.js","sourceRoot":"","sources":["../../../__tests__/mocks/handlers.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=repositories.test.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"repositories.test.d.ts","sourceRoot":"","sources":["../../__tests__/repositories.test.ts"],"names":[],"mappings":""}
@@ -0,0 +1,103 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ const vitest_1 = require("vitest");
4
+ const index_1 = require("../index");
5
+ (0, vitest_1.describe)('Repositories Integration Tests', () => {
6
+ (0, vitest_1.describe)('ArticleRepository', () => {
7
+ (0, vitest_1.it)('should get paginated articles', async () => {
8
+ const client = (0, index_1.createChanomhubClient)();
9
+ const result = await client.articles.getAllPaginated({ limit: 10, offset: 0 });
10
+ (0, vitest_1.expect)(result.items).toHaveLength(2);
11
+ (0, vitest_1.expect)(result.total).toBe(100);
12
+ (0, vitest_1.expect)(result.page).toBe(1);
13
+ (0, vitest_1.expect)(result.pageSize).toBe(10);
14
+ });
15
+ (0, vitest_1.it)('should get articles by tag', async () => {
16
+ const client = (0, index_1.createChanomhubClient)();
17
+ const articles = await client.articles.getByTag('renpy');
18
+ (0, vitest_1.expect)(articles).toHaveLength(1);
19
+ (0, vitest_1.expect)(articles[0].title).toBe('Tagged Article');
20
+ });
21
+ (0, vitest_1.it)('should get articles by platform', async () => {
22
+ const client = (0, index_1.createChanomhubClient)();
23
+ const articles = await client.articles.getByPlatform('windows');
24
+ (0, vitest_1.expect)(articles).toHaveLength(1);
25
+ (0, vitest_1.expect)(articles[0].title).toBe('Platform Article');
26
+ });
27
+ (0, vitest_1.it)('should get articles by category', async () => {
28
+ const client = (0, index_1.createChanomhubClient)();
29
+ const articles = await client.articles.getByCategory('action');
30
+ (0, vitest_1.expect)(articles).toHaveLength(1);
31
+ (0, vitest_1.expect)(articles[0].title).toBe('Category Article');
32
+ });
33
+ (0, vitest_1.it)('should get article with downloads', async () => {
34
+ const client = (0, index_1.createChanomhubClient)();
35
+ const result = await client.articles.getWithDownloads('with-downloads');
36
+ (0, vitest_1.expect)(result.article).not.toBeNull();
37
+ (0, vitest_1.expect)(result.downloads).toHaveLength(1);
38
+ });
39
+ });
40
+ (0, vitest_1.describe)('SearchRepository', () => {
41
+ (0, vitest_1.it)('should search articles', async () => {
42
+ const client = (0, index_1.createChanomhubClient)();
43
+ const result = await client.search.articles('test query');
44
+ (0, vitest_1.expect)(result.items).toHaveLength(1);
45
+ (0, vitest_1.expect)(result.items[0].title).toBe('Found Article');
46
+ (0, vitest_1.expect)(result.total).toBe(1);
47
+ });
48
+ (0, vitest_1.it)('should search with filters', async () => {
49
+ const client = (0, index_1.createChanomhubClient)();
50
+ const result = await client.search.articles('game', { tag: 'renpy', limit: 5 });
51
+ (0, vitest_1.expect)(result.items).toHaveLength(1);
52
+ (0, vitest_1.expect)(result.pageSize).toBe(5);
53
+ });
54
+ });
55
+ (0, vitest_1.describe)('FavoritesRepository', () => {
56
+ (0, vitest_1.it)('should add article to favorites', async () => {
57
+ const client = (0, index_1.createAuthenticatedClient)('test-token');
58
+ const result = await client.favorites.add('test-article');
59
+ (0, vitest_1.expect)(result).not.toBeNull();
60
+ (0, vitest_1.expect)(result === null || result === void 0 ? void 0 : result.article.favorited).toBe(true);
61
+ });
62
+ (0, vitest_1.it)('should remove article from favorites', async () => {
63
+ const client = (0, index_1.createAuthenticatedClient)('test-token');
64
+ const result = await client.favorites.remove('test-article');
65
+ (0, vitest_1.expect)(result).not.toBeNull();
66
+ (0, vitest_1.expect)(result === null || result === void 0 ? void 0 : result.article.favorited).toBe(false);
67
+ });
68
+ });
69
+ (0, vitest_1.describe)('UsersRepository', () => {
70
+ (0, vitest_1.it)('should get current user when authenticated', async () => {
71
+ const client = (0, index_1.createAuthenticatedClient)('test-token');
72
+ const user = await client.users.getCurrentUser();
73
+ (0, vitest_1.expect)(user).not.toBeNull();
74
+ (0, vitest_1.expect)(user === null || user === void 0 ? void 0 : user.username).toBe('testuser');
75
+ (0, vitest_1.expect)(user === null || user === void 0 ? void 0 : user.email).toBe('test@example.com');
76
+ });
77
+ (0, vitest_1.it)('should return null when not authenticated', async () => {
78
+ const client = (0, index_1.createChanomhubClient)();
79
+ const user = await client.users.getCurrentUser();
80
+ (0, vitest_1.expect)(user).toBeNull();
81
+ });
82
+ (0, vitest_1.it)('should get user profile', async () => {
83
+ const client = (0, index_1.createChanomhubClient)();
84
+ const profile = await client.users.getProfile('testuser');
85
+ (0, vitest_1.expect)(profile).not.toBeNull();
86
+ (0, vitest_1.expect)(profile === null || profile === void 0 ? void 0 : profile.username).toBe('testuser');
87
+ (0, vitest_1.expect)(profile === null || profile === void 0 ? void 0 : profile.following).toBe(false);
88
+ });
89
+ (0, vitest_1.it)('should follow user', async () => {
90
+ const client = (0, index_1.createAuthenticatedClient)('test-token');
91
+ const profile = await client.users.follow('testuser');
92
+ (0, vitest_1.expect)(profile).not.toBeNull();
93
+ (0, vitest_1.expect)(profile === null || profile === void 0 ? void 0 : profile.following).toBe(true);
94
+ });
95
+ (0, vitest_1.it)('should unfollow user', async () => {
96
+ const client = (0, index_1.createAuthenticatedClient)('test-token');
97
+ const profile = await client.users.unfollow('testuser');
98
+ (0, vitest_1.expect)(profile).not.toBeNull();
99
+ (0, vitest_1.expect)(profile === null || profile === void 0 ? void 0 : profile.following).toBe(false);
100
+ });
101
+ });
102
+ });
103
+ //# sourceMappingURL=repositories.test.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"repositories.test.js","sourceRoot":"","sources":["../../__tests__/repositories.test.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,42 @@
1
+ /**
2
+ * Chanomhub SDK - Error Classes
3
+ *
4
+ * Typed errors for better error handling in applications
5
+ */
6
+ /** Base error class for all SDK errors */
7
+ export declare class ChanomhubError extends Error {
8
+ readonly statusCode: number;
9
+ readonly code: string;
10
+ constructor(message: string, statusCode?: number, code?: string);
11
+ }
12
+ /** Authentication error (401) - Missing or invalid token */
13
+ export declare class AuthenticationError extends ChanomhubError {
14
+ constructor(message?: string);
15
+ }
16
+ /** Authorization error (403) - Insufficient permissions */
17
+ export declare class AuthorizationError extends ChanomhubError {
18
+ constructor(message?: string);
19
+ }
20
+ /** Not found error (404) - Resource doesn't exist */
21
+ export declare class NotFoundError extends ChanomhubError {
22
+ constructor(message?: string);
23
+ }
24
+ /** Validation error (400) - Invalid request data */
25
+ export declare class ValidationError extends ChanomhubError {
26
+ readonly errors?: Record<string, string[]>;
27
+ constructor(message?: string, errors?: Record<string, string[]>);
28
+ }
29
+ /** Network error - Fetch failures, timeouts, etc. */
30
+ export declare class NetworkError extends ChanomhubError {
31
+ constructor(message?: string);
32
+ }
33
+ /** Rate limit error (429) - Too many requests */
34
+ export declare class RateLimitError extends ChanomhubError {
35
+ readonly retryAfter?: number;
36
+ constructor(message?: string, retryAfter?: number);
37
+ }
38
+ /**
39
+ * Creates the appropriate error class based on HTTP status code
40
+ */
41
+ export declare function createErrorFromStatus(status: number, message: string): ChanomhubError;
42
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../errors/index.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,0CAA0C;AAC1C,qBAAa,cAAe,SAAQ,KAAK;IACrC,QAAQ,CAAC,UAAU,EAAE,MAAM,CAAC;IAC5B,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;gBAEV,OAAO,EAAE,MAAM,EAAE,UAAU,GAAE,MAAY,EAAE,IAAI,GAAE,MAAwB;CAWxF;AAED,4DAA4D;AAC5D,qBAAa,mBAAoB,SAAQ,cAAc;gBACvC,OAAO,GAAE,MAAkC;CAI1D;AAED,2DAA2D;AAC3D,qBAAa,kBAAmB,SAAQ,cAAc;gBACtC,OAAO,GAAE,MAA4B;CAIpD;AAED,qDAAqD;AACrD,qBAAa,aAAc,SAAQ,cAAc;gBACjC,OAAO,GAAE,MAA6B;CAIrD;AAED,oDAAoD;AACpD,qBAAa,eAAgB,SAAQ,cAAc;IAC/C,QAAQ,CAAC,MAAM,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,EAAE,CAAC,CAAC;gBAE/B,OAAO,GAAE,MAA4B,EAAE,MAAM,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,EAAE,CAAC;CAKvF;AAED,qDAAqD;AACrD,qBAAa,YAAa,SAAQ,cAAc;gBAChC,OAAO,GAAE,MAAiC;CAIzD;AAED,iDAAiD;AACjD,qBAAa,cAAe,SAAQ,cAAc;IAC9C,QAAQ,CAAC,UAAU,CAAC,EAAE,MAAM,CAAC;gBAEjB,OAAO,GAAE,MAA8B,EAAE,UAAU,CAAC,EAAE,MAAM;CAK3E;AAED;;GAEG;AACH,wBAAgB,qBAAqB,CAAC,MAAM,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,GAAG,cAAc,CAerF"}
@@ -0,0 +1,93 @@
1
+ "use strict";
2
+ /**
3
+ * Chanomhub SDK - Error Classes
4
+ *
5
+ * Typed errors for better error handling in applications
6
+ */
7
+ Object.defineProperty(exports, "__esModule", { value: true });
8
+ exports.RateLimitError = exports.NetworkError = exports.ValidationError = exports.NotFoundError = exports.AuthorizationError = exports.AuthenticationError = exports.ChanomhubError = void 0;
9
+ exports.createErrorFromStatus = createErrorFromStatus;
10
+ /** Base error class for all SDK errors */
11
+ class ChanomhubError extends Error {
12
+ constructor(message, statusCode = 500, code = 'UNKNOWN_ERROR') {
13
+ super(message);
14
+ this.name = 'ChanomhubError';
15
+ this.statusCode = statusCode;
16
+ this.code = code;
17
+ // Maintains proper stack trace for where error was thrown
18
+ if (Error.captureStackTrace) {
19
+ Error.captureStackTrace(this, this.constructor);
20
+ }
21
+ }
22
+ }
23
+ exports.ChanomhubError = ChanomhubError;
24
+ /** Authentication error (401) - Missing or invalid token */
25
+ class AuthenticationError extends ChanomhubError {
26
+ constructor(message = 'Authentication required') {
27
+ super(message, 401, 'AUTHENTICATION_ERROR');
28
+ this.name = 'AuthenticationError';
29
+ }
30
+ }
31
+ exports.AuthenticationError = AuthenticationError;
32
+ /** Authorization error (403) - Insufficient permissions */
33
+ class AuthorizationError extends ChanomhubError {
34
+ constructor(message = 'Permission denied') {
35
+ super(message, 403, 'AUTHORIZATION_ERROR');
36
+ this.name = 'AuthorizationError';
37
+ }
38
+ }
39
+ exports.AuthorizationError = AuthorizationError;
40
+ /** Not found error (404) - Resource doesn't exist */
41
+ class NotFoundError extends ChanomhubError {
42
+ constructor(message = 'Resource not found') {
43
+ super(message, 404, 'NOT_FOUND');
44
+ this.name = 'NotFoundError';
45
+ }
46
+ }
47
+ exports.NotFoundError = NotFoundError;
48
+ /** Validation error (400) - Invalid request data */
49
+ class ValidationError extends ChanomhubError {
50
+ constructor(message = 'Validation failed', errors) {
51
+ super(message, 400, 'VALIDATION_ERROR');
52
+ this.name = 'ValidationError';
53
+ this.errors = errors;
54
+ }
55
+ }
56
+ exports.ValidationError = ValidationError;
57
+ /** Network error - Fetch failures, timeouts, etc. */
58
+ class NetworkError extends ChanomhubError {
59
+ constructor(message = 'Network request failed') {
60
+ super(message, 0, 'NETWORK_ERROR');
61
+ this.name = 'NetworkError';
62
+ }
63
+ }
64
+ exports.NetworkError = NetworkError;
65
+ /** Rate limit error (429) - Too many requests */
66
+ class RateLimitError extends ChanomhubError {
67
+ constructor(message = 'Rate limit exceeded', retryAfter) {
68
+ super(message, 429, 'RATE_LIMIT');
69
+ this.name = 'RateLimitError';
70
+ this.retryAfter = retryAfter;
71
+ }
72
+ }
73
+ exports.RateLimitError = RateLimitError;
74
+ /**
75
+ * Creates the appropriate error class based on HTTP status code
76
+ */
77
+ function createErrorFromStatus(status, message) {
78
+ switch (status) {
79
+ case 400:
80
+ return new ValidationError(message);
81
+ case 401:
82
+ return new AuthenticationError(message);
83
+ case 403:
84
+ return new AuthorizationError(message);
85
+ case 404:
86
+ return new NotFoundError(message);
87
+ case 429:
88
+ return new RateLimitError(message);
89
+ default:
90
+ return new ChanomhubError(message, status);
91
+ }
92
+ }
93
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../errors/index.ts"],"names":[],"mappings":"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"}
package/dist/index.d.ts CHANGED
@@ -31,10 +31,11 @@
31
31
  * ```
32
32
  */
33
33
  import { type GraphQLFetcher } from './client';
34
- import { type ArticleRepository, type FavoritesRepository, type UsersRepository } from './repositories';
34
+ import { type ArticleRepository, type FavoritesRepository, type UsersRepository, type SearchRepository } from './repositories';
35
35
  import { type ChanomhubConfig } from './config';
36
36
  export * from './types';
37
37
  export * from './config';
38
+ export * from './errors';
38
39
  export { resolveImageUrl } from './transforms/imageUrl';
39
40
  /** Chanomhub SDK Client interface */
40
41
  export interface ChanomhubClient {
@@ -44,6 +45,8 @@ export interface ChanomhubClient {
44
45
  favorites: FavoritesRepository;
45
46
  /** User/Profile operations */
46
47
  users: UsersRepository;
48
+ /** Search operations */
49
+ search: SearchRepository;
47
50
  /** Raw GraphQL fetcher for custom queries */
48
51
  graphql: GraphQLFetcher;
49
52
  /** SDK configuration */
@@ -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,EAA6E,KAAK,iBAAiB,EAAE,KAAK,mBAAmB,EAAE,KAAK,eAAe,EAAE,MAAM,gBAAgB,CAAC;AACnL,OAAO,EAAkB,KAAK,eAAe,EAAE,MAAM,UAAU,CAAC;AAGhE,cAAc,SAAS,CAAC;AACxB,cAAc,UAAU,CAAC;AACzB,OAAO,EAAE,eAAe,EAAE,MAAM,uBAAuB,CAAC;AAExD,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,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,CAmB5F;AAED;;;;;;;GAOG;AACH,wBAAgB,yBAAyB,CAAC,KAAK,EAAE,MAAM,EAAE,MAAM,GAAE,OAAO,CAAC,eAAe,CAAM,GAAG,eAAe,CAM/G;AAGD,eAAe,qBAAqB,CAAC"}
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,EAAqG,KAAK,iBAAiB,EAAE,KAAK,mBAAmB,EAAE,KAAK,eAAe,EAAE,KAAK,gBAAgB,EAAE,MAAM,gBAAgB,CAAC;AAClO,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,MAAM,uBAAuB,CAAC;AAExD,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,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,CAqB5F;AAED;;;;;;;GAOG;AACH,wBAAgB,yBAAyB,CAAC,KAAK,EAAE,MAAM,EAAE,MAAM,GAAE,OAAO,CAAC,eAAe,CAAM,GAAG,eAAe,CAM/G;AAGD,eAAe,qBAAqB,CAAC"}
package/dist/index.js CHANGED
@@ -55,6 +55,7 @@ const config_1 = require("./config");
55
55
  // Re-export types
56
56
  __exportStar(require("./types"), exports);
57
57
  __exportStar(require("./config"), exports);
58
+ __exportStar(require("./errors"), exports);
58
59
  var imageUrl_1 = require("./transforms/imageUrl");
59
60
  Object.defineProperty(exports, "resolveImageUrl", { enumerable: true, get: function () { return imageUrl_1.resolveImageUrl; } });
60
61
  /**
@@ -89,10 +90,12 @@ function createChanomhubClient(config = {}) {
89
90
  const articles = (0, repositories_1.createArticleRepository)(graphql);
90
91
  const favorites = (0, repositories_1.createFavoritesRepository)(rest);
91
92
  const users = (0, repositories_1.createUsersRepository)(rest);
93
+ const search = (0, repositories_1.createSearchRepository)(graphql);
92
94
  return {
93
95
  articles,
94
96
  favorites,
95
97
  users,
98
+ search,
96
99
  graphql,
97
100
  config: fullConfig,
98
101
  };
package/dist/index.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../index.ts"],"names":[],"mappings":";AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA+BG;;;;;;;;;;;;;;;;;AA+CH,sDAmBC;AAUD,8DAMC;AAhFD,qCAAsF;AACtF,iDAAmL;AACnL,qCAAgE;AAEhE,kBAAkB;AAClB,0CAAwB;AACxB,2CAAyB;AACzB,kDAAwD;AAA/C,2GAAA,eAAe,OAAA;AAgBxB;;;;;;;;;;;;;;;;;;;;;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,CAAC,CAAC;IAClD,MAAM,SAAS,GAAG,IAAA,wCAAyB,EAAC,IAAI,CAAC,CAAC;IAClD,MAAM,KAAK,GAAG,IAAA,oCAAqB,EAAC,IAAI,CAAC,CAAC;IAE1C,OAAO;QACH,QAAQ;QACR,SAAS;QACT,KAAK;QACL,OAAO;QACP,MAAM,EAAE,UAAU;KACrB,CAAC;AACN,CAAC;AAED;;;;;;;GAOG;AACH,SAAgB,yBAAyB,CAAC,KAAa,EAAE,SAAmC,EAAE;IAC1F,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"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../index.ts"],"names":[],"mappings":";AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA+BG;;;;;;;;;;;;;;;;;AAkDH,sDAqBC;AAUD,8DAMC;AArFD,qCAAsF;AACtF,iDAAkO;AAClO,qCAAgE;AAEhE,kBAAkB;AAClB,0CAAwB;AACxB,2CAAyB;AACzB,2CAAyB;AACzB,kDAAwD;AAA/C,2GAAA,eAAe,OAAA;AAkBxB;;;;;;;;;;;;;;;;;;;;;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,CAAC,CAAC;IAClD,MAAM,SAAS,GAAG,IAAA,wCAAyB,EAAC,IAAI,CAAC,CAAC;IAClD,MAAM,KAAK,GAAG,IAAA,oCAAqB,EAAC,IAAI,CAAC,CAAC;IAC1C,MAAM,MAAM,GAAG,IAAA,qCAAsB,EAAC,OAAO,CAAC,CAAC;IAE/C,OAAO;QACH,QAAQ;QACR,SAAS;QACT,KAAK;QACL,MAAM;QACN,OAAO;QACP,MAAM,EAAE,UAAU;KACrB,CAAC;AACN,CAAC;AAED;;;;;;;GAOG;AACH,SAAgB,yBAAyB,CAAC,KAAa,EAAE,SAAmC,EAAE;IAC1F,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"}
@@ -154,14 +154,14 @@ function createArticleRepository(fetcher) {
154
154
  if (filter.favorited !== undefined)
155
155
  filterParts.push(`favorited: ${filter.favorited}`);
156
156
  const filterArg = filterParts.length > 0 ? `filter: { ${filterParts.join(', ')} }, ` : '';
157
- const countFilterArg = filterParts.length > 0 ? `filter: { ${filterParts.join(', ')} }` : '';
157
+ const countFilterArg = filterParts.length > 0 ? `(filter: { ${filterParts.join(', ')} })` : '';
158
158
  const fieldsQuery = buildFieldsQuery({ preset, fields });
159
159
  // Query articles and count in a single request
160
160
  const query = `query GetArticlesPaginated {
161
161
  articles(${filterArg}limit: ${limit}, offset: ${offset}, status: ${status}) {
162
162
  ${fieldsQuery}
163
163
  }
164
- articlesCount(${countFilterArg})
164
+ articlesCount${countFilterArg}
165
165
  }`;
166
166
  const { data, errors } = await fetcher(query, {}, {
167
167
  operationName: 'GetArticlesPaginated',
@@ -1 +1 @@
1
- {"version":3,"file":"articleRepository.js","sourceRoot":"","sources":["../../repositories/articleRepository.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"articleRepository.js","sourceRoot":"","sources":["../../repositories/articleRepository.ts"],"names":[],"mappings":"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"}
@@ -4,4 +4,5 @@
4
4
  export { createArticleRepository, type ArticleRepository } from './articleRepository';
5
5
  export { createFavoritesRepository, type FavoritesRepository, type FavoriteResponse } from './favoritesRepository';
6
6
  export { createUsersRepository, type UsersRepository } from './usersRepository';
7
+ export { createSearchRepository, type SearchRepository, type SearchOptions } from './searchRepository';
7
8
  //# 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,EAAE,yBAAyB,EAAE,KAAK,mBAAmB,EAAE,KAAK,gBAAgB,EAAE,MAAM,uBAAuB,CAAC;AACnH,OAAO,EAAE,qBAAqB,EAAE,KAAK,eAAe,EAAE,MAAM,mBAAmB,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,EAAE,yBAAyB,EAAE,KAAK,mBAAmB,EAAE,KAAK,gBAAgB,EAAE,MAAM,uBAAuB,CAAC;AACnH,OAAO,EAAE,qBAAqB,EAAE,KAAK,eAAe,EAAE,MAAM,mBAAmB,CAAC;AAChF,OAAO,EAAE,sBAAsB,EAAE,KAAK,gBAAgB,EAAE,KAAK,aAAa,EAAE,MAAM,oBAAoB,CAAC"}
@@ -3,11 +3,13 @@
3
3
  * Chanomhub SDK - Repositories Index
4
4
  */
5
5
  Object.defineProperty(exports, "__esModule", { value: true });
6
- exports.createUsersRepository = exports.createFavoritesRepository = exports.createArticleRepository = void 0;
6
+ 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");
10
10
  Object.defineProperty(exports, "createFavoritesRepository", { enumerable: true, get: function () { return favoritesRepository_1.createFavoritesRepository; } });
11
11
  var usersRepository_1 = require("./usersRepository");
12
12
  Object.defineProperty(exports, "createUsersRepository", { enumerable: true, get: function () { return usersRepository_1.createUsersRepository; } });
13
+ var searchRepository_1 = require("./searchRepository");
14
+ Object.defineProperty(exports, "createSearchRepository", { enumerable: true, get: function () { return searchRepository_1.createSearchRepository; } });
13
15
  //# 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,6DAAmH;AAA1G,gIAAA,yBAAyB,OAAA;AAClC,qDAAgF;AAAvE,wHAAA,qBAAqB,OAAA"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../repositories/index.ts"],"names":[],"mappings":";AAAA;;GAEG;;;AAEH,yDAAsF;AAA7E,4HAAA,uBAAuB,OAAA;AAChC,6DAAmH;AAA1G,gIAAA,yBAAyB,OAAA;AAClC,qDAAgF;AAAvE,wHAAA,qBAAqB,OAAA;AAC9B,uDAAuG;AAA9F,0HAAA,sBAAsB,OAAA"}
@@ -0,0 +1,28 @@
1
+ /**
2
+ * Chanomhub SDK - Search Repository
3
+ */
4
+ import type { GraphQLFetcher } from '../client';
5
+ import type { ArticleListItem } from '../types/article';
6
+ import type { PaginatedResponse } from '../types/common';
7
+ /** Search options */
8
+ export interface SearchOptions {
9
+ /** Filter by tag */
10
+ tag?: string;
11
+ /** Filter by platform */
12
+ platform?: string;
13
+ /** Filter by category */
14
+ category?: string;
15
+ /** Results per page */
16
+ limit?: number;
17
+ /** Page offset */
18
+ offset?: number;
19
+ }
20
+ export interface SearchRepository {
21
+ /** Search articles by query string */
22
+ articles(query: string, options?: SearchOptions): Promise<PaginatedResponse<ArticleListItem>>;
23
+ }
24
+ /**
25
+ * Creates a search repository with the given GraphQL client
26
+ */
27
+ export declare function createSearchRepository(fetcher: GraphQLFetcher): SearchRepository;
28
+ //# sourceMappingURL=searchRepository.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"searchRepository.d.ts","sourceRoot":"","sources":["../../repositories/searchRepository.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,WAAW,CAAC;AAChD,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,kBAAkB,CAAC;AACxD,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,iBAAiB,CAAC;AAEzD,qBAAqB;AACrB,MAAM,WAAW,aAAa;IAC1B,oBAAoB;IACpB,GAAG,CAAC,EAAE,MAAM,CAAC;IACb,yBAAyB;IACzB,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,yBAAyB;IACzB,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,uBAAuB;IACvB,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,kBAAkB;IAClB,MAAM,CAAC,EAAE,MAAM,CAAC;CACnB;AAED,MAAM,WAAW,gBAAgB;IAC7B,sCAAsC;IACtC,QAAQ,CAAC,KAAK,EAAE,MAAM,EAAE,OAAO,CAAC,EAAE,aAAa,GAAG,OAAO,CAAC,iBAAiB,CAAC,eAAe,CAAC,CAAC,CAAC;CACjG;AA+BD;;GAEG;AACH,wBAAgB,sBAAsB,CAAC,OAAO,EAAE,cAAc,GAAG,gBAAgB,CA6ChF"}
@@ -0,0 +1,74 @@
1
+ "use strict";
2
+ /**
3
+ * Chanomhub SDK - Search Repository
4
+ */
5
+ Object.defineProperty(exports, "__esModule", { value: true });
6
+ exports.createSearchRepository = createSearchRepository;
7
+ /**
8
+ * Field query for search results (minimal for performance)
9
+ */
10
+ const SEARCH_FIELDS = `
11
+ id
12
+ title
13
+ slug
14
+ description
15
+ ver
16
+ mainImage
17
+ coverImage
18
+ createdAt
19
+ updatedAt
20
+ favoritesCount
21
+ sequentialCode
22
+ author {
23
+ name
24
+ image
25
+ }
26
+ tags {
27
+ id
28
+ name
29
+ }
30
+ engine {
31
+ id
32
+ name
33
+ }
34
+ `;
35
+ /**
36
+ * Creates a search repository with the given GraphQL client
37
+ */
38
+ function createSearchRepository(fetcher) {
39
+ async function articles(query, options = {}) {
40
+ const { limit = 12, offset = 0, tag, platform, category } = options;
41
+ // Build filter parts
42
+ const filterParts = [];
43
+ filterParts.push(`search: "${query.replace(/"/g, '\\"')}"`);
44
+ if (tag)
45
+ filterParts.push(`tag: "${tag}"`);
46
+ if (platform)
47
+ filterParts.push(`platform: "${platform}"`);
48
+ if (category)
49
+ filterParts.push(`category: "${category}"`);
50
+ const filterArg = `filter: { ${filterParts.join(', ')} }`;
51
+ const graphqlQuery = `query SearchArticles {
52
+ articles(${filterArg}, limit: ${limit}, offset: ${offset}, status: PUBLISHED) {
53
+ ${SEARCH_FIELDS}
54
+ }
55
+ articlesCount(${filterArg})
56
+ }`;
57
+ const { data, errors } = await fetcher(graphqlQuery, {}, { operationName: 'SearchArticles' });
58
+ if (errors || !data) {
59
+ console.error('Failed to search articles:', errors);
60
+ return { items: [], total: 0, page: 1, pageSize: limit };
61
+ }
62
+ const page = Math.floor(offset / limit) + 1;
63
+ return {
64
+ items: data.articles || [],
65
+ total: data.articlesCount || 0,
66
+ page,
67
+ pageSize: limit,
68
+ };
69
+ }
70
+ return {
71
+ articles,
72
+ };
73
+ }
74
+ //# sourceMappingURL=searchRepository.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"searchRepository.js","sourceRoot":"","sources":["../../repositories/searchRepository.ts"],"names":[],"mappings":";AAAA;;GAEG;;AAyDH,wDA6CC;AA7ED;;GAEG;AACH,MAAM,aAAa,GAAG;;;;;;;;;;;;;;;;;;;;;;;;CAwBrB,CAAC;AAEF;;GAEG;AACH,SAAgB,sBAAsB,CAAC,OAAuB;IAE1D,KAAK,UAAU,QAAQ,CAAC,KAAa,EAAE,UAAyB,EAAE;QAC9D,MAAM,EAAE,KAAK,GAAG,EAAE,EAAE,MAAM,GAAG,CAAC,EAAE,GAAG,EAAE,QAAQ,EAAE,QAAQ,EAAE,GAAG,OAAO,CAAC;QAEpE,qBAAqB;QACrB,MAAM,WAAW,GAAa,EAAE,CAAC;QACjC,WAAW,CAAC,IAAI,CAAC,YAAY,KAAK,CAAC,OAAO,CAAC,IAAI,EAAE,KAAK,CAAC,GAAG,CAAC,CAAC;QAC5D,IAAI,GAAG;YAAE,WAAW,CAAC,IAAI,CAAC,SAAS,GAAG,GAAG,CAAC,CAAC;QAC3C,IAAI,QAAQ;YAAE,WAAW,CAAC,IAAI,CAAC,cAAc,QAAQ,GAAG,CAAC,CAAC;QAC1D,IAAI,QAAQ;YAAE,WAAW,CAAC,IAAI,CAAC,cAAc,QAAQ,GAAG,CAAC,CAAC;QAE1D,MAAM,SAAS,GAAG,aAAa,WAAW,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC;QAE1D,MAAM,YAAY,GAAG;uBACN,SAAS,YAAY,KAAK,aAAa,MAAM;kBAClD,aAAa;;4BAEH,SAAS;UAC3B,CAAC;QAEH,MAAM,EAAE,IAAI,EAAE,MAAM,EAAE,GAAG,MAAM,OAAO,CAClC,YAAY,EACZ,EAAE,EACF,EAAE,aAAa,EAAE,gBAAgB,EAAE,CACtC,CAAC;QAEF,IAAI,MAAM,IAAI,CAAC,IAAI,EAAE,CAAC;YAClB,OAAO,CAAC,KAAK,CAAC,4BAA4B,EAAE,MAAM,CAAC,CAAC;YACpD,OAAO,EAAE,KAAK,EAAE,EAAE,EAAE,KAAK,EAAE,CAAC,EAAE,IAAI,EAAE,CAAC,EAAE,QAAQ,EAAE,KAAK,EAAE,CAAC;QAC7D,CAAC;QAED,MAAM,IAAI,GAAG,IAAI,CAAC,KAAK,CAAC,MAAM,GAAG,KAAK,CAAC,GAAG,CAAC,CAAC;QAE5C,OAAO;YACH,KAAK,EAAE,IAAI,CAAC,QAAQ,IAAI,EAAE;YAC1B,KAAK,EAAE,IAAI,CAAC,aAAa,IAAI,CAAC;YAC9B,IAAI;YACJ,QAAQ,EAAE,KAAK;SAClB,CAAC;IACN,CAAC;IAED,OAAO;QACH,QAAQ;KACX,CAAC;AACN,CAAC"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@chanomhub/sdk",
3
- "version": "1.0.5",
3
+ "version": "1.0.6",
4
4
  "description": "ChanomHub SDK",
5
5
  "main": "dist/index.js",
6
6
  "types": "dist/index.d.ts",
@@ -12,6 +12,9 @@
12
12
  "registry": "https://registry.npmjs.org",
13
13
  "access": "public"
14
14
  },
15
+ "engines": {
16
+ "node": ">=20.9.0"
17
+ },
15
18
  "exports": {
16
19
  ".": {
17
20
  "types": "./dist/index.d.ts",
@@ -38,6 +41,7 @@
38
41
  "license": "ISC",
39
42
  "devDependencies": {
40
43
  "@types/node": "^25.0.3",
44
+ "@vitest/coverage-v8": "^4.0.16",
41
45
  "msw": "^2.12.4",
42
46
  "next": "^16.1.0",
43
47
  "typescript": "^5.9.3",