@chanomhub/sdk 1.0.4 → 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.
Files changed (55) hide show
  1. package/dist/__tests__/errors.test.d.ts +2 -0
  2. package/dist/__tests__/errors.test.d.ts.map +1 -0
  3. package/dist/__tests__/errors.test.js +116 -0
  4. package/dist/__tests__/errors.test.js.map +1 -0
  5. package/dist/__tests__/mocks/handlers.d.ts +1 -1
  6. package/dist/__tests__/mocks/handlers.d.ts.map +1 -1
  7. package/dist/__tests__/mocks/handlers.js +134 -0
  8. package/dist/__tests__/mocks/handlers.js.map +1 -1
  9. package/dist/__tests__/repositories.test.d.ts +2 -0
  10. package/dist/__tests__/repositories.test.d.ts.map +1 -0
  11. package/dist/__tests__/repositories.test.js +103 -0
  12. package/dist/__tests__/repositories.test.js.map +1 -0
  13. package/dist/client.d.ts +18 -0
  14. package/dist/client.d.ts.map +1 -1
  15. package/dist/client.js +53 -0
  16. package/dist/client.js.map +1 -1
  17. package/dist/errors/index.d.ts +42 -0
  18. package/dist/errors/index.d.ts.map +1 -0
  19. package/dist/errors/index.js +93 -0
  20. package/dist/errors/index.js.map +1 -0
  21. package/dist/index.d.ts +8 -1
  22. package/dist/index.d.ts.map +1 -1
  23. package/dist/index.js +8 -0
  24. package/dist/index.js.map +1 -1
  25. package/dist/repositories/articleRepository.d.ts +4 -1
  26. package/dist/repositories/articleRepository.d.ts.map +1 -1
  27. package/dist/repositories/articleRepository.js +40 -0
  28. package/dist/repositories/articleRepository.js.map +1 -1
  29. package/dist/repositories/favoritesRepository.d.ts +20 -0
  30. package/dist/repositories/favoritesRepository.d.ts.map +1 -0
  31. package/dist/repositories/favoritesRepository.js +32 -0
  32. package/dist/repositories/favoritesRepository.js.map +1 -0
  33. package/dist/repositories/index.d.ts +3 -0
  34. package/dist/repositories/index.d.ts.map +1 -1
  35. package/dist/repositories/index.js +7 -1
  36. package/dist/repositories/index.js.map +1 -1
  37. package/dist/repositories/searchRepository.d.ts +28 -0
  38. package/dist/repositories/searchRepository.d.ts.map +1 -0
  39. package/dist/repositories/searchRepository.js +74 -0
  40. package/dist/repositories/searchRepository.js.map +1 -0
  41. package/dist/repositories/usersRepository.d.ts +20 -0
  42. package/dist/repositories/usersRepository.d.ts.map +1 -0
  43. package/dist/repositories/usersRepository.js +54 -0
  44. package/dist/repositories/usersRepository.js.map +1 -0
  45. package/dist/types/common.d.ts +7 -0
  46. package/dist/types/common.d.ts.map +1 -1
  47. package/dist/types/index.d.ts +1 -0
  48. package/dist/types/index.d.ts.map +1 -1
  49. package/dist/types/index.js +1 -0
  50. package/dist/types/index.js.map +1 -1
  51. package/dist/types/user.d.ts +28 -0
  52. package/dist/types/user.d.ts.map +1 -0
  53. package/dist/types/user.js +6 -0
  54. package/dist/types/user.js.map +1 -0
  55. package/package.json +5 -1
