@sudobility/sudojo_client 0.0.1

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 (53) hide show
  1. package/dist/hooks/index.d.ts +11 -0
  2. package/dist/hooks/index.d.ts.map +1 -0
  3. package/dist/hooks/index.js +10 -0
  4. package/dist/hooks/index.js.map +1 -0
  5. package/dist/hooks/query-config.d.ts +10 -0
  6. package/dist/hooks/query-config.d.ts.map +1 -0
  7. package/dist/hooks/query-config.js +10 -0
  8. package/dist/hooks/query-config.js.map +1 -0
  9. package/dist/hooks/query-keys.d.ts +57 -0
  10. package/dist/hooks/query-keys.d.ts.map +1 -0
  11. package/dist/hooks/query-keys.js +31 -0
  12. package/dist/hooks/query-keys.js.map +1 -0
  13. package/dist/hooks/use-sudojo-boards.d.ts +21 -0
  14. package/dist/hooks/use-sudojo-boards.d.ts.map +1 -0
  15. package/dist/hooks/use-sudojo-boards.js +95 -0
  16. package/dist/hooks/use-sudojo-boards.js.map +1 -0
  17. package/dist/hooks/use-sudojo-challenges.d.ts +21 -0
  18. package/dist/hooks/use-sudojo-challenges.d.ts.map +1 -0
  19. package/dist/hooks/use-sudojo-challenges.js +97 -0
  20. package/dist/hooks/use-sudojo-challenges.js.map +1 -0
  21. package/dist/hooks/use-sudojo-dailies.d.ts +23 -0
  22. package/dist/hooks/use-sudojo-dailies.d.ts.map +1 -0
  23. package/dist/hooks/use-sudojo-dailies.js +116 -0
  24. package/dist/hooks/use-sudojo-dailies.js.map +1 -0
  25. package/dist/hooks/use-sudojo-health.d.ts +6 -0
  26. package/dist/hooks/use-sudojo-health.d.ts.map +1 -0
  27. package/dist/hooks/use-sudojo-health.js +18 -0
  28. package/dist/hooks/use-sudojo-health.js.map +1 -0
  29. package/dist/hooks/use-sudojo-learning.d.ts +20 -0
  30. package/dist/hooks/use-sudojo-learning.d.ts.map +1 -0
  31. package/dist/hooks/use-sudojo-learning.js +82 -0
  32. package/dist/hooks/use-sudojo-learning.js.map +1 -0
  33. package/dist/hooks/use-sudojo-levels.d.ts +20 -0
  34. package/dist/hooks/use-sudojo-levels.d.ts.map +1 -0
  35. package/dist/hooks/use-sudojo-levels.js +73 -0
  36. package/dist/hooks/use-sudojo-levels.js.map +1 -0
  37. package/dist/hooks/use-sudojo-techniques.d.ts +20 -0
  38. package/dist/hooks/use-sudojo-techniques.d.ts.map +1 -0
  39. package/dist/hooks/use-sudojo-techniques.js +81 -0
  40. package/dist/hooks/use-sudojo-techniques.js.map +1 -0
  41. package/dist/index.d.ts +6 -0
  42. package/dist/index.d.ts.map +1 -0
  43. package/dist/index.js +3 -0
  44. package/dist/index.js.map +1 -0
  45. package/dist/network/index.d.ts +3 -0
  46. package/dist/network/index.d.ts.map +1 -0
  47. package/dist/network/index.js +2 -0
  48. package/dist/network/index.js.map +1 -0
  49. package/dist/network/sudojo-client.d.ts +58 -0
  50. package/dist/network/sudojo-client.d.ts.map +1 -0
  51. package/dist/network/sudojo-client.js +333 -0
  52. package/dist/network/sudojo-client.js.map +1 -0
  53. package/package.json +59 -0
