@sudobility/sudojo_lib 0.0.4 → 0.0.5
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/hooks/useGameTeaching.d.ts +7 -4
- package/dist/hooks/useGameTeaching.d.ts.map +1 -1
- package/dist/hooks/useGameTeaching.js +9 -8
- package/dist/hooks/useGameTeaching.js.map +1 -1
- package/dist/hooks/useHint.d.ts +8 -5
- package/dist/hooks/useHint.d.ts.map +1 -1
- package/dist/hooks/useHint.js +15 -6
- package/dist/hooks/useHint.js.map +1 -1
- package/package.json +3 -3
|
@@ -2,13 +2,15 @@
|
|
|
2
2
|
* Hook for integrating the Sudoku solver for teaching and hints
|
|
3
3
|
*/
|
|
4
4
|
import type { NetworkClient } from '@sudobility/types';
|
|
5
|
-
import { type
|
|
5
|
+
import { type SudojoAuth, type SudojoConfig } from '@sudobility/sudojo_client';
|
|
6
6
|
import type { GameHint, TeachingState } from '../types';
|
|
7
7
|
export interface UseGameTeachingOptions {
|
|
8
8
|
/** Network client for API calls */
|
|
9
9
|
networkClient: NetworkClient;
|
|
10
|
-
/**
|
|
11
|
-
config:
|
|
10
|
+
/** Sudojo API configuration */
|
|
11
|
+
config: SudojoConfig;
|
|
12
|
+
/** Authentication for API calls */
|
|
13
|
+
auth: SudojoAuth;
|
|
12
14
|
}
|
|
13
15
|
export interface UseGameTeachingResult {
|
|
14
16
|
/** Current teaching state */
|
|
@@ -45,7 +47,8 @@ export interface UseGameTeachingResult {
|
|
|
45
47
|
* const game = useGame();
|
|
46
48
|
* const { teachingState, getHint, applyHint } = useGameTeaching({
|
|
47
49
|
* networkClient,
|
|
48
|
-
* config: { baseUrl: 'https://
|
|
50
|
+
* config: { baseUrl: 'https://api.sudojo.com' },
|
|
51
|
+
* auth: { accessToken: 'user-access-token' },
|
|
49
52
|
* });
|
|
50
53
|
*
|
|
51
54
|
* const handleGetHint = async () => {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"useGameTeaching.d.ts","sourceRoot":"","sources":["../../src/hooks/useGameTeaching.ts"],"names":[],"mappings":"AAAA;;GAEG;AAGH,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,mBAAmB,CAAC;AACvD,OAAO,
|
|
1
|
+
{"version":3,"file":"useGameTeaching.d.ts","sourceRoot":"","sources":["../../src/hooks/useGameTeaching.ts"],"names":[],"mappings":"AAAA;;GAEG;AAGH,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,mBAAmB,CAAC;AACvD,OAAO,EAKL,KAAK,UAAU,EACf,KAAK,YAAY,EAClB,MAAM,2BAA2B,CAAC;AACnC,OAAO,KAAK,EAAE,QAAQ,EAAE,aAAa,EAAE,MAAM,UAAU,CAAC;AAExD,MAAM,WAAW,sBAAsB;IACrC,mCAAmC;IACnC,aAAa,EAAE,aAAa,CAAC;IAC7B,+BAA+B;IAC/B,MAAM,EAAE,YAAY,CAAC;IACrB,mCAAmC;IACnC,IAAI,EAAE,UAAU,CAAC;CAClB;AAED,MAAM,WAAW,qBAAqB;IACpC,6BAA6B;IAC7B,aAAa,EAAE,aAAa,CAAC;IAC7B,6CAA6C;IAC7C,OAAO,EAAE,CACP,cAAc,EAAE,MAAM,EACtB,SAAS,EAAE,MAAM,EACjB,OAAO,CAAC,EAAE;QAAE,eAAe,CAAC,EAAE,OAAO,CAAC;QAAC,WAAW,CAAC,EAAE,MAAM,CAAA;KAAE,KAC1D,OAAO,CAAC,IAAI,CAAC,CAAC;IACnB,0EAA0E;IAC1E,SAAS,EAAE,MAAM,QAAQ,GAAG,IAAI,CAAC;IACjC,iDAAiD;IACjD,QAAQ,EAAE,MAAM,IAAI,CAAC;IACrB,qDAAqD;IACrD,YAAY,EAAE,MAAM,IAAI,CAAC;IACzB,6BAA6B;IAC7B,SAAS,EAAE,MAAM,IAAI,CAAC;IACtB,kCAAkC;IAClC,OAAO,EAAE,OAAO,CAAC;IACjB,uDAAuD;IACvD,YAAY,EAAE,OAAO,CAAC;IACtB,yCAAyC;IACzC,eAAe,EAAE,OAAO,CAAC;CAC1B;AA6CD;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAoDG;AACH,wBAAgB,eAAe,CAC7B,OAAO,EAAE,sBAAsB,GAC9B,qBAAqB,CAiLvB"}
|
|
@@ -2,7 +2,7 @@
|
|
|
2
2
|
* Hook for integrating the Sudoku solver for teaching and hints
|
|
3
3
|
*/
|
|
4
4
|
import { useCallback, useMemo, useState } from 'react';
|
|
5
|
-
import {
|
|
5
|
+
import { createSudojoClient, } from '@sudobility/sudojo_client';
|
|
6
6
|
/**
|
|
7
7
|
* Converts a solver SolverHintStep to our GameHint format
|
|
8
8
|
*/
|
|
@@ -51,7 +51,8 @@ function convertHintStep(step) {
|
|
|
51
51
|
* const game = useGame();
|
|
52
52
|
* const { teachingState, getHint, applyHint } = useGameTeaching({
|
|
53
53
|
* networkClient,
|
|
54
|
-
* config: { baseUrl: 'https://
|
|
54
|
+
* config: { baseUrl: 'https://api.sudojo.com' },
|
|
55
|
+
* auth: { accessToken: 'user-access-token' },
|
|
55
56
|
* });
|
|
56
57
|
*
|
|
57
58
|
* const handleGetHint = async () => {
|
|
@@ -92,7 +93,7 @@ function convertHintStep(step) {
|
|
|
92
93
|
* ```
|
|
93
94
|
*/
|
|
94
95
|
export function useGameTeaching(options) {
|
|
95
|
-
const { networkClient, config } = options;
|
|
96
|
+
const { networkClient, config, auth } = options;
|
|
96
97
|
const [teachingState, setTeachingState] = useState({
|
|
97
98
|
isActive: false,
|
|
98
99
|
currentHint: null,
|
|
@@ -103,9 +104,9 @@ export function useGameTeaching(options) {
|
|
|
103
104
|
});
|
|
104
105
|
// Store all hint steps for multi-step hints
|
|
105
106
|
const [allSteps, setAllSteps] = useState([]);
|
|
106
|
-
// Create
|
|
107
|
-
const
|
|
108
|
-
return
|
|
107
|
+
// Create Sudojo client
|
|
108
|
+
const client = useMemo(() => {
|
|
109
|
+
return createSudojoClient(networkClient, config);
|
|
109
110
|
}, [networkClient, config]);
|
|
110
111
|
const getHint = useCallback(async (originalPuzzle, userBoard, hintOptions) => {
|
|
111
112
|
setTeachingState(prev => ({
|
|
@@ -124,7 +125,7 @@ export function useGameTeaching(options) {
|
|
|
124
125
|
if (hintOptions?.pencilmarks !== undefined) {
|
|
125
126
|
solveOptions.pencilmarks = hintOptions.pencilmarks;
|
|
126
127
|
}
|
|
127
|
-
const response = await
|
|
128
|
+
const response = await client.solverSolve(auth, solveOptions);
|
|
128
129
|
if (!response.success || !response.data?.hints?.length) {
|
|
129
130
|
const errorMessage = response.error ?? 'No hints available for the current state';
|
|
130
131
|
setTeachingState(prev => ({
|
|
@@ -177,7 +178,7 @@ export function useGameTeaching(options) {
|
|
|
177
178
|
}));
|
|
178
179
|
setAllSteps([]);
|
|
179
180
|
}
|
|
180
|
-
}, [
|
|
181
|
+
}, [client, auth]);
|
|
181
182
|
const applyHint = useCallback(() => {
|
|
182
183
|
return teachingState.currentHint;
|
|
183
184
|
}, [teachingState.currentHint]);
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"useGameTeaching.js","sourceRoot":"","sources":["../../src/hooks/useGameTeaching.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,OAAO,EAAE,WAAW,EAAE,OAAO,EAAE,QAAQ,EAAE,MAAM,OAAO,CAAC;AAEvD,OAAO,EAEL,
|
|
1
|
+
{"version":3,"file":"useGameTeaching.js","sourceRoot":"","sources":["../../src/hooks/useGameTeaching.ts"],"names":[],"mappings":"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"}
|
package/dist/hooks/useHint.d.ts
CHANGED
|
@@ -8,7 +8,7 @@
|
|
|
8
8
|
* - previous() goes back to previous step
|
|
9
9
|
* - getHint() fetches new hints OR advances to next step if hints exist
|
|
10
10
|
*/
|
|
11
|
-
import { type
|
|
11
|
+
import { type SolverHintStep, type SudojoAuth, type SudojoConfig } from '@sudobility/sudojo_client';
|
|
12
12
|
import type { NetworkClient } from '@sudobility/types';
|
|
13
13
|
/** Board data returned when applying a hint */
|
|
14
14
|
export interface HintBoardData {
|
|
@@ -22,8 +22,10 @@ export interface HintBoardData {
|
|
|
22
22
|
export interface UseHintOptions {
|
|
23
23
|
/** Network client for API calls */
|
|
24
24
|
networkClient: NetworkClient;
|
|
25
|
-
/**
|
|
26
|
-
config:
|
|
25
|
+
/** Sudojo API configuration */
|
|
26
|
+
config: SudojoConfig;
|
|
27
|
+
/** Authentication for API calls */
|
|
28
|
+
auth: SudojoAuth;
|
|
27
29
|
/** Original puzzle string (81 chars) */
|
|
28
30
|
puzzle: string;
|
|
29
31
|
/** Current user input string (81 chars) */
|
|
@@ -79,7 +81,8 @@ export interface UseHintResult {
|
|
|
79
81
|
* ```tsx
|
|
80
82
|
* const { hint, isLoading, getHint, nextStep, clearHint, applyHint } = useHint({
|
|
81
83
|
* networkClient,
|
|
82
|
-
* config,
|
|
84
|
+
* config: { baseUrl: 'https://api.sudojo.com' },
|
|
85
|
+
* auth: { accessToken: 'user-access-token' },
|
|
83
86
|
* puzzle: originalPuzzle,
|
|
84
87
|
* userInput: currentInput,
|
|
85
88
|
* pencilmarks: currentPencilmarks,
|
|
@@ -101,5 +104,5 @@ export interface UseHintResult {
|
|
|
101
104
|
* };
|
|
102
105
|
* ```
|
|
103
106
|
*/
|
|
104
|
-
export declare function useHint({ networkClient, config, puzzle, userInput, pencilmarks, autoPencilmarks, }: UseHintOptions): UseHintResult;
|
|
107
|
+
export declare function useHint({ networkClient, config, auth, puzzle, userInput, pencilmarks, autoPencilmarks, }: UseHintOptions): UseHintResult;
|
|
105
108
|
//# sourceMappingURL=useHint.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"useHint.d.ts","sourceRoot":"","sources":["../../src/hooks/useHint.ts"],"names":[],"mappings":"AAAA;;;;;;;;;GASG;AAGH,OAAO,
|
|
1
|
+
{"version":3,"file":"useHint.d.ts","sourceRoot":"","sources":["../../src/hooks/useHint.ts"],"names":[],"mappings":"AAAA;;;;;;;;;GASG;AAGH,OAAO,EAKL,KAAK,cAAc,EACnB,KAAK,UAAU,EACf,KAAK,YAAY,EAClB,MAAM,2BAA2B,CAAC;AACnC,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,mBAAmB,CAAC;AAEvD,+CAA+C;AAC/C,MAAM,WAAW,aAAa;IAC5B,qCAAqC;IACrC,IAAI,EAAE,MAAM,CAAC;IACb,2CAA2C;IAC3C,WAAW,EAAE,MAAM,GAAG,IAAI,CAAC;IAC3B,2CAA2C;IAC3C,eAAe,EAAE,OAAO,CAAC;CAC1B;AAED,MAAM,WAAW,cAAc;IAC7B,mCAAmC;IACnC,aAAa,EAAE,aAAa,CAAC;IAC7B,+BAA+B;IAC/B,MAAM,EAAE,YAAY,CAAC;IACrB,mCAAmC;IACnC,IAAI,EAAE,UAAU,CAAC;IACjB,wCAAwC;IACxC,MAAM,EAAE,MAAM,CAAC;IACf,2CAA2C;IAC3C,SAAS,EAAE,MAAM,CAAC;IAClB,qDAAqD;IACrD,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,8CAA8C;IAC9C,eAAe,CAAC,EAAE,OAAO,CAAC;CAC3B;AAED,MAAM,WAAW,aAAa;IAC5B,wCAAwC;IACxC,IAAI,EAAE,cAAc,GAAG,IAAI,CAAC;IAC5B,+DAA+D;IAC/D,KAAK,EAAE,cAAc,EAAE,GAAG,IAAI,CAAC;IAC/B,mCAAmC;IACnC,SAAS,EAAE,MAAM,CAAC;IAClB,4BAA4B;IAC5B,UAAU,EAAE,MAAM,CAAC;IACnB,4CAA4C;IAC5C,SAAS,EAAE,OAAO,CAAC;IACnB,2CAA2C;IAC3C,KAAK,EAAE,MAAM,GAAG,IAAI,CAAC;IACrB,4CAA4C;IAC5C,OAAO,EAAE,MAAM,OAAO,CAAC,IAAI,CAAC,CAAC;IAC7B,2BAA2B;IAC3B,QAAQ,EAAE,MAAM,IAAI,CAAC;IACrB,+BAA+B;IAC/B,YAAY,EAAE,MAAM,IAAI,CAAC;IACzB,sBAAsB;IACtB,SAAS,EAAE,MAAM,IAAI,CAAC;IACtB,uEAAuE;IACvE,SAAS,EAAE,MAAM,aAAa,GAAG,IAAI,CAAC;IACtC,iDAAiD;IACjD,WAAW,EAAE,OAAO,CAAC;IACrB,6CAA6C;IAC7C,eAAe,EAAE,OAAO,CAAC;IACzB,qDAAqD;IACrD,QAAQ,EAAE,OAAO,CAAC;CACnB;AAED;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAsCG;AACH,wBAAgB,OAAO,CAAC,EACtB,aAAa,EACb,MAAM,EACN,IAAI,EACJ,MAAM,EACN,SAAS,EACT,WAAW,EACX,eAAuB,GACxB,EAAE,cAAc,GAAG,aAAa,CAsJhC"}
|
package/dist/hooks/useHint.js
CHANGED
|
@@ -9,7 +9,7 @@
|
|
|
9
9
|
* - getHint() fetches new hints OR advances to next step if hints exist
|
|
10
10
|
*/
|
|
11
11
|
import { useCallback, useRef, useState } from 'react';
|
|
12
|
-
import {
|
|
12
|
+
import { createSudojoClient, } from '@sudobility/sudojo_client';
|
|
13
13
|
/**
|
|
14
14
|
* Hook for getting hints from the solver API
|
|
15
15
|
*
|
|
@@ -26,7 +26,8 @@ import { createSudojoSolverClient, } from '@sudobility/sudojo_client';
|
|
|
26
26
|
* ```tsx
|
|
27
27
|
* const { hint, isLoading, getHint, nextStep, clearHint, applyHint } = useHint({
|
|
28
28
|
* networkClient,
|
|
29
|
-
* config,
|
|
29
|
+
* config: { baseUrl: 'https://api.sudojo.com' },
|
|
30
|
+
* auth: { accessToken: 'user-access-token' },
|
|
30
31
|
* puzzle: originalPuzzle,
|
|
31
32
|
* userInput: currentInput,
|
|
32
33
|
* pencilmarks: currentPencilmarks,
|
|
@@ -48,7 +49,7 @@ import { createSudojoSolverClient, } from '@sudobility/sudojo_client';
|
|
|
48
49
|
* };
|
|
49
50
|
* ```
|
|
50
51
|
*/
|
|
51
|
-
export function useHint({ networkClient, config, puzzle, userInput, pencilmarks, autoPencilmarks = false, }) {
|
|
52
|
+
export function useHint({ networkClient, config, auth, puzzle, userInput, pencilmarks, autoPencilmarks = false, }) {
|
|
52
53
|
const [hints, setHints] = useState(null);
|
|
53
54
|
const [stepIndex, setStepIndex] = useState(0);
|
|
54
55
|
const [isLoading, setIsLoading] = useState(false);
|
|
@@ -71,14 +72,14 @@ export function useHint({ networkClient, config, puzzle, userInput, pencilmarks,
|
|
|
71
72
|
setIsLoading(true);
|
|
72
73
|
setError(null);
|
|
73
74
|
try {
|
|
74
|
-
const client =
|
|
75
|
+
const client = createSudojoClient(networkClient, config);
|
|
75
76
|
const solveOptions = {
|
|
76
77
|
original: puzzle,
|
|
77
78
|
user: userInput,
|
|
78
79
|
autoPencilmarks,
|
|
79
80
|
...(pencilmarks !== undefined && { pencilmarks }),
|
|
80
81
|
};
|
|
81
|
-
const response = await client.
|
|
82
|
+
const response = await client.solverSolve(auth, solveOptions);
|
|
82
83
|
if (response.success && response.data?.hints?.length) {
|
|
83
84
|
setHints(response.data.hints);
|
|
84
85
|
setStepIndex(0);
|
|
@@ -106,7 +107,15 @@ export function useHint({ networkClient, config, puzzle, userInput, pencilmarks,
|
|
|
106
107
|
finally {
|
|
107
108
|
setIsLoading(false);
|
|
108
109
|
}
|
|
109
|
-
}, [
|
|
110
|
+
}, [
|
|
111
|
+
networkClient,
|
|
112
|
+
config,
|
|
113
|
+
auth,
|
|
114
|
+
puzzle,
|
|
115
|
+
userInput,
|
|
116
|
+
pencilmarks,
|
|
117
|
+
autoPencilmarks,
|
|
118
|
+
]);
|
|
110
119
|
// Get hint: fetch if no hints or puzzle changed, otherwise advance
|
|
111
120
|
const getHint = useCallback(async () => {
|
|
112
121
|
const currentPuzzleState = `${puzzle}|${userInput}|${pencilmarks ?? ''}`;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"useHint.js","sourceRoot":"","sources":["../../src/hooks/useHint.ts"],"names":[],"mappings":"AAAA;;;;;;;;;GASG;AAEH,OAAO,EAAE,WAAW,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,OAAO,CAAC;AACtD,OAAO,EAEL,
|
|
1
|
+
{"version":3,"file":"useHint.js","sourceRoot":"","sources":["../../src/hooks/useHint.ts"],"names":[],"mappings":"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"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@sudobility/sudojo_lib",
|
|
3
|
-
"version": "0.0.
|
|
3
|
+
"version": "0.0.5",
|
|
4
4
|
"description": "Business logic library for Sudojo app",
|
|
5
5
|
"type": "module",
|
|
6
6
|
"main": "dist/index.js",
|
|
@@ -39,7 +39,7 @@
|
|
|
39
39
|
"license": "MIT",
|
|
40
40
|
"devDependencies": {
|
|
41
41
|
"@sudobility/di": "^1.5.5",
|
|
42
|
-
"@sudobility/sudojo_client": "^0.0.
|
|
42
|
+
"@sudobility/sudojo_client": "^0.0.8",
|
|
43
43
|
"@sudobility/sudojo_types": "^1.1.2",
|
|
44
44
|
"@sudobility/types": "^1.9.31",
|
|
45
45
|
"@tanstack/react-query": "^5.90.11",
|
|
@@ -63,7 +63,7 @@
|
|
|
63
63
|
},
|
|
64
64
|
"peerDependencies": {
|
|
65
65
|
"@sudobility/di": "^1.5.5",
|
|
66
|
-
"@sudobility/sudojo_client": "^0.0.
|
|
66
|
+
"@sudobility/sudojo_client": "^0.0.8",
|
|
67
67
|
"@sudobility/sudojo_types": "^1.1.2",
|
|
68
68
|
"@sudobility/types": "^1.9.31",
|
|
69
69
|
"@tanstack/react-query": ">=5.0.0",
|