@@ -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":";;;AAAA,6BAAkD;AAErC,QAAA,QAAQ,GAAG;IACpB,2BAA2B;IAC3B,aAAO,CAAC,KAAK,CAAC,aAAa,EAAE,GAAG,EAAE;QAC9B,OAAO,kBAAY,CAAC,IAAI,CAAC;YACrB,IAAI,EAAE;gBACF,QAAQ,EAAE;oBACN;wBACI,EAAE,EAAE,CAAC;wBACL,KAAK,EAAE,gBAAgB;wBACvB,IAAI,EAAE,gBAAgB;wBACtB,SAAS,EAAE,cAAc;wBACzB,MAAM,EAAE,WAAW;wBACnB,MAAM,EAAE,EAAE,EAAE,EAAE,KAAK,EAAE,IAAI,EAAE,OAAO,EAAE;wBACpC,MAAM,EAAE,EAAE,IAAI,EAAE,UAAU,EAAE,KAAK,EAAE,WAAW,EAAE;wBAChD,QAAQ,EAAE,EAAE;wBACZ,IAAI,EAAE,EAAE;wBACR,SAAS,EAAE,EAAE;wBACb,UAAU,EAAE,EAAE;wBACd,MAAM,EAAE,EAAE;qBACb;oBACD;wBACI,EAAE,EAAE,CAAC;wBACL,KAAK,EAAE,gBAAgB;wBACvB,IAAI,EAAE,gBAAgB;wBACtB,SAAS,EAAE,gCAAgC;wBAC3C,MAAM,EAAE,WAAW;wBACnB,MAAM,EAAE,EAAE,EAAE,EAAE,KAAK,EAAE,IAAI,EAAE,OAAO,EAAE;wBACpC,MAAM,EAAE,EAAE,IAAI,EAAE,UAAU,EAAE,KAAK,EAAE,WAAW,EAAE;wBAChD,QAAQ,EAAE,EAAE;wBACZ,IAAI,EAAE,EAAE;wBACR,SAAS,EAAE,EAAE;wBACb,UAAU,EAAE,EAAE;wBACd,MAAM,EAAE,EAAE;qBACb;iBACJ;aACJ;SACJ,CAAC,CAAC;IACP,CAAC,CAAC;IAEF,kCAAkC;IAClC,aAAO,CAAC,KAAK,CAAC,kBAAkB,EAAE,CAAC,EAAE,SAAS,EAAE,EAAE,EAAE;QAChD,MAAM,EAAE,IAAI,EAAE,GAAG,SAAS,CAAC;QAE3B,IAAI,IAAI,KAAK,WAAW,EAAE,CAAC;YACvB,OAAO,kBAAY,CAAC,IAAI,CAAC;gBACrB,IAAI,EAAE,EAAE,OAAO,EAAE,IAAI,EAAE;aAC1B,CAAC,CAAC;QACP,CAAC;QAED,OAAO,kBAAY,CAAC,IAAI,CAAC;YACrB,IAAI,EAAE;gBACF,OAAO,EAAE;oBACL,EAAE,EAAE,CAAC;oBACL,KAAK,EAAE,gBAAgB;oBACvB,IAAI,EAAE,IAAc;oBACpB,WAAW,EAAE,gBAAgB;oBAC7B,IAAI,EAAE,0BAA0B;oBAChC,GAAG,EAAE,KAAK;oBACV,SAAS,EAAE,YAAY;oBACvB,SAAS,EAAE,YAAY;oBACvB,MAAM,EAAE,WAAW;oBACnB,MAAM,EAAE,EAAE,EAAE,EAAE,KAAK,EAAE,IAAI,EAAE,OAAO,EAAE;oBACpC,SAAS,EAAE,cAAc;oBACzB,eAAe,EAAE,QAAQ;oBACzB,UAAU,EAAE,WAAW;oBACvB,SAAS,EAAE,KAAK;oBAChB,cAAc,EAAE,EAAE;oBAClB,cAAc,EAAE,KAAK;oBACrB,MAAM,EAAE;wBACJ,IAAI,EAAE,UAAU;wBAChB,GAAG,EAAE,KAAK;wBACV,KAAK,EAAE,UAAU;wBACjB,eAAe,EAAE,aAAa;wBAC9B,SAAS,EAAE,KAAK;wBAChB,gBAAgB,EAAE,EAAE;qBACvB;oBACD,MAAM,EAAE;wBACJ,EAAE,EAAE,EAAE,MAAM,EAAE,GAAG,EAAE,UAAU,EAAE;wBAC/B,EAAE,EAAE,EAAE,MAAM,EAAE,GAAG,EAAE,UAAU,EAAE;qBAClC;oBACD,QAAQ,EAAE,EAAE;oBACZ,IAAI,EAAE,EAAE;oBACR,SAAS,EAAE,EAAE;oBACb,UAAU,EAAE,EAAE;oBACd,IAAI,EAAE,EAAE;iBACX;aACJ;SACJ,CAAC,CAAC;IACP,CAAC,CAAC;IAEF,+CAA+C;IAC/C,aAAO,CAAC,KAAK,CAAC,kBAAkB,EAAE,GAAG,EAAE;QACnC,OAAO,IAAI,kBAAY,CAAC,IAAI,EAAE,EAAE,MAAM,EAAE,GAAG,EAAE,CAAC,CAAC;IACnD,CAAC,CAAC;IAEF,uCAAuC;IACvC,aAAO,CAAC,KAAK,CAAC,mBAAmB,EAAE,GAAG,EAAE;QACpC,OAAO,kBAAY,CAAC,IAAI,CAAC;YACrB,MAAM,EAAE;gBACJ,EAAE,OAAO,EAAE,iCAAiC,EAAE;aACjD;SACJ,CAAC,CAAC;IACP,CAAC,CAAC;CACL,CAAC"}
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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"}
package/dist/client.d.ts CHANGED
@@ -22,4 +22,22 @@ export interface FetchOptions {
22
22
  */
23
23
  export declare function createGraphQLClient(config: ChanomhubConfig): <T>(query: string, variables?: Record<string, unknown>, options?: FetchOptions) => Promise<GraphQLResponse<T>>;
24
24
  export type GraphQLFetcher = ReturnType<typeof createGraphQLClient>;
25
+ /**
26
+ * REST API response type
27
+ */
28
+ export interface RestResponse<T> {
29
+ data: T | null;
30
+ error?: string;
31
+ }
32
+ /**
33
+ * Creates a REST API client for non-GraphQL endpoints
34
+ *
35
+ * @param config - SDK configuration
36
+ * @returns REST fetch function
37
+ */
38
+ export declare function createRestClient(config: ChanomhubConfig): <T>(endpoint: string, options?: {
39
+ method?: "GET" | "POST" | "PUT" | "DELETE";
40
+ body?: Record<string, unknown>;
41
+ }) => Promise<RestResponse<T>>;
42
+ export type RestFetcher = ReturnType<typeof createRestClient>;
25
43
  //# sourceMappingURL=client.d.ts.map
@@ -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,CA8DjC;AAED,MAAM,MAAM,cAAc,GAAG,UAAU,CAAC,OAAO,mBAAmB,CAAC,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,CA8DjC;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;IAC3C,IAAI,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;CAC7B,KACP,OAAO,CAAC,YAAY,CAAC,CAAC,CAAC,CAAC,CAqD9B;AAED,MAAM,MAAM,WAAW,GAAG,UAAU,CAAC,OAAO,gBAAgB,CAAC,CAAC"}
package/dist/client.js CHANGED
@@ -7,6 +7,7 @@
7
7
  */
8
8
  Object.defineProperty(exports, "__esModule", { value: true });
9
9
  exports.createGraphQLClient = createGraphQLClient;
10
+ exports.createRestClient = createRestClient;
10
11
  const imageUrl_1 = require("./transforms/imageUrl");
11
12
  /**
12
13
  * Creates a GraphQL fetcher function with automatic image URL transformation
@@ -70,4 +71,56 @@ function createGraphQLClient(config) {
70
71
  }
71
72
  };
72
73
  }
74
+ /**
75
+ * Creates a REST API client for non-GraphQL endpoints
76
+ *
77
+ * @param config - SDK configuration
78
+ * @returns REST fetch function
79
+ */
80
+ function createRestClient(config) {
81
+ return async function restFetch(endpoint, options = {}) {
82
+ const { method = 'GET', body } = options;
83
+ const headers = {
84
+ 'Content-Type': 'application/json',
85
+ 'Accept': 'application/json',
86
+ };
87
+ if (config.token) {
88
+ headers['Authorization'] = `Bearer ${config.token}`;
89
+ }
90
+ const fetchOptions = {
91
+ method,
92
+ headers,
93
+ cache: 'no-store', // REST calls are typically mutations, no caching
94
+ };
95
+ if (body) {
96
+ fetchOptions.body = JSON.stringify(body);
97
+ }
98
+ try {
99
+ const res = await fetch(`${config.apiUrl}${endpoint}`, fetchOptions);
100
+ if (!res.ok) {
101
+ const errorText = await res.text();
102
+ console.error('REST fetch error:', res.status, errorText);
103
+ return {
104
+ data: null,
105
+ error: `HTTP ${res.status}: ${res.statusText}`,
106
+ };
107
+ }
108
+ // Some endpoints may return empty body (204)
109
+ if (res.status === 204) {
110
+ return { data: null };
111
+ }
112
+ const json = await res.json();
113
+ // Transform image URLs if present
114
+ const transformedData = (0, imageUrl_1.transformImageUrlsDeep)(json, config.cdnUrl);
115
+ return { data: transformedData };
116
+ }
117
+ catch (error) {
118
+ console.error('REST fetch exception:', error);
119
+ return {
120
+ data: null,
121
+ error: error instanceof Error ? error.message : 'Unknown error',
122
+ };
123
+ }
124
+ };
125
+ }
73
126
  //# sourceMappingURL=client.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"client.js","sourceRoot":"","sources":["../client.ts"],"names":[],"mappings":";AAAA;;;;;GAKG;;AAqBH,kDAmEC;AApFD,oDAA+D;AAW/D;;;;;GAKG;AACH,SAAgB,mBAAmB,CAAC,MAAuB;IACvD,OAAO,KAAK,UAAU,YAAY,CAC9B,KAAa,EACb,YAAqC,EAAE,EACvC,UAAwB,EAAE;;QAE1B,MAAM,OAAO,GAA2B;YACpC,cAAc,EAAE,kBAAkB;YAClC,QAAQ,EAAE,kBAAkB;SAC/B,CAAC;QAEF,IAAI,MAAM,CAAC,KAAK,EAAE,CAAC;YACf,OAAO,CAAC,eAAe,CAAC,GAAG,UAAU,MAAM,CAAC,KAAK,EAAE,CAAC;QACxD,CAAC;QAED,2CAA2C;QAC3C,MAAM,YAAY,GAAgB;YAC9B,MAAM,EAAE,MAAM;YACd,OAAO;YACP,IAAI,EAAE,IAAI,CAAC,SAAS,CAAC;gBACjB,KAAK;gBACL,SAAS;gBACT,GAAG,CAAC,OAAO,CAAC,aAAa,IAAI,EAAE,aAAa,EAAE,OAAO,CAAC,aAAa,EAAE,CAAC;aACzE,CAAC;SACL,CAAC;QAEF,8DAA8D;QAC9D,sFAAsF;QACtF,oDAAoD;QACpD,MAAM,QAAQ,GAAG,CAAC,OAAO,CAAC,OAAO,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC;QACnD,MAAM,YAAY,GAAG,MAAA,MAAA,OAAO,CAAC,YAAY,mCAAI,MAAM,CAAC,mBAAmB,mCAAI,IAAI,CAAC;QAEhF,IAAI,CAAC,QAAQ,IAAI,YAAY,KAAK,CAAC,EAAE,CAAC;YAClC,YAAY,CAAC,KAAK,GAAG,UAAU,CAAC;QACpC,CAAC;QAED,IAAI,CAAC;YACD,MAAM,GAAG,GAAG,MAAM,KAAK,CAAC,GAAG,MAAM,CAAC,MAAM,cAAc,EAAE,YAAY,CAAC,CAAC;YAEtE,IAAI,CAAC,GAAG,CAAC,EAAE,EAAE,CAAC;gBACV,MAAM,SAAS,GAAG,MAAM,GAAG,CAAC,IAAI,EAAE,CAAC;gBACnC,OAAO,CAAC,KAAK,CAAC,sBAAsB,EAAE,GAAG,CAAC,MAAM,EAAE,SAAS,CAAC,CAAC;gBAC7D,OAAO;oBACH,IAAI,EAAE,IAAI;oBACV,MAAM,EAAE,CAAC,EAAE,OAAO,EAAE,QAAQ,GAAG,CAAC,MAAM,KAAK,GAAG,CAAC,UAAU,EAAE,EAAE,CAAC;iBACjE,CAAC;YACN,CAAC;YAED,MAAM,IAAI,GAAG,MAAM,GAAG,CAAC,IAAI,EAAE,CAAC;YAE9B,IAAI,IAAI,CAAC,MAAM,EAAE,CAAC;gBACd,OAAO,CAAC,KAAK,CAAC,iBAAiB,EAAE,IAAI,CAAC,MAAM,CAAC,CAAC;gBAC9C,OAAO,EAAE,IAAI,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,CAAC,MAAM,EAAE,CAAC;YAC/C,CAAC;YAED,gDAAgD;YAChD,MAAM,eAAe,GAAG,IAAA,iCAAsB,EAAC,IAAI,CAAC,IAAI,EAAE,MAAM,CAAC,MAAM,CAAM,CAAC;YAE9E,OAAO,EAAE,IAAI,EAAE,eAAe,EAAE,CAAC;QACrC,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACb,OAAO,CAAC,KAAK,CAAC,0BAA0B,EAAE,KAAK,CAAC,CAAC;YACjD,OAAO;gBACH,IAAI,EAAE,IAAI;gBACV,MAAM,EAAE,CAAC,EAAE,OAAO,EAAE,KAAK,YAAY,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,eAAe,EAAE,CAAC;aAClF,CAAC;QACN,CAAC;IACL,CAAC,CAAC;AACN,CAAC"}
1
+ {"version":3,"file":"client.js","sourceRoot":"","sources":["../client.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"}