@@ -0,0 +1,333 @@
1
+ const createURLSearchParams = () => {
2
+ const params = {};
3
+ return {
4
+ append: (key, value) => {
5
+ if (!params[key]) {
6
+ params[key] = [];
7
+ }
8
+ params[key]?.push(value);
9
+ },
10
+ toString: () => {
11
+ return Object.entries(params)
12
+ .flatMap(([key, values]) => values.map((value) => `${encodeURIComponent(key)}=${encodeURIComponent(value)}`))
13
+ .join("&");
14
+ },
15
+ };
16
+ };
17
+ const isValidUUID = (id) => {
18
+ return /^[0-9a-f]{8}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{12}$/i.test(id);
19
+ };
20
+ const validateUUID = (uuid, name = "UUID") => {
21
+ if (!uuid) {
22
+ throw new Error(`${name} is required`);
23
+ }
24
+ if (!isValidUUID(uuid)) {
25
+ throw new Error(`Invalid ${name} format: "${uuid}". Expected UUID format (xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx)`);
26
+ }
27
+ return uuid;
28
+ };
29
+ const createApiConfig = (config) => ({
30
+ BASE_URL: config.baseUrl,
31
+ API_TOKEN: config.apiToken,
32
+ ENDPOINTS: {
33
+ HEALTH: "/",
34
+ LEVELS: "/api/v1/levels",
35
+ LEVEL: (uuid) => `/api/v1/levels/${uuid}`,
36
+ TECHNIQUES: "/api/v1/techniques",
37
+ TECHNIQUE: (uuid) => `/api/v1/techniques/${uuid}`,
38
+ LEARNING: "/api/v1/learning",
39
+ LEARNING_ITEM: (uuid) => `/api/v1/learning/${uuid}`,
40
+ BOARDS: "/api/v1/boards",
41
+ BOARDS_RANDOM: "/api/v1/boards/random",
42
+ BOARD: (uuid) => `/api/v1/boards/${uuid}`,
43
+ DAILIES: "/api/v1/dailies",
44
+ DAILIES_RANDOM: "/api/v1/dailies/random",
45
+ DAILIES_TODAY: "/api/v1/dailies/today",
46
+ DAILIES_DATE: (date) => `/api/v1/dailies/date/${date}`,
47
+ DAILY: (uuid) => `/api/v1/dailies/${uuid}`,
48
+ CHALLENGES: "/api/v1/challenges",
49
+ CHALLENGES_RANDOM: "/api/v1/challenges/random",
50
+ CHALLENGE: (uuid) => `/api/v1/challenges/${uuid}`,
51
+ },
52
+ DEFAULT_HEADERS: {
53
+ "Content-Type": "application/json",
54
+ Accept: "application/json",
55
+ },
56
+ });
57
+ export class SudojoClient {
58
+ constructor(networkClient, config) {
59
+ this.config = createApiConfig(config);
60
+ this.baseUrl = this.config.BASE_URL;
61
+ this.networkClient = networkClient;
62
+ this.headers = {
63
+ ...this.config.DEFAULT_HEADERS,
64
+ };
65
+ }
66
+ async request(endpoint, options = {}) {
67
+ const url = `${this.baseUrl}${endpoint}`;
68
+ const requestHeaders = {
69
+ ...this.headers,
70
+ ...options.headers,
71
+ };
72
+ if (options.auth?.accessToken) {
73
+ requestHeaders["Authorization"] = `Bearer ${options.auth.accessToken}`;
74
+ }
75
+ const requestOptions = {
76
+ method: options.method || "GET",
77
+ headers: requestHeaders,
78
+ };
79
+ if (options.body && options.method !== "GET") {
80
+ requestOptions.body = JSON.stringify(options.body);
81
+ }
82
+ const response = await this.networkClient.request(url, requestOptions);
83
+ if (response.data === undefined) {
84
+ throw new Error("No data received from server");
85
+ }
86
+ return response.data;
87
+ }
88
+ async getHealth() {
89
+ return this.request(this.config.ENDPOINTS.HEALTH);
90
+ }
91
+ async getLevels() {
92
+ return this.request(this.config.ENDPOINTS.LEVELS);
93
+ }
94
+ async getLevel(uuid) {
95
+ const validatedUuid = validateUUID(uuid, "Level UUID");
96
+ return this.request(this.config.ENDPOINTS.LEVEL(validatedUuid));
97
+ }
98
+ async createLevel(auth, data) {
99
+ return this.request(this.config.ENDPOINTS.LEVELS, {
100
+ method: "POST",
101
+ body: data,
102
+ auth,
103
+ });
104
+ }
105
+ async updateLevel(auth, uuid, data) {
106
+ const validatedUuid = validateUUID(uuid, "Level UUID");
107
+ return this.request(this.config.ENDPOINTS.LEVEL(validatedUuid), {
108
+ method: "PUT",
109
+ body: data,
110
+ auth,
111
+ });
112
+ }
113
+ async deleteLevel(auth, uuid) {
114
+ const validatedUuid = validateUUID(uuid, "Level UUID");
115
+ return this.request(this.config.ENDPOINTS.LEVEL(validatedUuid), {
116
+ method: "DELETE",
117
+ auth,
118
+ });
119
+ }
120
+ async getTechniques(queryParams) {
121
+ const params = createURLSearchParams();
122
+ if (queryParams?.level_uuid) {
123
+ params.append("level_uuid", queryParams.level_uuid);
124
+ }
125
+ const query = params.toString();
126
+ const endpoint = `${this.config.ENDPOINTS.TECHNIQUES}${query ? `?${query}` : ""}`;
127
+ return this.request(endpoint);
128
+ }
129
+ async getTechnique(uuid) {
130
+ const validatedUuid = validateUUID(uuid, "Technique UUID");
131
+ return this.request(this.config.ENDPOINTS.TECHNIQUE(validatedUuid));
132
+ }
133
+ async createTechnique(auth, data) {
134
+ return this.request(this.config.ENDPOINTS.TECHNIQUES, {
135
+ method: "POST",
136
+ body: data,
137
+ auth,
138
+ });
139
+ }
140
+ async updateTechnique(auth, uuid, data) {
141
+ const validatedUuid = validateUUID(uuid, "Technique UUID");
142
+ return this.request(this.config.ENDPOINTS.TECHNIQUE(validatedUuid), {
143
+ method: "PUT",
144
+ body: data,
145
+ auth,
146
+ });
147
+ }
148
+ async deleteTechnique(auth, uuid) {
149
+ const validatedUuid = validateUUID(uuid, "Technique UUID");
150
+ return this.request(this.config.ENDPOINTS.TECHNIQUE(validatedUuid), {
151
+ method: "DELETE",
152
+ auth,
153
+ });
154
+ }
155
+ async getLearning(queryParams) {
156
+ const params = createURLSearchParams();
157
+ if (queryParams?.technique_uuid) {
158
+ params.append("technique_uuid", queryParams.technique_uuid);
159
+ }
160
+ if (queryParams?.language_code) {
161
+ params.append("language_code", queryParams.language_code);
162
+ }
163
+ const query = params.toString();
164
+ const endpoint = `${this.config.ENDPOINTS.LEARNING}${query ? `?${query}` : ""}`;
165
+ return this.request(endpoint);
166
+ }
167
+ async getLearningItem(uuid) {
168
+ const validatedUuid = validateUUID(uuid, "Learning UUID");
169
+ return this.request(this.config.ENDPOINTS.LEARNING_ITEM(validatedUuid));
170
+ }
171
+ async createLearning(auth, data) {
172
+ return this.request(this.config.ENDPOINTS.LEARNING, {
173
+ method: "POST",
174
+ body: data,
175
+ auth,
176
+ });
177
+ }
178
+ async updateLearning(auth, uuid, data) {
179
+ const validatedUuid = validateUUID(uuid, "Learning UUID");
180
+ return this.request(this.config.ENDPOINTS.LEARNING_ITEM(validatedUuid), {
181
+ method: "PUT",
182
+ body: data,
183
+ auth,
184
+ });
185
+ }
186
+ async deleteLearning(auth, uuid) {
187
+ const validatedUuid = validateUUID(uuid, "Learning UUID");
188
+ return this.request(this.config.ENDPOINTS.LEARNING_ITEM(validatedUuid), {
189
+ method: "DELETE",
190
+ auth,
191
+ });
192
+ }
193
+ async getBoards(queryParams) {
194
+ const params = createURLSearchParams();
195
+ if (queryParams?.level_uuid) {
196
+ params.append("level_uuid", queryParams.level_uuid);
197
+ }
198
+ const query = params.toString();
199
+ const endpoint = `${this.config.ENDPOINTS.BOARDS}${query ? `?${query}` : ""}`;
200
+ return this.request(endpoint);
201
+ }
202
+ async getRandomBoard(queryParams) {
203
+ const params = createURLSearchParams();
204
+ if (queryParams?.level_uuid) {
205
+ params.append("level_uuid", queryParams.level_uuid);
206
+ }
207
+ const query = params.toString();
208
+ const endpoint = `${this.config.ENDPOINTS.BOARDS_RANDOM}${query ? `?${query}` : ""}`;
209
+ return this.request(endpoint);
210
+ }
211
+ async getBoard(uuid) {
212
+ const validatedUuid = validateUUID(uuid, "Board UUID");
213
+ return this.request(this.config.ENDPOINTS.BOARD(validatedUuid));
214
+ }
215
+ async createBoard(auth, data) {
216
+ return this.request(this.config.ENDPOINTS.BOARDS, {
217
+ method: "POST",
218
+ body: data,
219
+ auth,
220
+ });
221
+ }
222
+ async updateBoard(auth, uuid, data) {
223
+ const validatedUuid = validateUUID(uuid, "Board UUID");
224
+ return this.request(this.config.ENDPOINTS.BOARD(validatedUuid), {
225
+ method: "PUT",
226
+ body: data,
227
+ auth,
228
+ });
229
+ }
230
+ async deleteBoard(auth, uuid) {
231
+ const validatedUuid = validateUUID(uuid, "Board UUID");
232
+ return this.request(this.config.ENDPOINTS.BOARD(validatedUuid), {
233
+ method: "DELETE",
234
+ auth,
235
+ });
236
+ }
237
+ async getDailies() {
238
+ return this.request(this.config.ENDPOINTS.DAILIES);
239
+ }
240
+ async getRandomDaily() {
241
+ return this.request(this.config.ENDPOINTS.DAILIES_RANDOM);
242
+ }
243
+ async getTodayDaily() {
244
+ return this.request(this.config.ENDPOINTS.DAILIES_TODAY);
245
+ }
246
+ async getDailyByDate(date) {
247
+ if (!/^\d{4}-\d{2}-\d{2}$/.test(date)) {
248
+ throw new Error(`Invalid date format: "${date}". Expected YYYY-MM-DD format`);
249
+ }
250
+ return this.request(this.config.ENDPOINTS.DAILIES_DATE(date));
251
+ }
252
+ async getDaily(uuid) {
253
+ const validatedUuid = validateUUID(uuid, "Daily UUID");
254
+ return this.request(this.config.ENDPOINTS.DAILY(validatedUuid));
255
+ }
256
+ async createDaily(auth, data) {
257
+ return this.request(this.config.ENDPOINTS.DAILIES, {
258
+ method: "POST",
259
+ body: data,
260
+ auth,
261
+ });
262
+ }
263
+ async updateDaily(auth, uuid, data) {
264
+ const validatedUuid = validateUUID(uuid, "Daily UUID");
265
+ return this.request(this.config.ENDPOINTS.DAILY(validatedUuid), {
266
+ method: "PUT",
267
+ body: data,
268
+ auth,
269
+ });
270
+ }
271
+ async deleteDaily(auth, uuid) {
272
+ const validatedUuid = validateUUID(uuid, "Daily UUID");
273
+ return this.request(this.config.ENDPOINTS.DAILY(validatedUuid), {
274
+ method: "DELETE",
275
+ auth,
276
+ });
277
+ }
278
+ async getChallenges(queryParams) {
279
+ const params = createURLSearchParams();
280
+ if (queryParams?.level_uuid) {
281
+ params.append("level_uuid", queryParams.level_uuid);
282
+ }
283
+ if (queryParams?.difficulty) {
284
+ params.append("difficulty", queryParams.difficulty);
285
+ }
286
+ const query = params.toString();
287
+ const endpoint = `${this.config.ENDPOINTS.CHALLENGES}${query ? `?${query}` : ""}`;
288
+ return this.request(endpoint);
289
+ }
290
+ async getRandomChallenge(queryParams) {
291
+ const params = createURLSearchParams();
292
+ if (queryParams?.level_uuid) {
293
+ params.append("level_uuid", queryParams.level_uuid);
294
+ }
295
+ if (queryParams?.difficulty) {
296
+ params.append("difficulty", queryParams.difficulty);
297
+ }
298
+ const query = params.toString();
299
+ const endpoint = `${this.config.ENDPOINTS.CHALLENGES_RANDOM}${query ? `?${query}` : ""}`;
300
+ return this.request(endpoint);
301
+ }
302
+ async getChallenge(uuid) {
303
+ const validatedUuid = validateUUID(uuid, "Challenge UUID");
304
+ return this.request(this.config.ENDPOINTS.CHALLENGE(validatedUuid));
305
+ }
306
+ async createChallenge(auth, data) {
307
+ return this.request(this.config.ENDPOINTS.CHALLENGES, {
308
+ method: "POST",
309
+ body: data,
310
+ auth,
311
+ });
312
+ }
313
+ async updateChallenge(auth, uuid, data) {
314
+ const validatedUuid = validateUUID(uuid, "Challenge UUID");
315
+ return this.request(this.config.ENDPOINTS.CHALLENGE(validatedUuid), {
316
+ method: "PUT",
317
+ body: data,
318
+ auth,
319
+ });
320
+ }
321
+ async deleteChallenge(auth, uuid) {
322
+ const validatedUuid = validateUUID(uuid, "Challenge UUID");
323
+ return this.request(this.config.ENDPOINTS.CHALLENGE(validatedUuid), {
324
+ method: "DELETE",
325
+ auth,
326
+ });
327
+ }
328
+ }
329
+ export const createSudojoClient = (networkClient, config) => {
330
+ return new SudojoClient(networkClient, config);
331
+ };
332
+ export { isValidUUID, validateUUID };
333
+ //# sourceMappingURL=sudojo-client.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"sudojo-client.js","sourceRoot":"","sources":["../../src/network/sudojo-client.ts"],"names":[],"mappings":"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"}
package/package.json ADDED
@@ -0,0 +1,59 @@
1
+ {
2
+ "name": "@sudobility/sudojo_client",
3
+ "version": "0.0.1",
4
+ "description": "TypeScript client library for Sudojo API",
5
+ "type": "module",
6
+ "main": "dist/index.js",
7
+ "types": "dist/index.d.ts",
8
+ "files": ["dist/**/*"],
9
+ "scripts": {
10
+ "build": "tsc -p tsconfig.build.json",
11
+ "build:watch": "tsc --watch",
12
+ "clean": "rm -rf dist",
13
+ "prepublishOnly": "npm run clean && npm run build",
14
+ "test": "vitest",
15
+ "test:run": "vitest run",
16
+ "test:coverage": "vitest run --coverage",
17
+ "test:watch": "vitest --watch",
18
+ "lint": "eslint src --ext .ts,.tsx",
19
+ "lint:fix": "eslint src --ext .ts,.tsx --fix",
20
+ "format": "prettier --write src/**/*.ts",
21
+ "format:check": "prettier --check src/**/*.ts",
22
+ "typecheck": "tsc --noEmit",
23
+ "typecheck:watch": "tsc --noEmit --watch",
24
+ "check-all": "npm run lint && npm run typecheck && npm run test:run"
25
+ },
26
+ "keywords": ["sudojo", "sudoku", "client", "typescript", "api"],
27
+ "author": "Sudobility Team",
28
+ "license": "MIT",
29
+ "peerDependencies": {
30
+ "@sudobility/di": "^1.5.5",
31
+ "@sudobility/types": "^1.9.31",
32
+ "@sudobility/sudojo_types": "^1.0.0",
33
+ "@tanstack/react-query": ">=5.0.0",
34
+ "react": ">=18.0.0"
35
+ },
36
+ "devDependencies": {
37
+ "@eslint/js": "^9.38.0",
38
+ "@sudobility/di": "^1.5.5",
39
+ "@sudobility/types": "^1.9.31",
40
+ "@sudobility/sudojo_types": "^1.0.0",
41
+ "@tanstack/react-query": "^5.90.5",
42
+ "@testing-library/react": "^16.3.0",
43
+ "@types/node": "^24.9.1",
44
+ "@types/react": "^19.2.2",
45
+ "@typescript-eslint/eslint-plugin": "^8.46.2",
46
+ "@typescript-eslint/parser": "^8.46.2",
47
+ "@vitest/coverage-v8": "^3.2.4",
48
+ "eslint": "^9.38.0",
49
+ "eslint-config-prettier": "^10.1.8",
50
+ "eslint-plugin-prettier": "^5.5.4",
51
+ "happy-dom": "^20.0.8",
52
+ "prettier": "^3.6.2",
53
+ "typescript": "^5.9.3",
54
+ "vitest": "^3.2.4"
55
+ },
56
+ "publishConfig": {
57
+ "access": "restricted"
58
+ }
59
+ }