@chanomhub/sdk 1.0.8 → 1.1.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/__tests__/fields.test.d.ts +2 -0
- package/dist/__tests__/fields.test.d.ts.map +1 -0
- package/dist/__tests__/fields.test.js +72 -0
- package/dist/__tests__/fields.test.js.map +1 -0
- package/dist/repositories/articleRepository.d.ts.map +1 -1
- package/dist/repositories/articleRepository.js +8 -139
- package/dist/repositories/articleRepository.js.map +1 -1
- package/dist/repositories/searchRepository.d.ts +5 -1
- package/dist/repositories/searchRepository.d.ts.map +1 -1
- package/dist/repositories/searchRepository.js +6 -31
- package/dist/repositories/searchRepository.js.map +1 -1
- package/dist/utils/fields.d.ts +24 -0
- package/dist/utils/fields.d.ts.map +1 -0
- package/dist/utils/fields.js +138 -0
- package/dist/utils/fields.js.map +1 -0
- package/dist/utils/index.d.ts +6 -0
- package/dist/utils/index.d.ts.map +1 -0
- package/dist/utils/index.js +11 -0
- package/dist/utils/index.js.map +1 -0
- package/package.json +1 -1
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"fields.test.d.ts","sourceRoot":"","sources":["../../__tests__/fields.test.ts"],"names":[],"mappings":""}
|
|
@@ -0,0 +1,72 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
const vitest_1 = require("vitest");
|
|
4
|
+
const fields_1 = require("../utils/fields");
|
|
5
|
+
(0, vitest_1.describe)('Field Query Utilities', () => {
|
|
6
|
+
(0, vitest_1.describe)('FIELD_PRESETS', () => {
|
|
7
|
+
(0, vitest_1.it)('should have minimal preset with basic fields', () => {
|
|
8
|
+
(0, vitest_1.expect)(fields_1.FIELD_PRESETS.minimal).toEqual(['id', 'title', 'slug', 'mainImage']);
|
|
9
|
+
});
|
|
10
|
+
(0, vitest_1.it)('should have standard preset with common fields', () => {
|
|
11
|
+
(0, vitest_1.expect)(fields_1.FIELD_PRESETS.standard).toContain('id');
|
|
12
|
+
(0, vitest_1.expect)(fields_1.FIELD_PRESETS.standard).toContain('title');
|
|
13
|
+
(0, vitest_1.expect)(fields_1.FIELD_PRESETS.standard).toContain('author');
|
|
14
|
+
(0, vitest_1.expect)(fields_1.FIELD_PRESETS.standard).toContain('tags');
|
|
15
|
+
(0, vitest_1.expect)(fields_1.FIELD_PRESETS.standard).toContain('platforms');
|
|
16
|
+
(0, vitest_1.expect)(fields_1.FIELD_PRESETS.standard).toContain('categories');
|
|
17
|
+
(0, vitest_1.expect)(fields_1.FIELD_PRESETS.standard).toContain('engine');
|
|
18
|
+
});
|
|
19
|
+
(0, vitest_1.it)('should have full preset with all fields including body', () => {
|
|
20
|
+
(0, vitest_1.expect)(fields_1.FIELD_PRESETS.full).toContain('body');
|
|
21
|
+
(0, vitest_1.expect)(fields_1.FIELD_PRESETS.full).toContain('backgroundImage');
|
|
22
|
+
});
|
|
23
|
+
});
|
|
24
|
+
(0, vitest_1.describe)('FIELD_MAPPINGS', () => {
|
|
25
|
+
(0, vitest_1.it)('should map simple fields correctly', () => {
|
|
26
|
+
(0, vitest_1.expect)(fields_1.FIELD_MAPPINGS.id).toBe('id');
|
|
27
|
+
(0, vitest_1.expect)(fields_1.FIELD_MAPPINGS.title).toBe('title');
|
|
28
|
+
(0, vitest_1.expect)(fields_1.FIELD_MAPPINGS.slug).toBe('slug');
|
|
29
|
+
});
|
|
30
|
+
(0, vitest_1.it)('should map nested fields correctly', () => {
|
|
31
|
+
(0, vitest_1.expect)(fields_1.FIELD_MAPPINGS.author).toContain('author {');
|
|
32
|
+
(0, vitest_1.expect)(fields_1.FIELD_MAPPINGS.author).toContain('name');
|
|
33
|
+
(0, vitest_1.expect)(fields_1.FIELD_MAPPINGS.engine).toContain('engine {');
|
|
34
|
+
(0, vitest_1.expect)(fields_1.FIELD_MAPPINGS.tags).toContain('tags {');
|
|
35
|
+
});
|
|
36
|
+
});
|
|
37
|
+
(0, vitest_1.describe)('buildFieldsQuery', () => {
|
|
38
|
+
(0, vitest_1.it)('should use standard preset by default', () => {
|
|
39
|
+
const query = (0, fields_1.buildFieldsQuery)();
|
|
40
|
+
(0, vitest_1.expect)(query).toContain('id');
|
|
41
|
+
(0, vitest_1.expect)(query).toContain('title');
|
|
42
|
+
(0, vitest_1.expect)(query).toContain('author {');
|
|
43
|
+
});
|
|
44
|
+
(0, vitest_1.it)('should build query with minimal preset', () => {
|
|
45
|
+
const query = (0, fields_1.buildFieldsQuery)({ preset: 'minimal' });
|
|
46
|
+
(0, vitest_1.expect)(query).toContain('id');
|
|
47
|
+
(0, vitest_1.expect)(query).toContain('title');
|
|
48
|
+
(0, vitest_1.expect)(query).toContain('slug');
|
|
49
|
+
(0, vitest_1.expect)(query).toContain('mainImage');
|
|
50
|
+
(0, vitest_1.expect)(query).not.toContain('description');
|
|
51
|
+
});
|
|
52
|
+
(0, vitest_1.it)('should build query with full preset', () => {
|
|
53
|
+
const query = (0, fields_1.buildFieldsQuery)({ preset: 'full' });
|
|
54
|
+
(0, vitest_1.expect)(query).toContain('body');
|
|
55
|
+
(0, vitest_1.expect)(query).toContain('backgroundImage');
|
|
56
|
+
});
|
|
57
|
+
(0, vitest_1.it)('should use custom fields when provided', () => {
|
|
58
|
+
const query = (0, fields_1.buildFieldsQuery)({ fields: ['id', 'title', 'engine'] });
|
|
59
|
+
(0, vitest_1.expect)(query).toContain('id');
|
|
60
|
+
(0, vitest_1.expect)(query).toContain('title');
|
|
61
|
+
(0, vitest_1.expect)(query).toContain('engine {');
|
|
62
|
+
(0, vitest_1.expect)(query).not.toContain('slug');
|
|
63
|
+
});
|
|
64
|
+
(0, vitest_1.it)('should override preset with custom fields', () => {
|
|
65
|
+
const query = (0, fields_1.buildFieldsQuery)({ preset: 'full', fields: ['id', 'title'] });
|
|
66
|
+
(0, vitest_1.expect)(query).toContain('id');
|
|
67
|
+
(0, vitest_1.expect)(query).toContain('title');
|
|
68
|
+
(0, vitest_1.expect)(query).not.toContain('body');
|
|
69
|
+
});
|
|
70
|
+
});
|
|
71
|
+
});
|
|
72
|
+
//# sourceMappingURL=fields.test.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"fields.test.js","sourceRoot":"","sources":["../../__tests__/fields.test.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"articleRepository.d.ts","sourceRoot":"","sources":["../../repositories/articleRepository.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,WAAW,CAAC;AAChD,OAAO,KAAK,EACR,OAAO,EACP,eAAe,EACf,kBAAkB,EAClB,oBAAoB,
|
|
1
|
+
{"version":3,"file":"articleRepository.d.ts","sourceRoot":"","sources":["../../repositories/articleRepository.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,WAAW,CAAC;AAChD,OAAO,KAAK,EACR,OAAO,EACP,eAAe,EACf,kBAAkB,EAClB,oBAAoB,EACvB,MAAM,kBAAkB,CAAC;AAC1B,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,iBAAiB,CAAC;AAGzD,MAAM,WAAW,iBAAiB;IAC9B,2BAA2B;IAC3B,MAAM,CAAC,OAAO,CAAC,EAAE,kBAAkB,GAAG,OAAO,CAAC,eAAe,EAAE,CAAC,CAAC;IAEjE,sDAAsD;IACtD,eAAe,CAAC,OAAO,CAAC,EAAE,kBAAkB,GAAG,OAAO,CAAC,iBAAiB,CAAC,eAAe,CAAC,CAAC,CAAC;IAE3F,0BAA0B;IAC1B,QAAQ,CAAC,GAAG,EAAE,MAAM,EAAE,OAAO,CAAC,EAAE;QAAE,KAAK,CAAC,EAAE,MAAM,CAAA;KAAE,GAAG,OAAO,CAAC,eAAe,EAAE,CAAC,CAAC;IAEhF,+BAA+B;IAC/B,aAAa,CAAC,QAAQ,EAAE,MAAM,EAAE,OAAO,CAAC,EAAE;QAAE,KAAK,CAAC,EAAE,MAAM,CAAA;KAAE,GAAG,OAAO,CAAC,eAAe,EAAE,CAAC,CAAC;IAE1F,+BAA+B;IAC/B,aAAa,CAAC,QAAQ,EAAE,MAAM,EAAE,OAAO,CAAC,EAAE;QAAE,KAAK,CAAC,EAAE,MAAM,CAAA;KAAE,GAAG,OAAO,CAAC,eAAe,EAAE,CAAC,CAAC;IAE1F,iCAAiC;IACjC,SAAS,CAAC,IAAI,EAAE,MAAM,EAAE,QAAQ,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC,OAAO,GAAG,IAAI,CAAC,CAAC;IAEpE,iCAAiC;IACjC,gBAAgB,CAAC,IAAI,EAAE,MAAM,EAAE,QAAQ,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC,oBAAoB,CAAC,CAAC;CACpF;AAED;;GAEG;AACH,wBAAgB,uBAAuB,CAAC,OAAO,EAAE,cAAc,GAAG,iBAAiB,CAmRlF"}
|
|
@@ -4,138 +4,7 @@
|
|
|
4
4
|
*/
|
|
5
5
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
6
6
|
exports.createArticleRepository = createArticleRepository;
|
|
7
|
-
|
|
8
|
-
// Field Presets - Developers can choose the level of detail they need
|
|
9
|
-
// ============================================================================
|
|
10
|
-
/**
|
|
11
|
-
* Field definitions for each preset level
|
|
12
|
-
*/
|
|
13
|
-
const FIELD_PRESETS = {
|
|
14
|
-
minimal: ['id', 'title', 'slug', 'mainImage'],
|
|
15
|
-
standard: [
|
|
16
|
-
'id',
|
|
17
|
-
'title',
|
|
18
|
-
'slug',
|
|
19
|
-
'description',
|
|
20
|
-
'ver',
|
|
21
|
-
'mainImage',
|
|
22
|
-
'coverImage',
|
|
23
|
-
'author',
|
|
24
|
-
'tags',
|
|
25
|
-
'platforms',
|
|
26
|
-
'categories',
|
|
27
|
-
'creators',
|
|
28
|
-
'engine',
|
|
29
|
-
'favoritesCount',
|
|
30
|
-
'favorited',
|
|
31
|
-
'createdAt',
|
|
32
|
-
'updatedAt',
|
|
33
|
-
'status',
|
|
34
|
-
'sequentialCode',
|
|
35
|
-
'images',
|
|
36
|
-
],
|
|
37
|
-
full: [
|
|
38
|
-
'id',
|
|
39
|
-
'title',
|
|
40
|
-
'slug',
|
|
41
|
-
'description',
|
|
42
|
-
'body',
|
|
43
|
-
'ver',
|
|
44
|
-
'mainImage',
|
|
45
|
-
'coverImage',
|
|
46
|
-
'backgroundImage',
|
|
47
|
-
'author',
|
|
48
|
-
'tags',
|
|
49
|
-
'platforms',
|
|
50
|
-
'categories',
|
|
51
|
-
'creators',
|
|
52
|
-
'engine',
|
|
53
|
-
'images',
|
|
54
|
-
'favoritesCount',
|
|
55
|
-
'favorited',
|
|
56
|
-
'createdAt',
|
|
57
|
-
'updatedAt',
|
|
58
|
-
'status',
|
|
59
|
-
'sequentialCode',
|
|
60
|
-
],
|
|
61
|
-
};
|
|
62
|
-
/**
|
|
63
|
-
* GraphQL field mappings - converts field names to GraphQL query fragments
|
|
64
|
-
*/
|
|
65
|
-
const FIELD_MAPPINGS = {
|
|
66
|
-
id: 'id',
|
|
67
|
-
title: 'title',
|
|
68
|
-
slug: 'slug',
|
|
69
|
-
description: 'description',
|
|
70
|
-
body: 'body',
|
|
71
|
-
ver: 'ver',
|
|
72
|
-
mainImage: 'mainImage',
|
|
73
|
-
coverImage: 'coverImage',
|
|
74
|
-
backgroundImage: 'backgroundImage',
|
|
75
|
-
createdAt: 'createdAt',
|
|
76
|
-
updatedAt: 'updatedAt',
|
|
77
|
-
status: 'status',
|
|
78
|
-
sequentialCode: 'sequentialCode',
|
|
79
|
-
favoritesCount: 'favoritesCount',
|
|
80
|
-
favorited: 'favorited',
|
|
81
|
-
engine: `engine {
|
|
82
|
-
id
|
|
83
|
-
name
|
|
84
|
-
}`,
|
|
85
|
-
author: `author {
|
|
86
|
-
id
|
|
87
|
-
name
|
|
88
|
-
image
|
|
89
|
-
}`,
|
|
90
|
-
creators: `creators {
|
|
91
|
-
id
|
|
92
|
-
name
|
|
93
|
-
}`,
|
|
94
|
-
tags: `tags {
|
|
95
|
-
id
|
|
96
|
-
name
|
|
97
|
-
}`,
|
|
98
|
-
platforms: `platforms {
|
|
99
|
-
id
|
|
100
|
-
name
|
|
101
|
-
}`,
|
|
102
|
-
categories: `categories {
|
|
103
|
-
id
|
|
104
|
-
name
|
|
105
|
-
}`,
|
|
106
|
-
images: `images {
|
|
107
|
-
id
|
|
108
|
-
url
|
|
109
|
-
}`,
|
|
110
|
-
mods: `mods {
|
|
111
|
-
id
|
|
112
|
-
name
|
|
113
|
-
description
|
|
114
|
-
creditTo
|
|
115
|
-
downloadLink
|
|
116
|
-
version
|
|
117
|
-
status
|
|
118
|
-
categories {
|
|
119
|
-
id
|
|
120
|
-
name
|
|
121
|
-
}
|
|
122
|
-
images {
|
|
123
|
-
id
|
|
124
|
-
url
|
|
125
|
-
}
|
|
126
|
-
}`,
|
|
127
|
-
};
|
|
128
|
-
/**
|
|
129
|
-
* Builds GraphQL fields query from preset or custom fields
|
|
130
|
-
*/
|
|
131
|
-
function buildFieldsQuery(options = {}) {
|
|
132
|
-
const { preset = 'standard', fields } = options;
|
|
133
|
-
const selectedFields = fields !== null && fields !== void 0 ? fields : FIELD_PRESETS[preset];
|
|
134
|
-
return selectedFields
|
|
135
|
-
.map((field) => FIELD_MAPPINGS[field])
|
|
136
|
-
.filter(Boolean)
|
|
137
|
-
.join('\n ');
|
|
138
|
-
}
|
|
7
|
+
const fields_1 = require("../utils/fields");
|
|
139
8
|
/**
|
|
140
9
|
* Creates an article repository with the given GraphQL client
|
|
141
10
|
*/
|
|
@@ -155,7 +24,7 @@ function createArticleRepository(fetcher) {
|
|
|
155
24
|
if (filter.favorited !== undefined)
|
|
156
25
|
filterParts.push(`favorited: ${filter.favorited}`);
|
|
157
26
|
const filterArg = filterParts.length > 0 ? `filter: { ${filterParts.join(', ')} }, ` : '';
|
|
158
|
-
const fieldsQuery = buildFieldsQuery({ preset, fields });
|
|
27
|
+
const fieldsQuery = (0, fields_1.buildFieldsQuery)({ preset, fields });
|
|
159
28
|
const query = `query GetArticles {
|
|
160
29
|
articles(${filterArg}limit: ${limit}, offset: ${offset}, status: ${status}) {
|
|
161
30
|
${fieldsQuery}
|
|
@@ -186,7 +55,7 @@ function createArticleRepository(fetcher) {
|
|
|
186
55
|
filterParts.push(`favorited: ${filter.favorited}`);
|
|
187
56
|
const filterArg = filterParts.length > 0 ? `filter: { ${filterParts.join(', ')} }, ` : '';
|
|
188
57
|
const countFilterArg = filterParts.length > 0 ? `(filter: { ${filterParts.join(', ')} })` : '';
|
|
189
|
-
const fieldsQuery = buildFieldsQuery({ preset, fields });
|
|
58
|
+
const fieldsQuery = (0, fields_1.buildFieldsQuery)({ preset, fields });
|
|
190
59
|
// Query articles and count in a single request
|
|
191
60
|
const query = `query GetArticlesPaginated {
|
|
192
61
|
articles(${filterArg}limit: ${limit}, offset: ${offset}, status: ${status}) {
|
|
@@ -213,7 +82,7 @@ function createArticleRepository(fetcher) {
|
|
|
213
82
|
const { limit = 50 } = options;
|
|
214
83
|
const query = `query GetArticlesByTag($tag: String!) {
|
|
215
84
|
articles(filter: { tag: $tag }, status: PUBLISHED, limit: ${limit}) {
|
|
216
|
-
${buildFieldsQuery()}
|
|
85
|
+
${(0, fields_1.buildFieldsQuery)()}
|
|
217
86
|
}
|
|
218
87
|
}`;
|
|
219
88
|
const { data, errors } = await fetcher(query, { tag }, {
|
|
@@ -229,7 +98,7 @@ function createArticleRepository(fetcher) {
|
|
|
229
98
|
const { limit = 50 } = options;
|
|
230
99
|
const query = `query GetArticlesByPlatform($platform: String!) {
|
|
231
100
|
articles(filter: { platform: $platform }, status: PUBLISHED, limit: ${limit}) {
|
|
232
|
-
${buildFieldsQuery()}
|
|
101
|
+
${(0, fields_1.buildFieldsQuery)()}
|
|
233
102
|
}
|
|
234
103
|
}`;
|
|
235
104
|
const { data, errors } = await fetcher(query, { platform }, {
|
|
@@ -245,7 +114,7 @@ function createArticleRepository(fetcher) {
|
|
|
245
114
|
const { limit = 50 } = options;
|
|
246
115
|
const query = `query GetArticlesByCategory($category: String!) {
|
|
247
116
|
articles(filter: { category: $category }, status: PUBLISHED, limit: ${limit}) {
|
|
248
|
-
${buildFieldsQuery()}
|
|
117
|
+
${(0, fields_1.buildFieldsQuery)()}
|
|
249
118
|
}
|
|
250
119
|
}`;
|
|
251
120
|
const { data, errors } = await fetcher(query, { category }, {
|
|
@@ -260,7 +129,7 @@ function createArticleRepository(fetcher) {
|
|
|
260
129
|
async function getBySlug(slug, language) {
|
|
261
130
|
const query = `query GetArticleBySlug($slug: String!, $language: String) {
|
|
262
131
|
article(slug: $slug, language: $language) {
|
|
263
|
-
${buildFieldsQuery({ preset: 'full' })}
|
|
132
|
+
${(0, fields_1.buildFieldsQuery)({ preset: 'full' })}
|
|
264
133
|
}
|
|
265
134
|
}`;
|
|
266
135
|
const { data, errors } = await fetcher(query, { slug, language }, {
|
|
@@ -275,7 +144,7 @@ function createArticleRepository(fetcher) {
|
|
|
275
144
|
async function getWithDownloads(slug, language) {
|
|
276
145
|
const query = `query GetArticleWithDownloads($slug: String!, $language: String, $downloadsArticleId: Int!) {
|
|
277
146
|
article(slug: $slug, language: $language) {
|
|
278
|
-
${buildFieldsQuery({ preset: 'full' })}
|
|
147
|
+
${(0, fields_1.buildFieldsQuery)({ preset: 'full' })}
|
|
279
148
|
}
|
|
280
149
|
downloads(articleId: $downloadsArticleId) {
|
|
281
150
|
id
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"articleRepository.js","sourceRoot":"","sources":["../../repositories/articleRepository.ts"],"names":[],"mappings":";AAAA;;GAEG;;
|
|
1
|
+
{"version":3,"file":"articleRepository.js","sourceRoot":"","sources":["../../repositories/articleRepository.ts"],"names":[],"mappings":"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"}
|
|
@@ -2,7 +2,7 @@
|
|
|
2
2
|
* Chanomhub SDK - Search Repository
|
|
3
3
|
*/
|
|
4
4
|
import type { GraphQLFetcher } from '../client';
|
|
5
|
-
import type { ArticleListItem } from '../types/article';
|
|
5
|
+
import type { ArticleListItem, ArticlePreset, ArticleField } from '../types/article';
|
|
6
6
|
import type { PaginatedResponse } from '../types/common';
|
|
7
7
|
/** Search options */
|
|
8
8
|
export interface SearchOptions {
|
|
@@ -22,6 +22,10 @@ export interface SearchOptions {
|
|
|
22
22
|
limit?: number;
|
|
23
23
|
/** Page offset */
|
|
24
24
|
offset?: number;
|
|
25
|
+
/** Field preset level (default: 'standard') */
|
|
26
|
+
preset?: ArticlePreset;
|
|
27
|
+
/** Custom field selection (overrides preset) */
|
|
28
|
+
fields?: ArticleField[];
|
|
25
29
|
}
|
|
26
30
|
export interface SearchRepository {
|
|
27
31
|
/** Search articles by query string */
|
|
@@ -1 +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;
|
|
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,aAAa,EAAE,YAAY,EAAE,MAAM,kBAAkB,CAAC;AACrF,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,iBAAiB,CAAC;AAGzD,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,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,gCAAgC;IAChC,cAAc,CAAC,EAAE,MAAM,CAAC;IACxB,4BAA4B;IAC5B,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,uBAAuB;IACvB,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,kBAAkB;IAClB,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,+CAA+C;IAC/C,MAAM,CAAC,EAAE,aAAa,CAAC;IACvB,gDAAgD;IAChD,MAAM,CAAC,EAAE,YAAY,EAAE,CAAC;CAC3B;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;AAED;;GAEG;AACH,wBAAgB,sBAAsB,CAAC,OAAO,EAAE,cAAc,GAAG,gBAAgB,CA+DhF"}
|
|
@@ -4,43 +4,18 @@
|
|
|
4
4
|
*/
|
|
5
5
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
6
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
|
-
`;
|
|
7
|
+
const fields_1 = require("../utils/fields");
|
|
35
8
|
/**
|
|
36
9
|
* Creates a search repository with the given GraphQL client
|
|
37
10
|
*/
|
|
38
11
|
function createSearchRepository(fetcher) {
|
|
39
12
|
async function articles(query, options = {}) {
|
|
40
|
-
const { limit = 12, offset = 0, tag, platform, category, engine, sequentialCode, author } = options;
|
|
13
|
+
const { limit = 12, offset = 0, tag, platform, category, engine, sequentialCode, author, preset = 'standard', fields, } = options;
|
|
14
|
+
// Build field query using shared utility
|
|
15
|
+
const fieldsQuery = (0, fields_1.buildFieldsQuery)({ preset, fields });
|
|
41
16
|
// Build filter parts
|
|
42
17
|
const filterParts = [];
|
|
43
|
-
filterParts.push(`
|
|
18
|
+
filterParts.push(`q: "${query.replace(/"/g, '\\"')}"`);
|
|
44
19
|
if (tag)
|
|
45
20
|
filterParts.push(`tag: "${tag}"`);
|
|
46
21
|
if (platform)
|
|
@@ -56,7 +31,7 @@ function createSearchRepository(fetcher) {
|
|
|
56
31
|
const filterArg = `filter: { ${filterParts.join(', ')} }`;
|
|
57
32
|
const graphqlQuery = `query SearchArticles {
|
|
58
33
|
articles(${filterArg}, limit: ${limit}, offset: ${offset}, status: PUBLISHED) {
|
|
59
|
-
${
|
|
34
|
+
${fieldsQuery}
|
|
60
35
|
}
|
|
61
36
|
articlesCount(${filterArg})
|
|
62
37
|
}`;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"searchRepository.js","sourceRoot":"","sources":["../../repositories/searchRepository.ts"],"names":[],"mappings":";AAAA;;GAEG;;
|
|
1
|
+
{"version":3,"file":"searchRepository.js","sourceRoot":"","sources":["../../repositories/searchRepository.ts"],"names":[],"mappings":";AAAA;;GAEG;;AAuCH,wDA+DC;AAjGD,4CAAmD;AA+BnD;;GAEG;AACH,SAAgB,sBAAsB,CAAC,OAAuB;IAC1D,KAAK,UAAU,QAAQ,CACnB,KAAa,EACb,UAAyB,EAAE;QAE3B,MAAM,EACF,KAAK,GAAG,EAAE,EACV,MAAM,GAAG,CAAC,EACV,GAAG,EACH,QAAQ,EACR,QAAQ,EACR,MAAM,EACN,cAAc,EACd,MAAM,EACN,MAAM,GAAG,UAAU,EACnB,MAAM,GACT,GAAG,OAAO,CAAC;QAEZ,yCAAyC;QACzC,MAAM,WAAW,GAAG,IAAA,yBAAgB,EAAC,EAAE,MAAM,EAAE,MAAM,EAAE,CAAC,CAAC;QAEzD,qBAAqB;QACrB,MAAM,WAAW,GAAa,EAAE,CAAC;QACjC,WAAW,CAAC,IAAI,CAAC,OAAO,KAAK,CAAC,OAAO,CAAC,IAAI,EAAE,KAAK,CAAC,GAAG,CAAC,CAAC;QACvD,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;QAC1D,IAAI,MAAM;YAAE,WAAW,CAAC,IAAI,CAAC,YAAY,MAAM,GAAG,CAAC,CAAC;QACpD,IAAI,cAAc;YAAE,WAAW,CAAC,IAAI,CAAC,oBAAoB,cAAc,GAAG,CAAC,CAAC;QAC5E,IAAI,MAAM;YAAE,WAAW,CAAC,IAAI,CAAC,YAAY,MAAM,GAAG,CAAC,CAAC;QAEpD,MAAM,SAAS,GAAG,aAAa,WAAW,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC;QAE1D,MAAM,YAAY,GAAG;uBACN,SAAS,YAAY,KAAK,aAAa,MAAM;kBAClD,WAAW;;4BAED,SAAS;UAC3B,CAAC;QAEH,MAAM,EAAE,IAAI,EAAE,MAAM,EAAE,GAAG,MAAM,OAAO,CAGnC,YAAY,EAAE,EAAE,EAAE,EAAE,aAAa,EAAE,gBAAgB,EAAE,CAAC,CAAC;QAE1D,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"}
|
|
@@ -0,0 +1,24 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Chanomhub SDK - Shared Field Query Utilities
|
|
3
|
+
* Used by articleRepository and searchRepository
|
|
4
|
+
*/
|
|
5
|
+
import type { ArticlePreset, ArticleField } from '../types/article';
|
|
6
|
+
/**
|
|
7
|
+
* Field definitions for each preset level
|
|
8
|
+
*/
|
|
9
|
+
export declare const FIELD_PRESETS: Record<ArticlePreset, ArticleField[]>;
|
|
10
|
+
/**
|
|
11
|
+
* GraphQL field mappings - converts field names to GraphQL query fragments
|
|
12
|
+
*/
|
|
13
|
+
export declare const FIELD_MAPPINGS: Record<ArticleField, string>;
|
|
14
|
+
export interface FieldQueryOptions {
|
|
15
|
+
/** Field preset level (default: 'standard') */
|
|
16
|
+
preset?: ArticlePreset;
|
|
17
|
+
/** Custom field selection (overrides preset) */
|
|
18
|
+
fields?: ArticleField[];
|
|
19
|
+
}
|
|
20
|
+
/**
|
|
21
|
+
* Builds GraphQL fields query from preset or custom fields
|
|
22
|
+
*/
|
|
23
|
+
export declare function buildFieldsQuery(options?: FieldQueryOptions): string;
|
|
24
|
+
//# sourceMappingURL=fields.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"fields.d.ts","sourceRoot":"","sources":["../../utils/fields.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,OAAO,KAAK,EAAE,aAAa,EAAE,YAAY,EAAE,MAAM,kBAAkB,CAAC;AAEpE;;GAEG;AACH,eAAO,MAAM,aAAa,EAAE,MAAM,CAAC,aAAa,EAAE,YAAY,EAAE,CAgD/D,CAAC;AAEF;;GAEG;AACH,eAAO,MAAM,cAAc,EAAE,MAAM,CAAC,YAAY,EAAE,MAAM,CA8DvD,CAAC;AAEF,MAAM,WAAW,iBAAiB;IAC9B,+CAA+C;IAC/C,MAAM,CAAC,EAAE,aAAa,CAAC;IACvB,gDAAgD;IAChD,MAAM,CAAC,EAAE,YAAY,EAAE,CAAC;CAC3B;AAED;;GAEG;AACH,wBAAgB,gBAAgB,CAAC,OAAO,GAAE,iBAAsB,GAAG,MAAM,CAQxE"}
|
|
@@ -0,0 +1,138 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
/**
|
|
3
|
+
* Chanomhub SDK - Shared Field Query Utilities
|
|
4
|
+
* Used by articleRepository and searchRepository
|
|
5
|
+
*/
|
|
6
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
7
|
+
exports.FIELD_MAPPINGS = exports.FIELD_PRESETS = void 0;
|
|
8
|
+
exports.buildFieldsQuery = buildFieldsQuery;
|
|
9
|
+
/**
|
|
10
|
+
* Field definitions for each preset level
|
|
11
|
+
*/
|
|
12
|
+
exports.FIELD_PRESETS = {
|
|
13
|
+
minimal: ['id', 'title', 'slug', 'mainImage'],
|
|
14
|
+
standard: [
|
|
15
|
+
'id',
|
|
16
|
+
'title',
|
|
17
|
+
'slug',
|
|
18
|
+
'description',
|
|
19
|
+
'ver',
|
|
20
|
+
'mainImage',
|
|
21
|
+
'coverImage',
|
|
22
|
+
'author',
|
|
23
|
+
'tags',
|
|
24
|
+
'platforms',
|
|
25
|
+
'categories',
|
|
26
|
+
'creators',
|
|
27
|
+
'engine',
|
|
28
|
+
'favoritesCount',
|
|
29
|
+
'favorited',
|
|
30
|
+
'createdAt',
|
|
31
|
+
'updatedAt',
|
|
32
|
+
'status',
|
|
33
|
+
'sequentialCode',
|
|
34
|
+
'images',
|
|
35
|
+
],
|
|
36
|
+
full: [
|
|
37
|
+
'id',
|
|
38
|
+
'title',
|
|
39
|
+
'slug',
|
|
40
|
+
'description',
|
|
41
|
+
'body',
|
|
42
|
+
'ver',
|
|
43
|
+
'mainImage',
|
|
44
|
+
'coverImage',
|
|
45
|
+
'backgroundImage',
|
|
46
|
+
'author',
|
|
47
|
+
'tags',
|
|
48
|
+
'platforms',
|
|
49
|
+
'categories',
|
|
50
|
+
'creators',
|
|
51
|
+
'engine',
|
|
52
|
+
'images',
|
|
53
|
+
'favoritesCount',
|
|
54
|
+
'favorited',
|
|
55
|
+
'createdAt',
|
|
56
|
+
'updatedAt',
|
|
57
|
+
'status',
|
|
58
|
+
'sequentialCode',
|
|
59
|
+
],
|
|
60
|
+
};
|
|
61
|
+
/**
|
|
62
|
+
* GraphQL field mappings - converts field names to GraphQL query fragments
|
|
63
|
+
*/
|
|
64
|
+
exports.FIELD_MAPPINGS = {
|
|
65
|
+
id: 'id',
|
|
66
|
+
title: 'title',
|
|
67
|
+
slug: 'slug',
|
|
68
|
+
description: 'description',
|
|
69
|
+
body: 'body',
|
|
70
|
+
ver: 'ver',
|
|
71
|
+
mainImage: 'mainImage',
|
|
72
|
+
coverImage: 'coverImage',
|
|
73
|
+
backgroundImage: 'backgroundImage',
|
|
74
|
+
createdAt: 'createdAt',
|
|
75
|
+
updatedAt: 'updatedAt',
|
|
76
|
+
status: 'status',
|
|
77
|
+
sequentialCode: 'sequentialCode',
|
|
78
|
+
favoritesCount: 'favoritesCount',
|
|
79
|
+
favorited: 'favorited',
|
|
80
|
+
engine: `engine {
|
|
81
|
+
id
|
|
82
|
+
name
|
|
83
|
+
}`,
|
|
84
|
+
author: `author {
|
|
85
|
+
id
|
|
86
|
+
name
|
|
87
|
+
image
|
|
88
|
+
}`,
|
|
89
|
+
creators: `creators {
|
|
90
|
+
id
|
|
91
|
+
name
|
|
92
|
+
}`,
|
|
93
|
+
tags: `tags {
|
|
94
|
+
id
|
|
95
|
+
name
|
|
96
|
+
}`,
|
|
97
|
+
platforms: `platforms {
|
|
98
|
+
id
|
|
99
|
+
name
|
|
100
|
+
}`,
|
|
101
|
+
categories: `categories {
|
|
102
|
+
id
|
|
103
|
+
name
|
|
104
|
+
}`,
|
|
105
|
+
images: `images {
|
|
106
|
+
id
|
|
107
|
+
url
|
|
108
|
+
}`,
|
|
109
|
+
mods: `mods {
|
|
110
|
+
id
|
|
111
|
+
name
|
|
112
|
+
description
|
|
113
|
+
creditTo
|
|
114
|
+
downloadLink
|
|
115
|
+
version
|
|
116
|
+
status
|
|
117
|
+
categories {
|
|
118
|
+
id
|
|
119
|
+
name
|
|
120
|
+
}
|
|
121
|
+
images {
|
|
122
|
+
id
|
|
123
|
+
url
|
|
124
|
+
}
|
|
125
|
+
}`,
|
|
126
|
+
};
|
|
127
|
+
/**
|
|
128
|
+
* Builds GraphQL fields query from preset or custom fields
|
|
129
|
+
*/
|
|
130
|
+
function buildFieldsQuery(options = {}) {
|
|
131
|
+
const { preset = 'standard', fields } = options;
|
|
132
|
+
const selectedFields = fields !== null && fields !== void 0 ? fields : exports.FIELD_PRESETS[preset];
|
|
133
|
+
return selectedFields
|
|
134
|
+
.map((field) => exports.FIELD_MAPPINGS[field])
|
|
135
|
+
.filter(Boolean)
|
|
136
|
+
.join('\n ');
|
|
137
|
+
}
|
|
138
|
+
//# sourceMappingURL=fields.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"fields.js","sourceRoot":"","sources":["../../utils/fields.ts"],"names":[],"mappings":";AAAA;;;GAGG;;;AAsIH,4CAQC;AA1ID;;GAEG;AACU,QAAA,aAAa,GAA0C;IAChE,OAAO,EAAE,CAAC,IAAI,EAAE,OAAO,EAAE,MAAM,EAAE,WAAW,CAAC;IAC7C,QAAQ,EAAE;QACN,IAAI;QACJ,OAAO;QACP,MAAM;QACN,aAAa;QACb,KAAK;QACL,WAAW;QACX,YAAY;QACZ,QAAQ;QACR,MAAM;QACN,WAAW;QACX,YAAY;QACZ,UAAU;QACV,QAAQ;QACR,gBAAgB;QAChB,WAAW;QACX,WAAW;QACX,WAAW;QACX,QAAQ;QACR,gBAAgB;QAChB,QAAQ;KACX;IACD,IAAI,EAAE;QACF,IAAI;QACJ,OAAO;QACP,MAAM;QACN,aAAa;QACb,MAAM;QACN,KAAK;QACL,WAAW;QACX,YAAY;QACZ,iBAAiB;QACjB,QAAQ;QACR,MAAM;QACN,WAAW;QACX,YAAY;QACZ,UAAU;QACV,QAAQ;QACR,QAAQ;QACR,gBAAgB;QAChB,WAAW;QACX,WAAW;QACX,WAAW;QACX,QAAQ;QACR,gBAAgB;KACnB;CACJ,CAAC;AAEF;;GAEG;AACU,QAAA,cAAc,GAAiC;IACxD,EAAE,EAAE,IAAI;IACR,KAAK,EAAE,OAAO;IACd,IAAI,EAAE,MAAM;IACZ,WAAW,EAAE,aAAa;IAC1B,IAAI,EAAE,MAAM;IACZ,GAAG,EAAE,KAAK;IACV,SAAS,EAAE,WAAW;IACtB,UAAU,EAAE,YAAY;IACxB,eAAe,EAAE,iBAAiB;IAClC,SAAS,EAAE,WAAW;IACtB,SAAS,EAAE,WAAW;IACtB,MAAM,EAAE,QAAQ;IAChB,cAAc,EAAE,gBAAgB;IAChC,cAAc,EAAE,gBAAgB;IAChC,SAAS,EAAE,WAAW;IACtB,MAAM,EAAE;;;IAGR;IACA,MAAM,EAAE;;;;IAIR;IACA,QAAQ,EAAE;;;IAGV;IACA,IAAI,EAAE;;;IAGN;IACA,SAAS,EAAE;;;IAGX;IACA,UAAU,EAAE;;;IAGZ;IACA,MAAM,EAAE;;;IAGR;IACA,IAAI,EAAE;;;;;;;;;;;;;;;;IAgBN;CACH,CAAC;AASF;;GAEG;AACH,SAAgB,gBAAgB,CAAC,UAA6B,EAAE;IAC5D,MAAM,EAAE,MAAM,GAAG,UAAU,EAAE,MAAM,EAAE,GAAG,OAAO,CAAC;IAChD,MAAM,cAAc,GAAG,MAAM,aAAN,MAAM,cAAN,MAAM,GAAI,qBAAa,CAAC,MAAM,CAAC,CAAC;IAEvD,OAAO,cAAc;SAChB,GAAG,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,sBAAc,CAAC,KAAK,CAAC,CAAC;SACrC,MAAM,CAAC,OAAO,CAAC;SACf,IAAI,CAAC,MAAM,CAAC,CAAC;AACtB,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../utils/index.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,OAAO,EAAE,aAAa,EAAE,cAAc,EAAE,gBAAgB,EAAE,MAAM,UAAU,CAAC;AAC3E,YAAY,EAAE,iBAAiB,EAAE,MAAM,UAAU,CAAC"}
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
/**
|
|
3
|
+
* Chanomhub SDK - Utilities
|
|
4
|
+
*/
|
|
5
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
6
|
+
exports.buildFieldsQuery = exports.FIELD_MAPPINGS = exports.FIELD_PRESETS = void 0;
|
|
7
|
+
var fields_1 = require("./fields");
|
|
8
|
+
Object.defineProperty(exports, "FIELD_PRESETS", { enumerable: true, get: function () { return fields_1.FIELD_PRESETS; } });
|
|
9
|
+
Object.defineProperty(exports, "FIELD_MAPPINGS", { enumerable: true, get: function () { return fields_1.FIELD_MAPPINGS; } });
|
|
10
|
+
Object.defineProperty(exports, "buildFieldsQuery", { enumerable: true, get: function () { return fields_1.buildFieldsQuery; } });
|
|
11
|
+
//# sourceMappingURL=index.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../utils/index.ts"],"names":[],"mappings":";AAAA;;GAEG;;;AAEH,mCAA2E;AAAlE,uGAAA,aAAa,OAAA;AAAE,wGAAA,cAAc,OAAA;AAAE,0GAAA,gBAAgB,OAAA"}
|