@sudobility/sudojo_client 0.0.79 → 0.0.81

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 (45) hide show
  1. package/dist/errors/hint-access-denied.d.ts.map +1 -1
  2. package/dist/errors/hint-access-denied.js.map +1 -1
  3. package/dist/hooks/index.d.ts +1 -0
  4. package/dist/hooks/index.d.ts.map +1 -1
  5. package/dist/hooks/index.js +1 -0
  6. package/dist/hooks/index.js.map +1 -1
  7. package/dist/hooks/query-config.d.ts.map +1 -1
  8. package/dist/hooks/query-config.js.map +1 -1
  9. package/dist/hooks/query-keys.d.ts.map +1 -1
  10. package/dist/hooks/query-keys.js.map +1 -1
  11. package/dist/hooks/use-sudojo-boards.d.ts.map +1 -1
  12. package/dist/hooks/use-sudojo-boards.js.map +1 -1
  13. package/dist/hooks/use-sudojo-challenges.d.ts.map +1 -1
  14. package/dist/hooks/use-sudojo-challenges.js.map +1 -1
  15. package/dist/hooks/use-sudojo-dailies.d.ts.map +1 -1
  16. package/dist/hooks/use-sudojo-dailies.js.map +1 -1
  17. package/dist/hooks/use-sudojo-gamification.d.ts.map +1 -1
  18. package/dist/hooks/use-sudojo-gamification.js.map +1 -1
  19. package/dist/hooks/use-sudojo-health.d.ts.map +1 -1
  20. package/dist/hooks/use-sudojo-health.js.map +1 -1
  21. package/dist/hooks/use-sudojo-invalidation.d.ts +13 -0
  22. package/dist/hooks/use-sudojo-invalidation.d.ts.map +1 -0
  23. package/dist/hooks/use-sudojo-invalidation.js +69 -0
  24. package/dist/hooks/use-sudojo-invalidation.js.map +1 -0
  25. package/dist/hooks/use-sudojo-learning.d.ts.map +1 -1
  26. package/dist/hooks/use-sudojo-learning.js.map +1 -1
  27. package/dist/hooks/use-sudojo-levels.d.ts.map +1 -1
  28. package/dist/hooks/use-sudojo-levels.js.map +1 -1
  29. package/dist/hooks/use-sudojo-practices.d.ts.map +1 -1
  30. package/dist/hooks/use-sudojo-practices.js.map +1 -1
  31. package/dist/hooks/use-sudojo-techniques.d.ts.map +1 -1
  32. package/dist/hooks/use-sudojo-techniques.js.map +1 -1
  33. package/dist/hooks/use-sudojo-users.d.ts.map +1 -1
  34. package/dist/hooks/use-sudojo-users.js.map +1 -1
  35. package/dist/index.d.ts +1 -1
  36. package/dist/index.d.ts.map +1 -1
  37. package/dist/index.js +1 -1
  38. package/dist/index.js.map +1 -1
  39. package/dist/network/sudojo-client.d.ts.map +1 -1
  40. package/dist/network/sudojo-client.js.map +1 -1
  41. package/dist/solver/hooks/query-config.d.ts.map +1 -1
  42. package/dist/solver/hooks/query-config.js.map +1 -1
  43. package/dist/solver/hooks/query-keys.d.ts.map +1 -1
  44. package/dist/solver/hooks/query-keys.js.map +1 -1
  45. package/package.json +9 -8
@@ -0,0 +1 @@
1
+ {"version":3,"file":"use-sudojo-invalidation.js","sourceRoot":"","sources":["../../src/hooks/use-sudojo-invalidation.ts"],"names":[],"mappings":"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","sourcesContent":["/**\n * Query invalidation utility hook for Sudojo API queries.\n *\n * Provides helper functions for common cache invalidation patterns.\n * Use this when you need to programmatically invalidate queries outside\n * of the built-in mutation `onSuccess` callbacks.\n *\n * ## When to Use\n *\n * - After a custom operation that affects cached data\n * - When you need to force-refresh specific resource types\n * - For bulk invalidation across resource categories\n *\n * ## Built-in Invalidation\n *\n * All mutation hooks (create/update/delete) already handle invalidation\n * automatically in their `onSuccess` callbacks. You only need this hook\n * for cases not covered by the built-in behavior.\n *\n * @example\n * ```tsx\n * function AdminPanel() {\n * const { invalidateAll, invalidateBoards, invalidateDailies } = useSudojoInvalidation();\n *\n * const handleBulkImport = async () => {\n * await performBulkImport();\n * // Invalidate all board and daily queries after import\n * invalidateBoards();\n * invalidateDailies();\n * };\n * }\n * ```\n */\n\nimport { useCallback } from \"react\";\nimport { useQueryClient } from \"@tanstack/react-query\";\nimport { queryKeys } from \"./query-keys\";\n\n/**\n * Hook that provides helper functions for common Sudojo query invalidation patterns.\n *\n * Each function invalidates all queries that start with the corresponding resource\n * key prefix, covering list queries, detail queries, random queries, and filtered\n * variants.\n *\n * @returns An object with invalidation functions for each resource type\n */\nexport const useSudojoInvalidation = () => {\n const queryClient = useQueryClient();\n\n /** Invalidate ALL Sudojo queries (nuclear option). */\n const invalidateAll = useCallback(() => {\n return queryClient.invalidateQueries({\n queryKey: queryKeys.sudojo.all(),\n });\n }, [queryClient]);\n\n /** Invalidate all level queries (list + individual levels). */\n const invalidateLevels = useCallback(() => {\n return queryClient.invalidateQueries({\n queryKey: [...queryKeys.sudojo.all(), \"levels\"],\n });\n }, [queryClient]);\n\n /** Invalidate all technique queries (list + individual + filtered). */\n const invalidateTechniques = useCallback(() => {\n return queryClient.invalidateQueries({\n queryKey: [...queryKeys.sudojo.all(), \"techniques\"],\n });\n }, [queryClient]);\n\n /** Invalidate all learning queries (list + individual + filtered). */\n const invalidateLearning = useCallback(() => {\n return queryClient.invalidateQueries({\n queryKey: [...queryKeys.sudojo.all(), \"learning\"],\n });\n }, [queryClient]);\n\n /** Invalidate all board queries (list + random + individual + filtered). */\n const invalidateBoards = useCallback(() => {\n return queryClient.invalidateQueries({\n queryKey: [...queryKeys.sudojo.all(), \"boards\"],\n });\n }, [queryClient]);\n\n /** Invalidate all daily queries (list + random + today + by-date + individual). */\n const invalidateDailies = useCallback(() => {\n return queryClient.invalidateQueries({\n queryKey: [...queryKeys.sudojo.all(), \"dailies\"],\n });\n }, [queryClient]);\n\n /** Invalidate all challenge queries (list + random + individual + filtered). */\n const invalidateChallenges = useCallback(() => {\n return queryClient.invalidateQueries({\n queryKey: [...queryKeys.sudojo.all(), \"challenges\"],\n });\n }, [queryClient]);\n\n /** Invalidate all user queries (info + subscription) for all users. */\n const invalidateUsers = useCallback(() => {\n return queryClient.invalidateQueries({\n queryKey: [...queryKeys.sudojo.all(), \"users\"],\n });\n }, [queryClient]);\n\n /** Invalidate all practice queries (counts + random). */\n const invalidatePractices = useCallback(() => {\n return queryClient.invalidateQueries({\n queryKey: [...queryKeys.sudojo.all(), \"practices\"],\n });\n }, [queryClient]);\n\n /** Invalidate all gamification queries (stats + badges + history). */\n const invalidateGamification = useCallback(() => {\n return queryClient.invalidateQueries({\n queryKey: [...queryKeys.sudojo.all(), \"gamification\"],\n });\n }, [queryClient]);\n\n return {\n invalidateAll,\n invalidateLevels,\n invalidateTechniques,\n invalidateLearning,\n invalidateBoards,\n invalidateDailies,\n invalidateChallenges,\n invalidateUsers,\n invalidatePractices,\n invalidateGamification,\n };\n};\n"]}
@@ -1 +1 @@
1
- {"version":3,"file":"use-sudojo-learning.d.ts","sourceRoot":"","sources":["../../src/hooks/use-sudojo-learning.ts"],"names":[],"mappings":"AAKA,OAAO,EAEL,iBAAiB,EAGjB,eAAe,EACf,cAAc,EACf,MAAM,uBAAuB,CAAC;AAC/B,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,mBAAmB,CAAC;AACvD,OAAO,KAAK,EACV,YAAY,EACZ,QAAQ,EACR,qBAAqB,EACrB,mBAAmB,EACnB,qBAAqB,EACtB,MAAM,0BAA0B,CAAC;AAQlC,eAAO,MAAM,iBAAiB,GAC5B,eAAe,aAAa,EAC5B,SAAS,MAAM,EACf,OAAO,MAAM,EACb,cAAc,mBAAmB,EACjC,UAAU,IAAI,CACZ,eAAe,CAAC,YAAY,CAAC,QAAQ,EAAE,CAAC,CAAC,EACzC,UAAU,GAAG,SAAS,CACvB,KACA,cAAc,CAAC,YAAY,CAAC,QAAQ,EAAE,CAAC,CAuBzC,CAAC;AAKF,eAAO,MAAM,qBAAqB,GAChC,eAAe,aAAa,EAC5B,SAAS,MAAM,EACf,OAAO,MAAM,EACb,MAAM,MAAM,EACZ,UAAU,IAAI,CACZ,eAAe,CAAC,YAAY,CAAC,QAAQ,CAAC,CAAC,EACvC,UAAU,GAAG,SAAS,CACvB,KACA,cAAc,CAAC,YAAY,CAAC,QAAQ,CAAC,CAqBvC,CAAC;AAKF,eAAO,MAAM,uBAAuB,GAClC,eAAe,aAAa,EAC5B,SAAS,MAAM,KACd,iBAAiB,CAClB,YAAY,CAAC,QAAQ,CAAC,EACtB,KAAK,EACL;IAAE,KAAK,EAAE,MAAM,CAAC;IAAC,IAAI,EAAE,qBAAqB,CAAA;CAAE,CAwB/C,CAAC;AAKF,eAAO,MAAM,uBAAuB,GAClC,eAAe,aAAa,EAC5B,SAAS,MAAM,KACd,iBAAiB,CAClB,YAAY,CAAC,QAAQ,CAAC,EACtB,KAAK,EACL;IAAE,KAAK,EAAE,MAAM,CAAC;IAAC,IAAI,EAAE,MAAM,CAAC;IAAC,IAAI,EAAE,qBAAqB,CAAA;CAAE,CA6B7D,CAAC;AAKF,eAAO,MAAM,uBAAuB,GAClC,eAAe,aAAa,EAC5B,SAAS,MAAM,KACd,iBAAiB,CAClB,YAAY,CAAC,QAAQ,CAAC,EACtB,KAAK,EACL;IAAE,KAAK,EAAE,MAAM,CAAC;IAAC,IAAI,EAAE,MAAM,CAAA;CAAE,CAqBhC,CAAC"}
1
+ {"version":3,"file":"use-sudojo-learning.d.ts","sourceRoot":"","sources":["../../src/hooks/use-sudojo-learning.ts"],"names":[],"mappings":"AAKA,OAAO,EAEL,iBAAiB,EAGjB,eAAe,EACf,cAAc,EACf,MAAM,uBAAuB,CAAC;AAC/B,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,mBAAmB,CAAC;AACvD,OAAO,KAAK,EACV,YAAY,EACZ,QAAQ,EACR,qBAAqB,EACrB,mBAAmB,EACnB,qBAAqB,EACtB,MAAM,0BAA0B,CAAC;AAoBlC,eAAO,MAAM,iBAAiB,GAC5B,eAAe,aAAa,EAC5B,SAAS,MAAM,EACf,OAAO,MAAM,EACb,cAAc,mBAAmB,EACjC,UAAU,IAAI,CACZ,eAAe,CAAC,YAAY,CAAC,QAAQ,EAAE,CAAC,CAAC,EACzC,UAAU,GAAG,SAAS,CACvB,KACA,cAAc,CAAC,YAAY,CAAC,QAAQ,EAAE,CAAC,CAuBzC,CAAC;AAgBF,eAAO,MAAM,qBAAqB,GAChC,eAAe,aAAa,EAC5B,SAAS,MAAM,EACf,OAAO,MAAM,EACb,MAAM,MAAM,EACZ,UAAU,IAAI,CACZ,eAAe,CAAC,YAAY,CAAC,QAAQ,CAAC,CAAC,EACvC,UAAU,GAAG,SAAS,CACvB,KACA,cAAc,CAAC,YAAY,CAAC,QAAQ,CAAC,CAqBvC,CAAC;AAWF,eAAO,MAAM,uBAAuB,GAClC,eAAe,aAAa,EAC5B,SAAS,MAAM,KACd,iBAAiB,CAClB,YAAY,CAAC,QAAQ,CAAC,EACtB,KAAK,EACL;IAAE,KAAK,EAAE,MAAM,CAAC;IAAC,IAAI,EAAE,qBAAqB,CAAA;CAAE,CAwB/C,CAAC;AAWF,eAAO,MAAM,uBAAuB,GAClC,eAAe,aAAa,EAC5B,SAAS,MAAM,KACd,iBAAiB,CAClB,YAAY,CAAC,QAAQ,CAAC,EACtB,KAAK,EACL;IAAE,KAAK,EAAE,MAAM,CAAC;IAAC,IAAI,EAAE,MAAM,CAAC;IAAC,IAAI,EAAE,qBAAqB,CAAA;CAAE,CA6B7D,CAAC;AAYF,eAAO,MAAM,uBAAuB,GAClC,eAAe,aAAa,EAC5B,SAAS,MAAM,KACd,iBAAiB,CAClB,YAAY,CAAC,QAAQ,CAAC,EACtB,KAAK,EACL;IAAE,KAAK,EAAE,MAAM,CAAC;IAAC,IAAI,EAAE,MAAM,CAAA;CAAE,CAqBhC,CAAC"}
@@ -1 +1 @@
1
- {"version":3,"file":"use-sudojo-learning.js","sourceRoot":"","sources":["../../src/hooks/use-sudojo-learning.ts"],"names":[],"mappings":"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","sourcesContent":["/**\n * Hook for Sudojo learning endpoints\n */\n\nimport { useCallback, useMemo } from \"react\";\nimport {\n useMutation,\n UseMutationResult,\n useQuery,\n useQueryClient,\n UseQueryOptions,\n UseQueryResult,\n} from \"@tanstack/react-query\";\nimport type { NetworkClient } from \"@sudobility/types\";\nimport type {\n BaseResponse,\n Learning,\n LearningCreateRequest,\n LearningQueryParams,\n LearningUpdateRequest,\n} from \"@sudobility/sudojo_types\";\nimport { queryKeys } from \"./query-keys\";\nimport { STALE_TIMES } from \"./query-config\";\nimport { SudojoClient } from \"../network/sudojo-client\";\n\n/**\n * Hook to get all learning entries with optional filtering\n */\nexport const useSudojoLearning = (\n networkClient: NetworkClient,\n baseUrl: string,\n token: string,\n queryParams?: LearningQueryParams,\n options?: Omit<\n UseQueryOptions<BaseResponse<Learning[]>>,\n \"queryKey\" | \"queryFn\"\n >,\n): UseQueryResult<BaseResponse<Learning[]>> => {\n const client = useMemo(\n () => new SudojoClient(networkClient, baseUrl),\n [networkClient, baseUrl],\n );\n\n const queryFn = useCallback(async (): Promise<BaseResponse<Learning[]>> => {\n return client.getLearning(token, queryParams);\n }, [client, token, queryParams]);\n\n // Public endpoint - no token required\n const isEnabled = options?.enabled !== undefined ? options.enabled : true;\n\n return useQuery({\n queryKey: queryKeys.sudojo.learning({\n technique: queryParams?.technique ?? undefined,\n language_code: queryParams?.language_code ?? undefined,\n }),\n queryFn,\n staleTime: STALE_TIMES.LEARNING,\n ...options,\n enabled: isEnabled,\n });\n};\n\n/**\n * Hook to get a specific learning item by UUID\n */\nexport const useSudojoLearningItem = (\n networkClient: NetworkClient,\n baseUrl: string,\n token: string,\n uuid: string,\n options?: Omit<\n UseQueryOptions<BaseResponse<Learning>>,\n \"queryKey\" | \"queryFn\"\n >,\n): UseQueryResult<BaseResponse<Learning>> => {\n const client = useMemo(\n () => new SudojoClient(networkClient, baseUrl),\n [networkClient, baseUrl],\n );\n\n const queryFn = useCallback(async (): Promise<BaseResponse<Learning>> => {\n return client.getLearningItem(token, uuid);\n }, [client, token, uuid]);\n\n // Public endpoint - no token required, but uuid is required\n const isEnabled =\n !!uuid && (options?.enabled !== undefined ? options.enabled : true);\n\n return useQuery({\n queryKey: queryKeys.sudojo.learningItem(uuid),\n queryFn,\n staleTime: STALE_TIMES.LEARNING,\n ...options,\n enabled: isEnabled,\n });\n};\n\n/**\n * Hook to create a learning entry\n */\nexport const useSudojoCreateLearning = (\n networkClient: NetworkClient,\n baseUrl: string,\n): UseMutationResult<\n BaseResponse<Learning>,\n Error,\n { token: string; data: LearningCreateRequest }\n> => {\n const client = useMemo(\n () => new SudojoClient(networkClient, baseUrl),\n [networkClient, baseUrl],\n );\n const queryClient = useQueryClient();\n\n return useMutation({\n mutationFn: async ({\n token,\n data,\n }: {\n token: string;\n data: LearningCreateRequest;\n }) => {\n return client.createLearning(token, data);\n },\n onSuccess: () => {\n queryClient.invalidateQueries({\n queryKey: [...queryKeys.sudojo.all(), \"learning\"],\n });\n },\n });\n};\n\n/**\n * Hook to update a learning entry\n */\nexport const useSudojoUpdateLearning = (\n networkClient: NetworkClient,\n baseUrl: string,\n): UseMutationResult<\n BaseResponse<Learning>,\n Error,\n { token: string; uuid: string; data: LearningUpdateRequest }\n> => {\n const client = useMemo(\n () => new SudojoClient(networkClient, baseUrl),\n [networkClient, baseUrl],\n );\n const queryClient = useQueryClient();\n\n return useMutation({\n mutationFn: async ({\n token,\n uuid,\n data,\n }: {\n token: string;\n uuid: string;\n data: LearningUpdateRequest;\n }) => {\n return client.updateLearning(token, uuid, data);\n },\n onSuccess: (_data, variables) => {\n queryClient.invalidateQueries({\n queryKey: [...queryKeys.sudojo.all(), \"learning\"],\n });\n queryClient.invalidateQueries({\n queryKey: queryKeys.sudojo.learningItem(variables.uuid),\n });\n },\n });\n};\n\n/**\n * Hook to delete a learning entry\n */\nexport const useSudojoDeleteLearning = (\n networkClient: NetworkClient,\n baseUrl: string,\n): UseMutationResult<\n BaseResponse<Learning>,\n Error,\n { token: string; uuid: string }\n> => {\n const client = useMemo(\n () => new SudojoClient(networkClient, baseUrl),\n [networkClient, baseUrl],\n );\n const queryClient = useQueryClient();\n\n return useMutation({\n mutationFn: async ({ token, uuid }: { token: string; uuid: string }) => {\n return client.deleteLearning(token, uuid);\n },\n onSuccess: (_data, variables) => {\n queryClient.invalidateQueries({\n queryKey: [...queryKeys.sudojo.all(), \"learning\"],\n });\n queryClient.removeQueries({\n queryKey: queryKeys.sudojo.learningItem(variables.uuid),\n });\n },\n });\n};\n"]}
1
+ {"version":3,"file":"use-sudojo-learning.js","sourceRoot":"","sources":["../../src/hooks/use-sudojo-learning.ts"],"names":[],"mappings":"AAIA,OAAO,EAAE,WAAW,EAAE,OAAO,EAAE,MAAM,OAAO,CAAC;AAC7C,OAAO,EACL,WAAW,EAEX,QAAQ,EACR,cAAc,GAGf,MAAM,uBAAuB,CAAC;AAS/B,OAAO,EAAE,SAAS,EAAE,MAAM,cAAc,CAAC;AACzC,OAAO,EAAE,WAAW,EAAE,MAAM,gBAAgB,CAAC;AAC7C,OAAO,EAAE,YAAY,EAAE,MAAM,0BAA0B,CAAC;AAiBxD,MAAM,CAAC,MAAM,iBAAiB,GAAG,CAC/B,aAA4B,EAC5B,OAAe,EACf,KAAa,EACb,WAAiC,EACjC,OAGC,EACyC,EAAE;IAC5C,MAAM,MAAM,GAAG,OAAO,CACpB,GAAG,EAAE,CAAC,IAAI,YAAY,CAAC,aAAa,EAAE,OAAO,CAAC,EAC9C,CAAC,aAAa,EAAE,OAAO,CAAC,CACzB,CAAC;IAEF,MAAM,OAAO,GAAG,WAAW,CAAC,KAAK,IAAuC,EAAE;QACxE,OAAO,MAAM,CAAC,WAAW,CAAC,KAAK,EAAE,WAAW,CAAC,CAAC;IAChD,CAAC,EAAE,CAAC,MAAM,EAAE,KAAK,EAAE,WAAW,CAAC,CAAC,CAAC;IAGjC,MAAM,SAAS,GAAG,OAAO,EAAE,OAAO,KAAK,SAAS,CAAC,CAAC,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC,CAAC,IAAI,CAAC;IAE1E,OAAO,QAAQ,CAAC;QACd,QAAQ,EAAE,SAAS,CAAC,MAAM,CAAC,QAAQ,CAAC;YAClC,SAAS,EAAE,WAAW,EAAE,SAAS,IAAI,SAAS;YAC9C,aAAa,EAAE,WAAW,EAAE,aAAa,IAAI,SAAS;SACvD,CAAC;QACF,OAAO;QACP,SAAS,EAAE,WAAW,CAAC,QAAQ;QAC/B,GAAG,OAAO;QACV,OAAO,EAAE,SAAS;KACnB,CAAC,CAAC;AACL,CAAC,CAAC;AAgBF,MAAM,CAAC,MAAM,qBAAqB,GAAG,CACnC,aAA4B,EAC5B,OAAe,EACf,KAAa,EACb,IAAY,EACZ,OAGC,EACuC,EAAE;IAC1C,MAAM,MAAM,GAAG,OAAO,CACpB,GAAG,EAAE,CAAC,IAAI,YAAY,CAAC,aAAa,EAAE,OAAO,CAAC,EAC9C,CAAC,aAAa,EAAE,OAAO,CAAC,CACzB,CAAC;IAEF,MAAM,OAAO,GAAG,WAAW,CAAC,KAAK,IAAqC,EAAE;QACtE,OAAO,MAAM,CAAC,eAAe,CAAC,KAAK,EAAE,IAAI,CAAC,CAAC;IAC7C,CAAC,EAAE,CAAC,MAAM,EAAE,KAAK,EAAE,IAAI,CAAC,CAAC,CAAC;IAG1B,MAAM,SAAS,GACb,CAAC,CAAC,IAAI,IAAI,CAAC,OAAO,EAAE,OAAO,KAAK,SAAS,CAAC,CAAC,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC;IAEtE,OAAO,QAAQ,CAAC;QACd,QAAQ,EAAE,SAAS,CAAC,MAAM,CAAC,YAAY,CAAC,IAAI,CAAC;QAC7C,OAAO;QACP,SAAS,EAAE,WAAW,CAAC,QAAQ;QAC/B,GAAG,OAAO;QACV,OAAO,EAAE,SAAS;KACnB,CAAC,CAAC;AACL,CAAC,CAAC;AAWF,MAAM,CAAC,MAAM,uBAAuB,GAAG,CACrC,aAA4B,EAC5B,OAAe,EAKf,EAAE;IACF,MAAM,MAAM,GAAG,OAAO,CACpB,GAAG,EAAE,CAAC,IAAI,YAAY,CAAC,aAAa,EAAE,OAAO,CAAC,EAC9C,CAAC,aAAa,EAAE,OAAO,CAAC,CACzB,CAAC;IACF,MAAM,WAAW,GAAG,cAAc,EAAE,CAAC;IAErC,OAAO,WAAW,CAAC;QACjB,UAAU,EAAE,KAAK,EAAE,EACjB,KAAK,EACL,IAAI,GAIL,EAAE,EAAE;YACH,OAAO,MAAM,CAAC,cAAc,CAAC,KAAK,EAAE,IAAI,CAAC,CAAC;QAC5C,CAAC;QACD,SAAS,EAAE,GAAG,EAAE;YACd,WAAW,CAAC,iBAAiB,CAAC;gBAC5B,QAAQ,EAAE,CAAC,GAAG,SAAS,CAAC,MAAM,CAAC,GAAG,EAAE,EAAE,UAAU,CAAC;aAClD,CAAC,CAAC;QACL,CAAC;KACF,CAAC,CAAC;AACL,CAAC,CAAC;AAWF,MAAM,CAAC,MAAM,uBAAuB,GAAG,CACrC,aAA4B,EAC5B,OAAe,EAKf,EAAE;IACF,MAAM,MAAM,GAAG,OAAO,CACpB,GAAG,EAAE,CAAC,IAAI,YAAY,CAAC,aAAa,EAAE,OAAO,CAAC,EAC9C,CAAC,aAAa,EAAE,OAAO,CAAC,CACzB,CAAC;IACF,MAAM,WAAW,GAAG,cAAc,EAAE,CAAC;IAErC,OAAO,WAAW,CAAC;QACjB,UAAU,EAAE,KAAK,EAAE,EACjB,KAAK,EACL,IAAI,EACJ,IAAI,GAKL,EAAE,EAAE;YACH,OAAO,MAAM,CAAC,cAAc,CAAC,KAAK,EAAE,IAAI,EAAE,IAAI,CAAC,CAAC;QAClD,CAAC;QACD,SAAS,EAAE,CAAC,KAAK,EAAE,SAAS,EAAE,EAAE;YAC9B,WAAW,CAAC,iBAAiB,CAAC;gBAC5B,QAAQ,EAAE,CAAC,GAAG,SAAS,CAAC,MAAM,CAAC,GAAG,EAAE,EAAE,UAAU,CAAC;aAClD,CAAC,CAAC;YACH,WAAW,CAAC,iBAAiB,CAAC;gBAC5B,QAAQ,EAAE,SAAS,CAAC,MAAM,CAAC,YAAY,CAAC,SAAS,CAAC,IAAI,CAAC;aACxD,CAAC,CAAC;QACL,CAAC;KACF,CAAC,CAAC;AACL,CAAC,CAAC;AAYF,MAAM,CAAC,MAAM,uBAAuB,GAAG,CACrC,aAA4B,EAC5B,OAAe,EAKf,EAAE;IACF,MAAM,MAAM,GAAG,OAAO,CACpB,GAAG,EAAE,CAAC,IAAI,YAAY,CAAC,aAAa,EAAE,OAAO,CAAC,EAC9C,CAAC,aAAa,EAAE,OAAO,CAAC,CACzB,CAAC;IACF,MAAM,WAAW,GAAG,cAAc,EAAE,CAAC;IAErC,OAAO,WAAW,CAAC;QACjB,UAAU,EAAE,KAAK,EAAE,EAAE,KAAK,EAAE,IAAI,EAAmC,EAAE,EAAE;YACrE,OAAO,MAAM,CAAC,cAAc,CAAC,KAAK,EAAE,IAAI,CAAC,CAAC;QAC5C,CAAC;QACD,SAAS,EAAE,CAAC,KAAK,EAAE,SAAS,EAAE,EAAE;YAC9B,WAAW,CAAC,iBAAiB,CAAC;gBAC5B,QAAQ,EAAE,CAAC,GAAG,SAAS,CAAC,MAAM,CAAC,GAAG,EAAE,EAAE,UAAU,CAAC;aAClD,CAAC,CAAC;YACH,WAAW,CAAC,aAAa,CAAC;gBACxB,QAAQ,EAAE,SAAS,CAAC,MAAM,CAAC,YAAY,CAAC,SAAS,CAAC,IAAI,CAAC;aACxD,CAAC,CAAC;QACL,CAAC;KACF,CAAC,CAAC;AACL,CAAC,CAAC","sourcesContent":["/**\n * Hook for Sudojo learning endpoints\n */\n\nimport { useCallback, useMemo } from \"react\";\nimport {\n useMutation,\n UseMutationResult,\n useQuery,\n useQueryClient,\n UseQueryOptions,\n UseQueryResult,\n} from \"@tanstack/react-query\";\nimport type { NetworkClient } from \"@sudobility/types\";\nimport type {\n BaseResponse,\n Learning,\n LearningCreateRequest,\n LearningQueryParams,\n LearningUpdateRequest,\n} from \"@sudobility/sudojo_types\";\nimport { queryKeys } from \"./query-keys\";\nimport { STALE_TIMES } from \"./query-config\";\nimport { SudojoClient } from \"../network/sudojo-client\";\n\n/**\n * Hook to fetch all learning entries, optionally filtered by technique and/or language.\n *\n * Learning entries contain educational content that teaches users about specific\n * Sudoku solving techniques. This is a public endpoint.\n *\n * Stale time: {@link STALE_TIMES.LEARNING} (10 minutes) since learning content rarely changes.\n *\n * @param networkClient - Network client for making HTTP requests\n * @param baseUrl - Base URL of the Sudojo API\n * @param token - Firebase access token (optional for this public endpoint)\n * @param queryParams - Optional filter parameters (e.g., `{ technique: 1, language_code: \"en\" }`)\n * @param options - Additional TanStack Query options\n * @returns A UseQueryResult containing an array of Learning objects\n */\nexport const useSudojoLearning = (\n networkClient: NetworkClient,\n baseUrl: string,\n token: string,\n queryParams?: LearningQueryParams,\n options?: Omit<\n UseQueryOptions<BaseResponse<Learning[]>>,\n \"queryKey\" | \"queryFn\"\n >,\n): UseQueryResult<BaseResponse<Learning[]>> => {\n const client = useMemo(\n () => new SudojoClient(networkClient, baseUrl),\n [networkClient, baseUrl],\n );\n\n const queryFn = useCallback(async (): Promise<BaseResponse<Learning[]>> => {\n return client.getLearning(token, queryParams);\n }, [client, token, queryParams]);\n\n // Public endpoint - no token required\n const isEnabled = options?.enabled !== undefined ? options.enabled : true;\n\n return useQuery({\n queryKey: queryKeys.sudojo.learning({\n technique: queryParams?.technique ?? undefined,\n language_code: queryParams?.language_code ?? undefined,\n }),\n queryFn,\n staleTime: STALE_TIMES.LEARNING,\n ...options,\n enabled: isEnabled,\n });\n};\n\n/**\n * Hook to fetch a specific learning item by its UUID.\n *\n * The query is automatically disabled when no UUID is provided.\n *\n * Stale time: {@link STALE_TIMES.LEARNING} (10 minutes).\n *\n * @param networkClient - Network client for making HTTP requests\n * @param baseUrl - Base URL of the Sudojo API\n * @param token - Firebase access token\n * @param uuid - Learning item UUID. Query is disabled if empty.\n * @param options - Additional TanStack Query options\n * @returns A UseQueryResult containing a single Learning object\n */\nexport const useSudojoLearningItem = (\n networkClient: NetworkClient,\n baseUrl: string,\n token: string,\n uuid: string,\n options?: Omit<\n UseQueryOptions<BaseResponse<Learning>>,\n \"queryKey\" | \"queryFn\"\n >,\n): UseQueryResult<BaseResponse<Learning>> => {\n const client = useMemo(\n () => new SudojoClient(networkClient, baseUrl),\n [networkClient, baseUrl],\n );\n\n const queryFn = useCallback(async (): Promise<BaseResponse<Learning>> => {\n return client.getLearningItem(token, uuid);\n }, [client, token, uuid]);\n\n // Public endpoint - no token required, but uuid is required\n const isEnabled =\n !!uuid && (options?.enabled !== undefined ? options.enabled : true);\n\n return useQuery({\n queryKey: queryKeys.sudojo.learningItem(uuid),\n queryFn,\n staleTime: STALE_TIMES.LEARNING,\n ...options,\n enabled: isEnabled,\n });\n};\n\n/**\n * Hook to create a new learning entry. Requires admin authentication.\n *\n * On success, invalidates all learning list queries.\n *\n * @param networkClient - Network client for making HTTP requests\n * @param baseUrl - Base URL of the Sudojo API\n * @returns A UseMutationResult. Call `mutate({ token, data })` to execute.\n */\nexport const useSudojoCreateLearning = (\n networkClient: NetworkClient,\n baseUrl: string,\n): UseMutationResult<\n BaseResponse<Learning>,\n Error,\n { token: string; data: LearningCreateRequest }\n> => {\n const client = useMemo(\n () => new SudojoClient(networkClient, baseUrl),\n [networkClient, baseUrl],\n );\n const queryClient = useQueryClient();\n\n return useMutation({\n mutationFn: async ({\n token,\n data,\n }: {\n token: string;\n data: LearningCreateRequest;\n }) => {\n return client.createLearning(token, data);\n },\n onSuccess: () => {\n queryClient.invalidateQueries({\n queryKey: [...queryKeys.sudojo.all(), \"learning\"],\n });\n },\n });\n};\n\n/**\n * Hook to update an existing learning entry. Requires admin authentication.\n *\n * On success, invalidates all learning list queries and the specific learning item query.\n *\n * @param networkClient - Network client for making HTTP requests\n * @param baseUrl - Base URL of the Sudojo API\n * @returns A UseMutationResult. Call `mutate({ token, uuid, data })` to execute.\n */\nexport const useSudojoUpdateLearning = (\n networkClient: NetworkClient,\n baseUrl: string,\n): UseMutationResult<\n BaseResponse<Learning>,\n Error,\n { token: string; uuid: string; data: LearningUpdateRequest }\n> => {\n const client = useMemo(\n () => new SudojoClient(networkClient, baseUrl),\n [networkClient, baseUrl],\n );\n const queryClient = useQueryClient();\n\n return useMutation({\n mutationFn: async ({\n token,\n uuid,\n data,\n }: {\n token: string;\n uuid: string;\n data: LearningUpdateRequest;\n }) => {\n return client.updateLearning(token, uuid, data);\n },\n onSuccess: (_data, variables) => {\n queryClient.invalidateQueries({\n queryKey: [...queryKeys.sudojo.all(), \"learning\"],\n });\n queryClient.invalidateQueries({\n queryKey: queryKeys.sudojo.learningItem(variables.uuid),\n });\n },\n });\n};\n\n/**\n * Hook to delete a learning entry. Requires admin authentication.\n *\n * On success, invalidates all learning list queries and removes the specific\n * learning item from the query cache.\n *\n * @param networkClient - Network client for making HTTP requests\n * @param baseUrl - Base URL of the Sudojo API\n * @returns A UseMutationResult. Call `mutate({ token, uuid })` to execute.\n */\nexport const useSudojoDeleteLearning = (\n networkClient: NetworkClient,\n baseUrl: string,\n): UseMutationResult<\n BaseResponse<Learning>,\n Error,\n { token: string; uuid: string }\n> => {\n const client = useMemo(\n () => new SudojoClient(networkClient, baseUrl),\n [networkClient, baseUrl],\n );\n const queryClient = useQueryClient();\n\n return useMutation({\n mutationFn: async ({ token, uuid }: { token: string; uuid: string }) => {\n return client.deleteLearning(token, uuid);\n },\n onSuccess: (_data, variables) => {\n queryClient.invalidateQueries({\n queryKey: [...queryKeys.sudojo.all(), \"learning\"],\n });\n queryClient.removeQueries({\n queryKey: queryKeys.sudojo.learningItem(variables.uuid),\n });\n },\n });\n};\n"]}
@@ -1 +1 @@
1
- {"version":3,"file":"use-sudojo-levels.d.ts","sourceRoot":"","sources":["../../src/hooks/use-sudojo-levels.ts"],"names":[],"mappings":"AAKA,OAAO,EAEL,iBAAiB,EAGjB,eAAe,EACf,cAAc,EACf,MAAM,uBAAuB,CAAC;AAC/B,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,mBAAmB,CAAC;AACvD,OAAO,KAAK,EACV,YAAY,EACZ,KAAK,EACL,kBAAkB,EAClB,kBAAkB,EACnB,MAAM,0BAA0B,CAAC;AAQlC,eAAO,MAAM,eAAe,GAC1B,eAAe,aAAa,EAC5B,SAAS,MAAM,EACf,OAAO,MAAM,EACb,UAAU,IAAI,CACZ,eAAe,CAAC,YAAY,CAAC,KAAK,EAAE,CAAC,CAAC,EACtC,UAAU,GAAG,SAAS,CACvB,KACA,cAAc,CAAC,YAAY,CAAC,KAAK,EAAE,CAAC,CAoBtC,CAAC;AAKF,eAAO,MAAM,cAAc,GACzB,eAAe,aAAa,EAC5B,SAAS,MAAM,EACf,OAAO,MAAM,EACb,OAAO,MAAM,EACb,UAAU,IAAI,CAAC,eAAe,CAAC,YAAY,CAAC,KAAK,CAAC,CAAC,EAAE,UAAU,GAAG,SAAS,CAAC,KAC3E,cAAc,CAAC,YAAY,CAAC,KAAK,CAAC,CAuBpC,CAAC;AAKF,eAAO,MAAM,oBAAoB,GAC/B,eAAe,aAAa,EAC5B,SAAS,MAAM,KACd,iBAAiB,CAClB,YAAY,CAAC,KAAK,CAAC,EACnB,KAAK,EACL;IAAE,KAAK,EAAE,MAAM,CAAC;IAAC,IAAI,EAAE,kBAAkB,CAAA;CAAE,CAsB5C,CAAC;AAKF,eAAO,MAAM,oBAAoB,GAC/B,eAAe,aAAa,EAC5B,SAAS,MAAM,KACd,iBAAiB,CAClB,YAAY,CAAC,KAAK,CAAC,EACnB,KAAK,EACL;IAAE,KAAK,EAAE,MAAM,CAAC;IAAC,KAAK,EAAE,MAAM,CAAC;IAAC,IAAI,EAAE,kBAAkB,CAAA;CAAE,CA2B3D,CAAC;AAKF,eAAO,MAAM,oBAAoB,GAC/B,eAAe,aAAa,EAC5B,SAAS,MAAM,KACd,iBAAiB,CAClB,YAAY,CAAC,KAAK,CAAC,EACnB,KAAK,EACL;IAAE,KAAK,EAAE,MAAM,CAAC;IAAC,KAAK,EAAE,MAAM,CAAA;CAAE,CAmBjC,CAAC"}
1
+ {"version":3,"file":"use-sudojo-levels.d.ts","sourceRoot":"","sources":["../../src/hooks/use-sudojo-levels.ts"],"names":[],"mappings":"AAKA,OAAO,EAEL,iBAAiB,EAGjB,eAAe,EACf,cAAc,EACf,MAAM,uBAAuB,CAAC;AAC/B,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,mBAAmB,CAAC;AACvD,OAAO,KAAK,EACV,YAAY,EACZ,KAAK,EACL,kBAAkB,EAClB,kBAAkB,EACnB,MAAM,0BAA0B,CAAC;AAyBlC,eAAO,MAAM,eAAe,GAC1B,eAAe,aAAa,EAC5B,SAAS,MAAM,EACf,OAAO,MAAM,EACb,UAAU,IAAI,CACZ,eAAe,CAAC,YAAY,CAAC,KAAK,EAAE,CAAC,CAAC,EACtC,UAAU,GAAG,SAAS,CACvB,KACA,cAAc,CAAC,YAAY,CAAC,KAAK,EAAE,CAAC,CAoBtC,CAAC;AAiBF,eAAO,MAAM,cAAc,GACzB,eAAe,aAAa,EAC5B,SAAS,MAAM,EACf,OAAO,MAAM,EACb,OAAO,MAAM,EACb,UAAU,IAAI,CAAC,eAAe,CAAC,YAAY,CAAC,KAAK,CAAC,CAAC,EAAE,UAAU,GAAG,SAAS,CAAC,KAC3E,cAAc,CAAC,YAAY,CAAC,KAAK,CAAC,CAuBpC,CAAC;AAkBF,eAAO,MAAM,oBAAoB,GAC/B,eAAe,aAAa,EAC5B,SAAS,MAAM,KACd,iBAAiB,CAClB,YAAY,CAAC,KAAK,CAAC,EACnB,KAAK,EACL;IAAE,KAAK,EAAE,MAAM,CAAC;IAAC,IAAI,EAAE,kBAAkB,CAAA;CAAE,CAsB5C,CAAC;AAYF,eAAO,MAAM,oBAAoB,GAC/B,eAAe,aAAa,EAC5B,SAAS,MAAM,KACd,iBAAiB,CAClB,YAAY,CAAC,KAAK,CAAC,EACnB,KAAK,EACL;IAAE,KAAK,EAAE,MAAM,CAAC;IAAC,KAAK,EAAE,MAAM,CAAC;IAAC,IAAI,EAAE,kBAAkB,CAAA;CAAE,CA2B3D,CAAC;AAYF,eAAO,MAAM,oBAAoB,GAC/B,eAAe,aAAa,EAC5B,SAAS,MAAM,KACd,iBAAiB,CAClB,YAAY,CAAC,KAAK,CAAC,EACnB,KAAK,EACL;IAAE,KAAK,EAAE,MAAM,CAAC;IAAC,KAAK,EAAE,MAAM,CAAA;CAAE,CAmBjC,CAAC"}
@@ -1 +1 @@
1
- {"version":3,"file":"use-sudojo-levels.js","sourceRoot":"","sources":["../../src/hooks/use-sudojo-levels.ts"],"names":[],"mappings":"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","sourcesContent":["/**\n * Hook for Sudojo levels endpoints\n */\n\nimport { useCallback, useMemo } from \"react\";\nimport {\n useMutation,\n UseMutationResult,\n useQuery,\n useQueryClient,\n UseQueryOptions,\n UseQueryResult,\n} from \"@tanstack/react-query\";\nimport type { NetworkClient } from \"@sudobility/types\";\nimport type {\n BaseResponse,\n Level,\n LevelCreateRequest,\n LevelUpdateRequest,\n} from \"@sudobility/sudojo_types\";\nimport { queryKeys } from \"./query-keys\";\nimport { STALE_TIMES } from \"./query-config\";\nimport { SudojoClient } from \"../network/sudojo-client\";\n\n/**\n * Hook to get all levels\n */\nexport const useSudojoLevels = (\n networkClient: NetworkClient,\n baseUrl: string,\n token: string,\n options?: Omit<\n UseQueryOptions<BaseResponse<Level[]>>,\n \"queryKey\" | \"queryFn\"\n >,\n): UseQueryResult<BaseResponse<Level[]>> => {\n const client = useMemo(\n () => new SudojoClient(networkClient, baseUrl),\n [networkClient, baseUrl],\n );\n\n const queryFn = useCallback(async (): Promise<BaseResponse<Level[]>> => {\n return client.getLevels(token);\n }, [client, token]);\n\n // Public endpoint - no token required\n const isEnabled = options?.enabled !== undefined ? options.enabled : true;\n\n return useQuery({\n queryKey: queryKeys.sudojo.levels(),\n queryFn,\n staleTime: STALE_TIMES.LEVELS,\n ...options,\n enabled: isEnabled,\n });\n};\n\n/**\n * Hook to get a specific level by level number (1-12)\n */\nexport const useSudojoLevel = (\n networkClient: NetworkClient,\n baseUrl: string,\n token: string,\n level: number,\n options?: Omit<UseQueryOptions<BaseResponse<Level>>, \"queryKey\" | \"queryFn\">,\n): UseQueryResult<BaseResponse<Level>> => {\n const client = useMemo(\n () => new SudojoClient(networkClient, baseUrl),\n [networkClient, baseUrl],\n );\n\n const queryFn = useCallback(async (): Promise<BaseResponse<Level>> => {\n return client.getLevel(token, level);\n }, [client, token, level]);\n\n // Public endpoint - no token required, but level is required\n const isEnabled =\n level >= 1 &&\n level <= 12 &&\n (options?.enabled !== undefined ? options.enabled : true);\n\n return useQuery({\n queryKey: queryKeys.sudojo.level(level),\n queryFn,\n staleTime: STALE_TIMES.LEVELS,\n ...options,\n enabled: isEnabled,\n });\n};\n\n/**\n * Hook to create a level\n */\nexport const useSudojoCreateLevel = (\n networkClient: NetworkClient,\n baseUrl: string,\n): UseMutationResult<\n BaseResponse<Level>,\n Error,\n { token: string; data: LevelCreateRequest }\n> => {\n const client = useMemo(\n () => new SudojoClient(networkClient, baseUrl),\n [networkClient, baseUrl],\n );\n const queryClient = useQueryClient();\n\n return useMutation({\n mutationFn: async ({\n token,\n data,\n }: {\n token: string;\n data: LevelCreateRequest;\n }) => {\n return client.createLevel(token, data);\n },\n onSuccess: () => {\n queryClient.invalidateQueries({ queryKey: queryKeys.sudojo.levels() });\n },\n });\n};\n\n/**\n * Hook to update a level\n */\nexport const useSudojoUpdateLevel = (\n networkClient: NetworkClient,\n baseUrl: string,\n): UseMutationResult<\n BaseResponse<Level>,\n Error,\n { token: string; level: number; data: LevelUpdateRequest }\n> => {\n const client = useMemo(\n () => new SudojoClient(networkClient, baseUrl),\n [networkClient, baseUrl],\n );\n const queryClient = useQueryClient();\n\n return useMutation({\n mutationFn: async ({\n token,\n level,\n data,\n }: {\n token: string;\n level: number;\n data: LevelUpdateRequest;\n }) => {\n return client.updateLevel(token, level, data);\n },\n onSuccess: (_data, variables) => {\n queryClient.invalidateQueries({ queryKey: queryKeys.sudojo.levels() });\n queryClient.invalidateQueries({\n queryKey: queryKeys.sudojo.level(variables.level),\n });\n },\n });\n};\n\n/**\n * Hook to delete a level\n */\nexport const useSudojoDeleteLevel = (\n networkClient: NetworkClient,\n baseUrl: string,\n): UseMutationResult<\n BaseResponse<Level>,\n Error,\n { token: string; level: number }\n> => {\n const client = useMemo(\n () => new SudojoClient(networkClient, baseUrl),\n [networkClient, baseUrl],\n );\n const queryClient = useQueryClient();\n\n return useMutation({\n mutationFn: async ({ token, level }: { token: string; level: number }) => {\n return client.deleteLevel(token, level);\n },\n onSuccess: (_data, variables) => {\n queryClient.invalidateQueries({ queryKey: queryKeys.sudojo.levels() });\n queryClient.removeQueries({\n queryKey: queryKeys.sudojo.level(variables.level),\n });\n },\n });\n};\n"]}
1
+ {"version":3,"file":"use-sudojo-levels.js","sourceRoot":"","sources":["../../src/hooks/use-sudojo-levels.ts"],"names":[],"mappings":"AAIA,OAAO,EAAE,WAAW,EAAE,OAAO,EAAE,MAAM,OAAO,CAAC;AAC7C,OAAO,EACL,WAAW,EAEX,QAAQ,EACR,cAAc,GAGf,MAAM,uBAAuB,CAAC;AAQ/B,OAAO,EAAE,SAAS,EAAE,MAAM,cAAc,CAAC;AACzC,OAAO,EAAE,WAAW,EAAE,MAAM,gBAAgB,CAAC;AAC7C,OAAO,EAAE,YAAY,EAAE,MAAM,0BAA0B,CAAC;AAsBxD,MAAM,CAAC,MAAM,eAAe,GAAG,CAC7B,aAA4B,EAC5B,OAAe,EACf,KAAa,EACb,OAGC,EACsC,EAAE;IACzC,MAAM,MAAM,GAAG,OAAO,CACpB,GAAG,EAAE,CAAC,IAAI,YAAY,CAAC,aAAa,EAAE,OAAO,CAAC,EAC9C,CAAC,aAAa,EAAE,OAAO,CAAC,CACzB,CAAC;IAEF,MAAM,OAAO,GAAG,WAAW,CAAC,KAAK,IAAoC,EAAE;QACrE,OAAO,MAAM,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC;IACjC,CAAC,EAAE,CAAC,MAAM,EAAE,KAAK,CAAC,CAAC,CAAC;IAGpB,MAAM,SAAS,GAAG,OAAO,EAAE,OAAO,KAAK,SAAS,CAAC,CAAC,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC,CAAC,IAAI,CAAC;IAE1E,OAAO,QAAQ,CAAC;QACd,QAAQ,EAAE,SAAS,CAAC,MAAM,CAAC,MAAM,EAAE;QACnC,OAAO;QACP,SAAS,EAAE,WAAW,CAAC,MAAM;QAC7B,GAAG,OAAO;QACV,OAAO,EAAE,SAAS;KACnB,CAAC,CAAC;AACL,CAAC,CAAC;AAiBF,MAAM,CAAC,MAAM,cAAc,GAAG,CAC5B,aAA4B,EAC5B,OAAe,EACf,KAAa,EACb,KAAa,EACb,OAA4E,EACvC,EAAE;IACvC,MAAM,MAAM,GAAG,OAAO,CACpB,GAAG,EAAE,CAAC,IAAI,YAAY,CAAC,aAAa,EAAE,OAAO,CAAC,EAC9C,CAAC,aAAa,EAAE,OAAO,CAAC,CACzB,CAAC;IAEF,MAAM,OAAO,GAAG,WAAW,CAAC,KAAK,IAAkC,EAAE;QACnE,OAAO,MAAM,CAAC,QAAQ,CAAC,KAAK,EAAE,KAAK,CAAC,CAAC;IACvC,CAAC,EAAE,CAAC,MAAM,EAAE,KAAK,EAAE,KAAK,CAAC,CAAC,CAAC;IAG3B,MAAM,SAAS,GACb,KAAK,IAAI,CAAC;QACV,KAAK,IAAI,EAAE;QACX,CAAC,OAAO,EAAE,OAAO,KAAK,SAAS,CAAC,CAAC,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC;IAE5D,OAAO,QAAQ,CAAC;QACd,QAAQ,EAAE,SAAS,CAAC,MAAM,CAAC,KAAK,CAAC,KAAK,CAAC;QACvC,OAAO;QACP,SAAS,EAAE,WAAW,CAAC,MAAM;QAC7B,GAAG,OAAO;QACV,OAAO,EAAE,SAAS;KACnB,CAAC,CAAC;AACL,CAAC,CAAC;AAkBF,MAAM,CAAC,MAAM,oBAAoB,GAAG,CAClC,aAA4B,EAC5B,OAAe,EAKf,EAAE;IACF,MAAM,MAAM,GAAG,OAAO,CACpB,GAAG,EAAE,CAAC,IAAI,YAAY,CAAC,aAAa,EAAE,OAAO,CAAC,EAC9C,CAAC,aAAa,EAAE,OAAO,CAAC,CACzB,CAAC;IACF,MAAM,WAAW,GAAG,cAAc,EAAE,CAAC;IAErC,OAAO,WAAW,CAAC;QACjB,UAAU,EAAE,KAAK,EAAE,EACjB,KAAK,EACL,IAAI,GAIL,EAAE,EAAE;YACH,OAAO,MAAM,CAAC,WAAW,CAAC,KAAK,EAAE,IAAI,CAAC,CAAC;QACzC,CAAC;QACD,SAAS,EAAE,GAAG,EAAE;YACd,WAAW,CAAC,iBAAiB,CAAC,EAAE,QAAQ,EAAE,SAAS,CAAC,MAAM,CAAC,MAAM,EAAE,EAAE,CAAC,CAAC;QACzE,CAAC;KACF,CAAC,CAAC;AACL,CAAC,CAAC;AAYF,MAAM,CAAC,MAAM,oBAAoB,GAAG,CAClC,aAA4B,EAC5B,OAAe,EAKf,EAAE;IACF,MAAM,MAAM,GAAG,OAAO,CACpB,GAAG,EAAE,CAAC,IAAI,YAAY,CAAC,aAAa,EAAE,OAAO,CAAC,EAC9C,CAAC,aAAa,EAAE,OAAO,CAAC,CACzB,CAAC;IACF,MAAM,WAAW,GAAG,cAAc,EAAE,CAAC;IAErC,OAAO,WAAW,CAAC;QACjB,UAAU,EAAE,KAAK,EAAE,EACjB,KAAK,EACL,KAAK,EACL,IAAI,GAKL,EAAE,EAAE;YACH,OAAO,MAAM,CAAC,WAAW,CAAC,KAAK,EAAE,KAAK,EAAE,IAAI,CAAC,CAAC;QAChD,CAAC;QACD,SAAS,EAAE,CAAC,KAAK,EAAE,SAAS,EAAE,EAAE;YAC9B,WAAW,CAAC,iBAAiB,CAAC,EAAE,QAAQ,EAAE,SAAS,CAAC,MAAM,CAAC,MAAM,EAAE,EAAE,CAAC,CAAC;YACvE,WAAW,CAAC,iBAAiB,CAAC;gBAC5B,QAAQ,EAAE,SAAS,CAAC,MAAM,CAAC,KAAK,CAAC,SAAS,CAAC,KAAK,CAAC;aAClD,CAAC,CAAC;QACL,CAAC;KACF,CAAC,CAAC;AACL,CAAC,CAAC;AAYF,MAAM,CAAC,MAAM,oBAAoB,GAAG,CAClC,aAA4B,EAC5B,OAAe,EAKf,EAAE;IACF,MAAM,MAAM,GAAG,OAAO,CACpB,GAAG,EAAE,CAAC,IAAI,YAAY,CAAC,aAAa,EAAE,OAAO,CAAC,EAC9C,CAAC,aAAa,EAAE,OAAO,CAAC,CACzB,CAAC;IACF,MAAM,WAAW,GAAG,cAAc,EAAE,CAAC;IAErC,OAAO,WAAW,CAAC;QACjB,UAAU,EAAE,KAAK,EAAE,EAAE,KAAK,EAAE,KAAK,EAAoC,EAAE,EAAE;YACvE,OAAO,MAAM,CAAC,WAAW,CAAC,KAAK,EAAE,KAAK,CAAC,CAAC;QAC1C,CAAC;QACD,SAAS,EAAE,CAAC,KAAK,EAAE,SAAS,EAAE,EAAE;YAC9B,WAAW,CAAC,iBAAiB,CAAC,EAAE,QAAQ,EAAE,SAAS,CAAC,MAAM,CAAC,MAAM,EAAE,EAAE,CAAC,CAAC;YACvE,WAAW,CAAC,aAAa,CAAC;gBACxB,QAAQ,EAAE,SAAS,CAAC,MAAM,CAAC,KAAK,CAAC,SAAS,CAAC,KAAK,CAAC;aAClD,CAAC,CAAC;QACL,CAAC;KACF,CAAC,CAAC;AACL,CAAC,CAAC","sourcesContent":["/**\n * Hook for Sudojo levels endpoints\n */\n\nimport { useCallback, useMemo } from \"react\";\nimport {\n useMutation,\n UseMutationResult,\n useQuery,\n useQueryClient,\n UseQueryOptions,\n UseQueryResult,\n} from \"@tanstack/react-query\";\nimport type { NetworkClient } from \"@sudobility/types\";\nimport type {\n BaseResponse,\n Level,\n LevelCreateRequest,\n LevelUpdateRequest,\n} from \"@sudobility/sudojo_types\";\nimport { queryKeys } from \"./query-keys\";\nimport { STALE_TIMES } from \"./query-config\";\nimport { SudojoClient } from \"../network/sudojo-client\";\n\n/**\n * Hook to fetch all Sudoku difficulty levels.\n *\n * Levels are admin-managed reference data (1-12) that define puzzle difficulty\n * tiers. This is a public endpoint that does not require authentication, though\n * a token is accepted for consistency.\n *\n * Stale time: {@link STALE_TIMES.LEVELS} (10 minutes) since levels rarely change.\n *\n * @param networkClient - Network client for making HTTP requests\n * @param baseUrl - Base URL of the Sudojo API\n * @param token - Firebase access token (optional for this public endpoint)\n * @param options - Additional TanStack Query options (excluding queryKey and queryFn)\n * @returns A UseQueryResult containing an array of Level objects\n *\n * @example\n * ```tsx\n * const { data: levels, isLoading } = useSudojoLevels(networkClient, baseUrl, token);\n * ```\n */\nexport const useSudojoLevels = (\n networkClient: NetworkClient,\n baseUrl: string,\n token: string,\n options?: Omit<\n UseQueryOptions<BaseResponse<Level[]>>,\n \"queryKey\" | \"queryFn\"\n >,\n): UseQueryResult<BaseResponse<Level[]>> => {\n const client = useMemo(\n () => new SudojoClient(networkClient, baseUrl),\n [networkClient, baseUrl],\n );\n\n const queryFn = useCallback(async (): Promise<BaseResponse<Level[]>> => {\n return client.getLevels(token);\n }, [client, token]);\n\n // Public endpoint - no token required\n const isEnabled = options?.enabled !== undefined ? options.enabled : true;\n\n return useQuery({\n queryKey: queryKeys.sudojo.levels(),\n queryFn,\n staleTime: STALE_TIMES.LEVELS,\n ...options,\n enabled: isEnabled,\n });\n};\n\n/**\n * Hook to fetch a specific level by its number (1-12).\n *\n * The query is automatically disabled if the level number is outside\n * the valid range of 1-12. This is a public endpoint.\n *\n * Stale time: {@link STALE_TIMES.LEVELS} (10 minutes).\n *\n * @param networkClient - Network client for making HTTP requests\n * @param baseUrl - Base URL of the Sudojo API\n * @param token - Firebase access token\n * @param level - Level number (1-12). Query is disabled if out of range.\n * @param options - Additional TanStack Query options\n * @returns A UseQueryResult containing a single Level object\n */\nexport const useSudojoLevel = (\n networkClient: NetworkClient,\n baseUrl: string,\n token: string,\n level: number,\n options?: Omit<UseQueryOptions<BaseResponse<Level>>, \"queryKey\" | \"queryFn\">,\n): UseQueryResult<BaseResponse<Level>> => {\n const client = useMemo(\n () => new SudojoClient(networkClient, baseUrl),\n [networkClient, baseUrl],\n );\n\n const queryFn = useCallback(async (): Promise<BaseResponse<Level>> => {\n return client.getLevel(token, level);\n }, [client, token, level]);\n\n // Public endpoint - no token required, but level is required\n const isEnabled =\n level >= 1 &&\n level <= 12 &&\n (options?.enabled !== undefined ? options.enabled : true);\n\n return useQuery({\n queryKey: queryKeys.sudojo.level(level),\n queryFn,\n staleTime: STALE_TIMES.LEVELS,\n ...options,\n enabled: isEnabled,\n });\n};\n\n/**\n * Hook to create a new level. Requires admin authentication.\n *\n * On success, automatically invalidates the levels list query so the UI\n * reflects the new level.\n *\n * @param networkClient - Network client for making HTTP requests\n * @param baseUrl - Base URL of the Sudojo API\n * @returns A UseMutationResult. Call `mutate({ token, data })` to execute.\n *\n * @example\n * ```tsx\n * const createLevel = useSudojoCreateLevel(networkClient, baseUrl);\n * createLevel.mutate({ token, data: { level: 5, title: \"Advanced\", text: null, requires_subscription: true } });\n * ```\n */\nexport const useSudojoCreateLevel = (\n networkClient: NetworkClient,\n baseUrl: string,\n): UseMutationResult<\n BaseResponse<Level>,\n Error,\n { token: string; data: LevelCreateRequest }\n> => {\n const client = useMemo(\n () => new SudojoClient(networkClient, baseUrl),\n [networkClient, baseUrl],\n );\n const queryClient = useQueryClient();\n\n return useMutation({\n mutationFn: async ({\n token,\n data,\n }: {\n token: string;\n data: LevelCreateRequest;\n }) => {\n return client.createLevel(token, data);\n },\n onSuccess: () => {\n queryClient.invalidateQueries({ queryKey: queryKeys.sudojo.levels() });\n },\n });\n};\n\n/**\n * Hook to update an existing level. Requires admin authentication.\n *\n * On success, automatically invalidates both the levels list and the\n * specific level query for the updated level number.\n *\n * @param networkClient - Network client for making HTTP requests\n * @param baseUrl - Base URL of the Sudojo API\n * @returns A UseMutationResult. Call `mutate({ token, level, data })` to execute.\n */\nexport const useSudojoUpdateLevel = (\n networkClient: NetworkClient,\n baseUrl: string,\n): UseMutationResult<\n BaseResponse<Level>,\n Error,\n { token: string; level: number; data: LevelUpdateRequest }\n> => {\n const client = useMemo(\n () => new SudojoClient(networkClient, baseUrl),\n [networkClient, baseUrl],\n );\n const queryClient = useQueryClient();\n\n return useMutation({\n mutationFn: async ({\n token,\n level,\n data,\n }: {\n token: string;\n level: number;\n data: LevelUpdateRequest;\n }) => {\n return client.updateLevel(token, level, data);\n },\n onSuccess: (_data, variables) => {\n queryClient.invalidateQueries({ queryKey: queryKeys.sudojo.levels() });\n queryClient.invalidateQueries({\n queryKey: queryKeys.sudojo.level(variables.level),\n });\n },\n });\n};\n\n/**\n * Hook to delete a level. Requires admin authentication.\n *\n * On success, invalidates the levels list and removes the specific level\n * from the query cache entirely.\n *\n * @param networkClient - Network client for making HTTP requests\n * @param baseUrl - Base URL of the Sudojo API\n * @returns A UseMutationResult. Call `mutate({ token, level })` to execute.\n */\nexport const useSudojoDeleteLevel = (\n networkClient: NetworkClient,\n baseUrl: string,\n): UseMutationResult<\n BaseResponse<Level>,\n Error,\n { token: string; level: number }\n> => {\n const client = useMemo(\n () => new SudojoClient(networkClient, baseUrl),\n [networkClient, baseUrl],\n );\n const queryClient = useQueryClient();\n\n return useMutation({\n mutationFn: async ({ token, level }: { token: string; level: number }) => {\n return client.deleteLevel(token, level);\n },\n onSuccess: (_data, variables) => {\n queryClient.invalidateQueries({ queryKey: queryKeys.sudojo.levels() });\n queryClient.removeQueries({\n queryKey: queryKeys.sudojo.level(variables.level),\n });\n },\n });\n};\n"]}
@@ -1 +1 @@
1
- {"version":3,"file":"use-sudojo-practices.d.ts","sourceRoot":"","sources":["../../src/hooks/use-sudojo-practices.ts"],"names":[],"mappings":"AAKA,OAAO,EAEL,iBAAiB,EAGjB,eAAe,EACf,cAAc,EACf,MAAM,uBAAuB,CAAC;AAC/B,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,mBAAmB,CAAC;AACvD,OAAO,KAAK,EACV,YAAY,EACZ,iBAAiB,EACjB,0BAA0B,EAC1B,8BAA8B,EAC/B,MAAM,0BAA0B,CAAC;AAOlC,eAAO,MAAM,uBAAuB,GAClC,eAAe,aAAa,EAC5B,SAAS,MAAM,EACf,OAAO,MAAM,EACb,UAAU,IAAI,CACZ,eAAe,CAAC,YAAY,CAAC,0BAA0B,EAAE,CAAC,CAAC,EAC3D,UAAU,GAAG,SAAS,CACvB,KACA,cAAc,CAAC,YAAY,CAAC,0BAA0B,EAAE,CAAC,CAqB3D,CAAC;AAKF,eAAO,MAAM,uBAAuB,GAClC,eAAe,aAAa,EAC5B,SAAS,MAAM,EACf,OAAO,MAAM,EACb,WAAW,MAAM,EACjB,UAAU,IAAI,CACZ,eAAe,CAAC,YAAY,CAAC,iBAAiB,CAAC,CAAC,EAChD,UAAU,GAAG,SAAS,CACvB,KACA,cAAc,CAAC,YAAY,CAAC,iBAAiB,CAAC,CAsBhD,CAAC;AAKF,eAAO,MAAM,uBAAuB,GAClC,eAAe,aAAa,EAC5B,SAAS,MAAM,KACd,iBAAiB,CAClB,YAAY,CAAC,iBAAiB,CAAC,EAC/B,KAAK,EACL;IAAE,KAAK,EAAE,MAAM,CAAC;IAAC,IAAI,EAAE,8BAA8B,CAAA;CAAE,CAwBxD,CAAC;AAKF,eAAO,MAAM,2BAA2B,GACtC,eAAe,aAAa,EAC5B,SAAS,MAAM,KACd,iBAAiB,CAClB,YAAY,CAAC;IAAE,OAAO,EAAE,MAAM,CAAC;IAAC,OAAO,EAAE,MAAM,CAAA;CAAE,CAAC,EAClD,KAAK,EACL;IAAE,KAAK,EAAE,MAAM,CAAA;CAAE,CAkBlB,CAAC"}
1
+ {"version":3,"file":"use-sudojo-practices.d.ts","sourceRoot":"","sources":["../../src/hooks/use-sudojo-practices.ts"],"names":[],"mappings":"AAKA,OAAO,EAEL,iBAAiB,EAGjB,eAAe,EACf,cAAc,EACf,MAAM,uBAAuB,CAAC;AAC/B,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,mBAAmB,CAAC;AACvD,OAAO,KAAK,EACV,YAAY,EACZ,iBAAiB,EACjB,0BAA0B,EAC1B,8BAA8B,EAC/B,MAAM,0BAA0B,CAAC;AAgBlC,eAAO,MAAM,uBAAuB,GAClC,eAAe,aAAa,EAC5B,SAAS,MAAM,EACf,OAAO,MAAM,EACb,UAAU,IAAI,CACZ,eAAe,CAAC,YAAY,CAAC,0BAA0B,EAAE,CAAC,CAAC,EAC3D,UAAU,GAAG,SAAS,CACvB,KACA,cAAc,CAAC,YAAY,CAAC,0BAA0B,EAAE,CAAC,CAqB3D,CAAC;AAeF,eAAO,MAAM,uBAAuB,GAClC,eAAe,aAAa,EAC5B,SAAS,MAAM,EACf,OAAO,MAAM,EACb,WAAW,MAAM,EACjB,UAAU,IAAI,CACZ,eAAe,CAAC,YAAY,CAAC,iBAAiB,CAAC,CAAC,EAChD,UAAU,GAAG,SAAS,CACvB,KACA,cAAc,CAAC,YAAY,CAAC,iBAAiB,CAAC,CAsBhD,CAAC;AAWF,eAAO,MAAM,uBAAuB,GAClC,eAAe,aAAa,EAC5B,SAAS,MAAM,KACd,iBAAiB,CAClB,YAAY,CAAC,iBAAiB,CAAC,EAC/B,KAAK,EACL;IAAE,KAAK,EAAE,MAAM,CAAC;IAAC,IAAI,EAAE,8BAA8B,CAAA;CAAE,CAwBxD,CAAC;AAaF,eAAO,MAAM,2BAA2B,GACtC,eAAe,aAAa,EAC5B,SAAS,MAAM,KACd,iBAAiB,CAClB,YAAY,CAAC;IAAE,OAAO,EAAE,MAAM,CAAC;IAAC,OAAO,EAAE,MAAM,CAAA;CAAE,CAAC,EAClD,KAAK,EACL;IAAE,KAAK,EAAE,MAAM,CAAA;CAAE,CAkBlB,CAAC"}
@@ -1 +1 @@
1
- {"version":3,"file":"use-sudojo-practices.js","sourceRoot":"","sources":["../../src/hooks/use-sudojo-practices.ts"],"names":[],"mappings":"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","sourcesContent":["/**\n * Hook for Sudojo practices endpoints\n */\n\nimport { useCallback, useMemo } from \"react\";\nimport {\n useMutation,\n UseMutationResult,\n useQuery,\n useQueryClient,\n UseQueryOptions,\n UseQueryResult,\n} from \"@tanstack/react-query\";\nimport type { NetworkClient } from \"@sudobility/types\";\nimport type {\n BaseResponse,\n TechniquePractice,\n TechniquePracticeCountItem,\n TechniquePracticeCreateRequest,\n} from \"@sudobility/sudojo_types\";\nimport { queryKeys } from \"./query-keys\";\nimport { SudojoClient } from \"../network/sudojo-client\";\n\n/**\n * Hook to get practice counts for all techniques\n */\nexport const useSudojoPracticeCounts = (\n networkClient: NetworkClient,\n baseUrl: string,\n token: string,\n options?: Omit<\n UseQueryOptions<BaseResponse<TechniquePracticeCountItem[]>>,\n \"queryKey\" | \"queryFn\"\n >,\n): UseQueryResult<BaseResponse<TechniquePracticeCountItem[]>> => {\n const client = useMemo(\n () => new SudojoClient(networkClient, baseUrl),\n [networkClient, baseUrl],\n );\n\n const queryFn = useCallback(async (): Promise<\n BaseResponse<TechniquePracticeCountItem[]>\n > => {\n return client.getPracticeCounts(token);\n }, [client, token]);\n\n const isEnabled = options?.enabled !== undefined ? options.enabled : true;\n\n return useQuery({\n queryKey: queryKeys.sudojo.practiceCounts(),\n queryFn,\n staleTime: 0, // Always fetch fresh for counts\n ...options,\n enabled: isEnabled,\n });\n};\n\n/**\n * Hook to get a random practice for a specific technique\n */\nexport const useSudojoRandomPractice = (\n networkClient: NetworkClient,\n baseUrl: string,\n token: string,\n technique: number,\n options?: Omit<\n UseQueryOptions<BaseResponse<TechniquePractice>>,\n \"queryKey\" | \"queryFn\"\n >,\n): UseQueryResult<BaseResponse<TechniquePractice>> => {\n const client = useMemo(\n () => new SudojoClient(networkClient, baseUrl),\n [networkClient, baseUrl],\n );\n\n const queryFn = useCallback(async (): Promise<\n BaseResponse<TechniquePractice>\n > => {\n return client.getRandomPractice(token, technique);\n }, [client, token, technique]);\n\n const isEnabled =\n technique >= 1 && (options?.enabled !== undefined ? options.enabled : true);\n\n return useQuery({\n queryKey: queryKeys.sudojo.practiceRandom(technique),\n queryFn,\n staleTime: 0, // Always fetch fresh for random\n ...options,\n enabled: isEnabled,\n });\n};\n\n/**\n * Hook to create a practice (admin only)\n */\nexport const useSudojoCreatePractice = (\n networkClient: NetworkClient,\n baseUrl: string,\n): UseMutationResult<\n BaseResponse<TechniquePractice>,\n Error,\n { token: string; data: TechniquePracticeCreateRequest }\n> => {\n const client = useMemo(\n () => new SudojoClient(networkClient, baseUrl),\n [networkClient, baseUrl],\n );\n const queryClient = useQueryClient();\n\n return useMutation({\n mutationFn: async ({\n token,\n data,\n }: {\n token: string;\n data: TechniquePracticeCreateRequest;\n }) => {\n return client.createPractice(token, data);\n },\n onSuccess: () => {\n queryClient.invalidateQueries({\n queryKey: queryKeys.sudojo.practiceCounts(),\n });\n },\n });\n};\n\n/**\n * Hook to delete all practices (admin only)\n */\nexport const useSudojoDeleteAllPractices = (\n networkClient: NetworkClient,\n baseUrl: string,\n): UseMutationResult<\n BaseResponse<{ deleted: number; message: string }>,\n Error,\n { token: string }\n> => {\n const client = useMemo(\n () => new SudojoClient(networkClient, baseUrl),\n [networkClient, baseUrl],\n );\n const queryClient = useQueryClient();\n\n return useMutation({\n mutationFn: async ({ token }: { token: string }) => {\n return client.deleteAllPractices(token);\n },\n onSuccess: () => {\n queryClient.invalidateQueries({\n queryKey: queryKeys.sudojo.practiceCounts(),\n });\n },\n });\n};\n"]}
1
+ {"version":3,"file":"use-sudojo-practices.js","sourceRoot":"","sources":["../../src/hooks/use-sudojo-practices.ts"],"names":[],"mappings":"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","sourcesContent":["/**\n * Hook for Sudojo practices endpoints\n */\n\nimport { useCallback, useMemo } from \"react\";\nimport {\n useMutation,\n UseMutationResult,\n useQuery,\n useQueryClient,\n UseQueryOptions,\n UseQueryResult,\n} from \"@tanstack/react-query\";\nimport type { NetworkClient } from \"@sudobility/types\";\nimport type {\n BaseResponse,\n TechniquePractice,\n TechniquePracticeCountItem,\n TechniquePracticeCreateRequest,\n} from \"@sudobility/sudojo_types\";\nimport { queryKeys } from \"./query-keys\";\nimport { SudojoClient } from \"../network/sudojo-client\";\n\n/**\n * Hook to fetch practice counts for all techniques.\n *\n * Returns the number of practice puzzles available for each technique.\n * Uses `staleTime: 0` to always fetch fresh counts.\n *\n * @param networkClient - Network client for making HTTP requests\n * @param baseUrl - Base URL of the Sudojo API\n * @param token - Firebase access token\n * @param options - Additional TanStack Query options\n * @returns A UseQueryResult containing an array of TechniquePracticeCountItem\n */\nexport const useSudojoPracticeCounts = (\n networkClient: NetworkClient,\n baseUrl: string,\n token: string,\n options?: Omit<\n UseQueryOptions<BaseResponse<TechniquePracticeCountItem[]>>,\n \"queryKey\" | \"queryFn\"\n >,\n): UseQueryResult<BaseResponse<TechniquePracticeCountItem[]>> => {\n const client = useMemo(\n () => new SudojoClient(networkClient, baseUrl),\n [networkClient, baseUrl],\n );\n\n const queryFn = useCallback(async (): Promise<\n BaseResponse<TechniquePracticeCountItem[]>\n > => {\n return client.getPracticeCounts(token);\n }, [client, token]);\n\n const isEnabled = options?.enabled !== undefined ? options.enabled : true;\n\n return useQuery({\n queryKey: queryKeys.sudojo.practiceCounts(),\n queryFn,\n staleTime: 0, // Always fetch fresh for counts\n ...options,\n enabled: isEnabled,\n });\n};\n\n/**\n * Hook to fetch a random practice puzzle for a specific technique.\n *\n * The query is automatically disabled when technique < 1. Uses `staleTime: 0`\n * to always fetch a fresh random practice.\n *\n * @param networkClient - Network client for making HTTP requests\n * @param baseUrl - Base URL of the Sudojo API\n * @param token - Firebase access token\n * @param technique - Technique number (>= 1). Query is disabled if < 1.\n * @param options - Additional TanStack Query options\n * @returns A UseQueryResult containing a single TechniquePractice object\n */\nexport const useSudojoRandomPractice = (\n networkClient: NetworkClient,\n baseUrl: string,\n token: string,\n technique: number,\n options?: Omit<\n UseQueryOptions<BaseResponse<TechniquePractice>>,\n \"queryKey\" | \"queryFn\"\n >,\n): UseQueryResult<BaseResponse<TechniquePractice>> => {\n const client = useMemo(\n () => new SudojoClient(networkClient, baseUrl),\n [networkClient, baseUrl],\n );\n\n const queryFn = useCallback(async (): Promise<\n BaseResponse<TechniquePractice>\n > => {\n return client.getRandomPractice(token, technique);\n }, [client, token, technique]);\n\n const isEnabled =\n technique >= 1 && (options?.enabled !== undefined ? options.enabled : true);\n\n return useQuery({\n queryKey: queryKeys.sudojo.practiceRandom(technique),\n queryFn,\n staleTime: 0, // Always fetch fresh for random\n ...options,\n enabled: isEnabled,\n });\n};\n\n/**\n * Hook to create a new practice puzzle. **Admin only.**\n *\n * On success, invalidates the practice counts query so the UI reflects the new count.\n *\n * @param networkClient - Network client for making HTTP requests\n * @param baseUrl - Base URL of the Sudojo API\n * @returns A UseMutationResult. Call `mutate({ token, data })` to execute.\n */\nexport const useSudojoCreatePractice = (\n networkClient: NetworkClient,\n baseUrl: string,\n): UseMutationResult<\n BaseResponse<TechniquePractice>,\n Error,\n { token: string; data: TechniquePracticeCreateRequest }\n> => {\n const client = useMemo(\n () => new SudojoClient(networkClient, baseUrl),\n [networkClient, baseUrl],\n );\n const queryClient = useQueryClient();\n\n return useMutation({\n mutationFn: async ({\n token,\n data,\n }: {\n token: string;\n data: TechniquePracticeCreateRequest;\n }) => {\n return client.createPractice(token, data);\n },\n onSuccess: () => {\n queryClient.invalidateQueries({\n queryKey: queryKeys.sudojo.practiceCounts(),\n });\n },\n });\n};\n\n/**\n * Hook to delete all practices. **Admin only.** This is a destructive operation\n * that removes all practice puzzles from the database.\n *\n * Internally passes `confirm=true` as a query parameter (required by the API\n * as a safety measure). On success, invalidates the practice counts query.\n *\n * @param networkClient - Network client for making HTTP requests\n * @param baseUrl - Base URL of the Sudojo API\n * @returns A UseMutationResult. Call `mutate({ token })` to execute.\n */\nexport const useSudojoDeleteAllPractices = (\n networkClient: NetworkClient,\n baseUrl: string,\n): UseMutationResult<\n BaseResponse<{ deleted: number; message: string }>,\n Error,\n { token: string }\n> => {\n const client = useMemo(\n () => new SudojoClient(networkClient, baseUrl),\n [networkClient, baseUrl],\n );\n const queryClient = useQueryClient();\n\n return useMutation({\n mutationFn: async ({ token }: { token: string }) => {\n return client.deleteAllPractices(token);\n },\n onSuccess: () => {\n queryClient.invalidateQueries({\n queryKey: queryKeys.sudojo.practiceCounts(),\n });\n },\n });\n};\n"]}
@@ -1 +1 @@
1
- {"version":3,"file":"use-sudojo-techniques.d.ts","sourceRoot":"","sources":["../../src/hooks/use-sudojo-techniques.ts"],"names":[],"mappings":"AAKA,OAAO,EAEL,iBAAiB,EAGjB,eAAe,EACf,cAAc,EACf,MAAM,uBAAuB,CAAC;AAC/B,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,mBAAmB,CAAC;AACvD,OAAO,KAAK,EACV,YAAY,EACZ,SAAS,EACT,sBAAsB,EACtB,oBAAoB,EACpB,sBAAsB,EACvB,MAAM,0BAA0B,CAAC;AAQlC,eAAO,MAAM,mBAAmB,GAC9B,eAAe,aAAa,EAC5B,SAAS,MAAM,EACf,OAAO,MAAM,EACb,cAAc,oBAAoB,EAClC,UAAU,IAAI,CACZ,eAAe,CAAC,YAAY,CAAC,SAAS,EAAE,CAAC,CAAC,EAC1C,UAAU,GAAG,SAAS,CACvB,KACA,cAAc,CAAC,YAAY,CAAC,SAAS,EAAE,CAAC,CAsB1C,CAAC;AAKF,eAAO,MAAM,kBAAkB,GAC7B,eAAe,aAAa,EAC5B,SAAS,MAAM,EACf,OAAO,MAAM,EACb,WAAW,MAAM,EACjB,UAAU,IAAI,CACZ,eAAe,CAAC,YAAY,CAAC,SAAS,CAAC,CAAC,EACxC,UAAU,GAAG,SAAS,CACvB,KACA,cAAc,CAAC,YAAY,CAAC,SAAS,CAAC,CAqBxC,CAAC;AAKF,eAAO,MAAM,wBAAwB,GACnC,eAAe,aAAa,EAC5B,SAAS,MAAM,KACd,iBAAiB,CAClB,YAAY,CAAC,SAAS,CAAC,EACvB,KAAK,EACL;IAAE,KAAK,EAAE,MAAM,CAAC;IAAC,IAAI,EAAE,sBAAsB,CAAA;CAAE,CAwBhD,CAAC;AAKF,eAAO,MAAM,wBAAwB,GACnC,eAAe,aAAa,EAC5B,SAAS,MAAM,KACd,iBAAiB,CAClB,YAAY,CAAC,SAAS,CAAC,EACvB,KAAK,EACL;IAAE,KAAK,EAAE,MAAM,CAAC;IAAC,SAAS,EAAE,MAAM,CAAC;IAAC,IAAI,EAAE,sBAAsB,CAAA;CAAE,CA6BnE,CAAC;AAKF,eAAO,MAAM,wBAAwB,GACnC,eAAe,aAAa,EAC5B,SAAS,MAAM,KACd,iBAAiB,CAClB,YAAY,CAAC,SAAS,CAAC,EACvB,KAAK,EACL;IAAE,KAAK,EAAE,MAAM,CAAC;IAAC,SAAS,EAAE,MAAM,CAAA;CAAE,CA2BrC,CAAC"}
1
+ {"version":3,"file":"use-sudojo-techniques.d.ts","sourceRoot":"","sources":["../../src/hooks/use-sudojo-techniques.ts"],"names":[],"mappings":"AAKA,OAAO,EAEL,iBAAiB,EAGjB,eAAe,EACf,cAAc,EACf,MAAM,uBAAuB,CAAC;AAC/B,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,mBAAmB,CAAC;AACvD,OAAO,KAAK,EACV,YAAY,EACZ,SAAS,EACT,sBAAsB,EACtB,oBAAoB,EACpB,sBAAsB,EACvB,MAAM,0BAA0B,CAAC;AAqBlC,eAAO,MAAM,mBAAmB,GAC9B,eAAe,aAAa,EAC5B,SAAS,MAAM,EACf,OAAO,MAAM,EACb,cAAc,oBAAoB,EAClC,UAAU,IAAI,CACZ,eAAe,CAAC,YAAY,CAAC,SAAS,EAAE,CAAC,CAAC,EAC1C,UAAU,GAAG,SAAS,CACvB,KACA,cAAc,CAAC,YAAY,CAAC,SAAS,EAAE,CAAC,CAsB1C,CAAC;AAgBF,eAAO,MAAM,kBAAkB,GAC7B,eAAe,aAAa,EAC5B,SAAS,MAAM,EACf,OAAO,MAAM,EACb,WAAW,MAAM,EACjB,UAAU,IAAI,CACZ,eAAe,CAAC,YAAY,CAAC,SAAS,CAAC,CAAC,EACxC,UAAU,GAAG,SAAS,CACvB,KACA,cAAc,CAAC,YAAY,CAAC,SAAS,CAAC,CAqBxC,CAAC;AAWF,eAAO,MAAM,wBAAwB,GACnC,eAAe,aAAa,EAC5B,SAAS,MAAM,KACd,iBAAiB,CAClB,YAAY,CAAC,SAAS,CAAC,EACvB,KAAK,EACL;IAAE,KAAK,EAAE,MAAM,CAAC;IAAC,IAAI,EAAE,sBAAsB,CAAA;CAAE,CAwBhD,CAAC;AAWF,eAAO,MAAM,wBAAwB,GACnC,eAAe,aAAa,EAC5B,SAAS,MAAM,KACd,iBAAiB,CAClB,YAAY,CAAC,SAAS,CAAC,EACvB,KAAK,EACL;IAAE,KAAK,EAAE,MAAM,CAAC;IAAC,SAAS,EAAE,MAAM,CAAC;IAAC,IAAI,EAAE,sBAAsB,CAAA;CAAE,CA6BnE,CAAC;AAYF,eAAO,MAAM,wBAAwB,GACnC,eAAe,aAAa,EAC5B,SAAS,MAAM,KACd,iBAAiB,CAClB,YAAY,CAAC,SAAS,CAAC,EACvB,KAAK,EACL;IAAE,KAAK,EAAE,MAAM,CAAC;IAAC,SAAS,EAAE,MAAM,CAAA;CAAE,CA2BrC,CAAC"}
@@ -1 +1 @@
1
- {"version":3,"file":"use-sudojo-techniques.js","sourceRoot":"","sources":["../../src/hooks/use-sudojo-techniques.ts"],"names":[],"mappings":"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","sourcesContent":["/**\n * Hook for Sudojo techniques endpoints\n */\n\nimport { useCallback, useMemo } from \"react\";\nimport {\n useMutation,\n UseMutationResult,\n useQuery,\n useQueryClient,\n UseQueryOptions,\n UseQueryResult,\n} from \"@tanstack/react-query\";\nimport type { NetworkClient } from \"@sudobility/types\";\nimport type {\n BaseResponse,\n Technique,\n TechniqueCreateRequest,\n TechniqueQueryParams,\n TechniqueUpdateRequest,\n} from \"@sudobility/sudojo_types\";\nimport { queryKeys } from \"./query-keys\";\nimport { STALE_TIMES } from \"./query-config\";\nimport { SudojoClient } from \"../network/sudojo-client\";\n\n/**\n * Hook to get all techniques with optional filtering\n */\nexport const useSudojoTechniques = (\n networkClient: NetworkClient,\n baseUrl: string,\n token: string,\n queryParams?: TechniqueQueryParams,\n options?: Omit<\n UseQueryOptions<BaseResponse<Technique[]>>,\n \"queryKey\" | \"queryFn\"\n >,\n): UseQueryResult<BaseResponse<Technique[]>> => {\n const client = useMemo(\n () => new SudojoClient(networkClient, baseUrl),\n [networkClient, baseUrl],\n );\n\n const queryFn = useCallback(async (): Promise<BaseResponse<Technique[]>> => {\n return client.getTechniques(token, queryParams);\n }, [client, token, queryParams]);\n\n // Public endpoint - no token required\n const isEnabled = options?.enabled !== undefined ? options.enabled : true;\n\n return useQuery({\n queryKey: queryKeys.sudojo.techniques({\n level: queryParams?.level ?? undefined,\n }),\n queryFn,\n staleTime: STALE_TIMES.TECHNIQUES,\n ...options,\n enabled: isEnabled,\n });\n};\n\n/**\n * Hook to get a specific technique by technique number\n */\nexport const useSudojoTechnique = (\n networkClient: NetworkClient,\n baseUrl: string,\n token: string,\n technique: number,\n options?: Omit<\n UseQueryOptions<BaseResponse<Technique>>,\n \"queryKey\" | \"queryFn\"\n >,\n): UseQueryResult<BaseResponse<Technique>> => {\n const client = useMemo(\n () => new SudojoClient(networkClient, baseUrl),\n [networkClient, baseUrl],\n );\n\n const queryFn = useCallback(async (): Promise<BaseResponse<Technique>> => {\n return client.getTechnique(token, technique);\n }, [client, token, technique]);\n\n // Public endpoint - no token required, but technique is required\n const isEnabled =\n technique >= 1 && (options?.enabled !== undefined ? options.enabled : true);\n\n return useQuery({\n queryKey: queryKeys.sudojo.technique(technique),\n queryFn,\n staleTime: STALE_TIMES.TECHNIQUES,\n ...options,\n enabled: isEnabled,\n });\n};\n\n/**\n * Hook to create a technique\n */\nexport const useSudojoCreateTechnique = (\n networkClient: NetworkClient,\n baseUrl: string,\n): UseMutationResult<\n BaseResponse<Technique>,\n Error,\n { token: string; data: TechniqueCreateRequest }\n> => {\n const client = useMemo(\n () => new SudojoClient(networkClient, baseUrl),\n [networkClient, baseUrl],\n );\n const queryClient = useQueryClient();\n\n return useMutation({\n mutationFn: async ({\n token,\n data,\n }: {\n token: string;\n data: TechniqueCreateRequest;\n }) => {\n return client.createTechnique(token, data);\n },\n onSuccess: () => {\n queryClient.invalidateQueries({\n queryKey: [...queryKeys.sudojo.all(), \"techniques\"],\n });\n },\n });\n};\n\n/**\n * Hook to update a technique\n */\nexport const useSudojoUpdateTechnique = (\n networkClient: NetworkClient,\n baseUrl: string,\n): UseMutationResult<\n BaseResponse<Technique>,\n Error,\n { token: string; technique: number; data: TechniqueUpdateRequest }\n> => {\n const client = useMemo(\n () => new SudojoClient(networkClient, baseUrl),\n [networkClient, baseUrl],\n );\n const queryClient = useQueryClient();\n\n return useMutation({\n mutationFn: async ({\n token,\n technique,\n data,\n }: {\n token: string;\n technique: number;\n data: TechniqueUpdateRequest;\n }) => {\n return client.updateTechnique(token, technique, data);\n },\n onSuccess: (_data, variables) => {\n queryClient.invalidateQueries({\n queryKey: [...queryKeys.sudojo.all(), \"techniques\"],\n });\n queryClient.invalidateQueries({\n queryKey: queryKeys.sudojo.technique(variables.technique),\n });\n },\n });\n};\n\n/**\n * Hook to delete a technique\n */\nexport const useSudojoDeleteTechnique = (\n networkClient: NetworkClient,\n baseUrl: string,\n): UseMutationResult<\n BaseResponse<Technique>,\n Error,\n { token: string; technique: number }\n> => {\n const client = useMemo(\n () => new SudojoClient(networkClient, baseUrl),\n [networkClient, baseUrl],\n );\n const queryClient = useQueryClient();\n\n return useMutation({\n mutationFn: async ({\n token,\n technique,\n }: {\n token: string;\n technique: number;\n }) => {\n return client.deleteTechnique(token, technique);\n },\n onSuccess: (_data, variables) => {\n queryClient.invalidateQueries({\n queryKey: [...queryKeys.sudojo.all(), \"techniques\"],\n });\n queryClient.removeQueries({\n queryKey: queryKeys.sudojo.technique(variables.technique),\n });\n },\n });\n};\n"]}
1
+ {"version":3,"file":"use-sudojo-techniques.js","sourceRoot":"","sources":["../../src/hooks/use-sudojo-techniques.ts"],"names":[],"mappings":"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","sourcesContent":["/**\n * Hook for Sudojo techniques endpoints\n */\n\nimport { useCallback, useMemo } from \"react\";\nimport {\n useMutation,\n UseMutationResult,\n useQuery,\n useQueryClient,\n UseQueryOptions,\n UseQueryResult,\n} from \"@tanstack/react-query\";\nimport type { NetworkClient } from \"@sudobility/types\";\nimport type {\n BaseResponse,\n Technique,\n TechniqueCreateRequest,\n TechniqueQueryParams,\n TechniqueUpdateRequest,\n} from \"@sudobility/sudojo_types\";\nimport { queryKeys } from \"./query-keys\";\nimport { STALE_TIMES } from \"./query-config\";\nimport { SudojoClient } from \"../network/sudojo-client\";\n\n/**\n * Hook to fetch all Sudoku solving techniques, optionally filtered by level.\n *\n * Techniques are the core solving strategies (e.g., Hidden Singles, X-Wing).\n * This is a public endpoint. Results are cached with the filter parameters\n * as part of the query key, so different level filters produce separate cache entries.\n *\n * Stale time: {@link STALE_TIMES.TECHNIQUES} (10 minutes) since techniques rarely change.\n *\n * @param networkClient - Network client for making HTTP requests\n * @param baseUrl - Base URL of the Sudojo API\n * @param token - Firebase access token (optional for this public endpoint)\n * @param queryParams - Optional filter parameters (e.g., `{ level: 1 }`)\n * @param options - Additional TanStack Query options\n * @returns A UseQueryResult containing an array of Technique objects\n */\nexport const useSudojoTechniques = (\n networkClient: NetworkClient,\n baseUrl: string,\n token: string,\n queryParams?: TechniqueQueryParams,\n options?: Omit<\n UseQueryOptions<BaseResponse<Technique[]>>,\n \"queryKey\" | \"queryFn\"\n >,\n): UseQueryResult<BaseResponse<Technique[]>> => {\n const client = useMemo(\n () => new SudojoClient(networkClient, baseUrl),\n [networkClient, baseUrl],\n );\n\n const queryFn = useCallback(async (): Promise<BaseResponse<Technique[]>> => {\n return client.getTechniques(token, queryParams);\n }, [client, token, queryParams]);\n\n // Public endpoint - no token required\n const isEnabled = options?.enabled !== undefined ? options.enabled : true;\n\n return useQuery({\n queryKey: queryKeys.sudojo.techniques({\n level: queryParams?.level ?? undefined,\n }),\n queryFn,\n staleTime: STALE_TIMES.TECHNIQUES,\n ...options,\n enabled: isEnabled,\n });\n};\n\n/**\n * Hook to fetch a specific technique by its number.\n *\n * The query is automatically disabled when the technique number is less than 1.\n *\n * Stale time: {@link STALE_TIMES.TECHNIQUES} (10 minutes).\n *\n * @param networkClient - Network client for making HTTP requests\n * @param baseUrl - Base URL of the Sudojo API\n * @param token - Firebase access token\n * @param technique - Technique number (>= 1). Query is disabled if < 1.\n * @param options - Additional TanStack Query options\n * @returns A UseQueryResult containing a single Technique object\n */\nexport const useSudojoTechnique = (\n networkClient: NetworkClient,\n baseUrl: string,\n token: string,\n technique: number,\n options?: Omit<\n UseQueryOptions<BaseResponse<Technique>>,\n \"queryKey\" | \"queryFn\"\n >,\n): UseQueryResult<BaseResponse<Technique>> => {\n const client = useMemo(\n () => new SudojoClient(networkClient, baseUrl),\n [networkClient, baseUrl],\n );\n\n const queryFn = useCallback(async (): Promise<BaseResponse<Technique>> => {\n return client.getTechnique(token, technique);\n }, [client, token, technique]);\n\n // Public endpoint - no token required, but technique is required\n const isEnabled =\n technique >= 1 && (options?.enabled !== undefined ? options.enabled : true);\n\n return useQuery({\n queryKey: queryKeys.sudojo.technique(technique),\n queryFn,\n staleTime: STALE_TIMES.TECHNIQUES,\n ...options,\n enabled: isEnabled,\n });\n};\n\n/**\n * Hook to create a new technique. Requires admin authentication.\n *\n * On success, invalidates all technique list queries.\n *\n * @param networkClient - Network client for making HTTP requests\n * @param baseUrl - Base URL of the Sudojo API\n * @returns A UseMutationResult. Call `mutate({ token, data })` to execute.\n */\nexport const useSudojoCreateTechnique = (\n networkClient: NetworkClient,\n baseUrl: string,\n): UseMutationResult<\n BaseResponse<Technique>,\n Error,\n { token: string; data: TechniqueCreateRequest }\n> => {\n const client = useMemo(\n () => new SudojoClient(networkClient, baseUrl),\n [networkClient, baseUrl],\n );\n const queryClient = useQueryClient();\n\n return useMutation({\n mutationFn: async ({\n token,\n data,\n }: {\n token: string;\n data: TechniqueCreateRequest;\n }) => {\n return client.createTechnique(token, data);\n },\n onSuccess: () => {\n queryClient.invalidateQueries({\n queryKey: [...queryKeys.sudojo.all(), \"techniques\"],\n });\n },\n });\n};\n\n/**\n * Hook to update an existing technique. Requires admin authentication.\n *\n * On success, invalidates all technique list queries and the specific technique query.\n *\n * @param networkClient - Network client for making HTTP requests\n * @param baseUrl - Base URL of the Sudojo API\n * @returns A UseMutationResult. Call `mutate({ token, technique, data })` to execute.\n */\nexport const useSudojoUpdateTechnique = (\n networkClient: NetworkClient,\n baseUrl: string,\n): UseMutationResult<\n BaseResponse<Technique>,\n Error,\n { token: string; technique: number; data: TechniqueUpdateRequest }\n> => {\n const client = useMemo(\n () => new SudojoClient(networkClient, baseUrl),\n [networkClient, baseUrl],\n );\n const queryClient = useQueryClient();\n\n return useMutation({\n mutationFn: async ({\n token,\n technique,\n data,\n }: {\n token: string;\n technique: number;\n data: TechniqueUpdateRequest;\n }) => {\n return client.updateTechnique(token, technique, data);\n },\n onSuccess: (_data, variables) => {\n queryClient.invalidateQueries({\n queryKey: [...queryKeys.sudojo.all(), \"techniques\"],\n });\n queryClient.invalidateQueries({\n queryKey: queryKeys.sudojo.technique(variables.technique),\n });\n },\n });\n};\n\n/**\n * Hook to delete a technique. Requires admin authentication.\n *\n * On success, invalidates all technique list queries and removes the specific\n * technique from the query cache.\n *\n * @param networkClient - Network client for making HTTP requests\n * @param baseUrl - Base URL of the Sudojo API\n * @returns A UseMutationResult. Call `mutate({ token, technique })` to execute.\n */\nexport const useSudojoDeleteTechnique = (\n networkClient: NetworkClient,\n baseUrl: string,\n): UseMutationResult<\n BaseResponse<Technique>,\n Error,\n { token: string; technique: number }\n> => {\n const client = useMemo(\n () => new SudojoClient(networkClient, baseUrl),\n [networkClient, baseUrl],\n );\n const queryClient = useQueryClient();\n\n return useMutation({\n mutationFn: async ({\n token,\n technique,\n }: {\n token: string;\n technique: number;\n }) => {\n return client.deleteTechnique(token, technique);\n },\n onSuccess: (_data, variables) => {\n queryClient.invalidateQueries({\n queryKey: [...queryKeys.sudojo.all(), \"techniques\"],\n });\n queryClient.removeQueries({\n queryKey: queryKeys.sudojo.technique(variables.technique),\n });\n },\n });\n};\n"]}
@@ -1 +1 @@
1
- {"version":3,"file":"use-sudojo-users.d.ts","sourceRoot":"","sources":["../../src/hooks/use-sudojo-users.ts"],"names":[],"mappings":"AAKA,OAAO,EAEL,eAAe,EACf,cAAc,EACf,MAAM,uBAAuB,CAAC;AAC/B,OAAO,KAAK,EAAE,aAAa,EAAE,gBAAgB,EAAE,MAAM,mBAAmB,CAAC;AACzE,OAAO,KAAK,EACV,YAAY,EACZ,kBAAkB,EACnB,MAAM,0BAA0B,CAAC;AAWlC,eAAO,MAAM,aAAa,GACxB,eAAe,aAAa,EAC5B,SAAS,MAAM,EACf,OAAO,MAAM,EACb,QAAQ,MAAM,EACd,UAAU,IAAI,CACZ,eAAe,CAAC,YAAY,CAAC,gBAAgB,CAAC,CAAC,EAC/C,UAAU,GAAG,SAAS,CACvB,KACA,cAAc,CAAC,YAAY,CAAC,gBAAgB,CAAC,CAyB/C,CAAC;AAQF,eAAO,MAAM,yBAAyB,GACpC,eAAe,aAAa,EAC5B,SAAS,MAAM,EACf,OAAO,MAAM,EACb,QAAQ,MAAM,EACd,UAAU,IAAI,CACZ,eAAe,CAAC,YAAY,CAAC,kBAAkB,CAAC,CAAC,EACjD,UAAU,GAAG,SAAS,CACvB,KACA,cAAc,CAAC,YAAY,CAAC,kBAAkB,CAAC,CAwBjD,CAAC"}
1
+ {"version":3,"file":"use-sudojo-users.d.ts","sourceRoot":"","sources":["../../src/hooks/use-sudojo-users.ts"],"names":[],"mappings":"AAKA,OAAO,EAEL,eAAe,EACf,cAAc,EACf,MAAM,uBAAuB,CAAC;AAC/B,OAAO,KAAK,EAAE,aAAa,EAAE,gBAAgB,EAAE,MAAM,mBAAmB,CAAC;AACzE,OAAO,KAAK,EACV,YAAY,EACZ,kBAAkB,EACnB,MAAM,0BAA0B,CAAC;AAwBlC,eAAO,MAAM,aAAa,GACxB,eAAe,aAAa,EAC5B,SAAS,MAAM,EACf,OAAO,MAAM,EACb,QAAQ,MAAM,EACd,UAAU,IAAI,CACZ,eAAe,CAAC,YAAY,CAAC,gBAAgB,CAAC,CAAC,EAC/C,UAAU,GAAG,SAAS,CACvB,KACA,cAAc,CAAC,YAAY,CAAC,gBAAgB,CAAC,CAyB/C,CAAC;AAkBF,eAAO,MAAM,yBAAyB,GACpC,eAAe,aAAa,EAC5B,SAAS,MAAM,EACf,OAAO,MAAM,EACb,QAAQ,MAAM,EACd,UAAU,IAAI,CACZ,eAAe,CAAC,YAAY,CAAC,kBAAkB,CAAC,CAAC,EACjD,UAAU,GAAG,SAAS,CACvB,KACA,cAAc,CAAC,YAAY,CAAC,kBAAkB,CAAC,CAwBjD,CAAC"}
@@ -1 +1 @@
1
- {"version":3,"file":"use-sudojo-users.js","sourceRoot":"","sources":["../../src/hooks/use-sudojo-users.ts"],"names":[],"mappings":"AAIA,OAAO,EAAE,WAAW,EAAE,OAAO,EAAE,MAAM,OAAO,CAAC;AAC7C,OAAO,EACL,QAAQ,GAGT,MAAM,uBAAuB,CAAC;AAM/B,OAAO,EAAE,SAAS,EAAE,MAAM,cAAc,CAAC;AACzC,OAAO,EAAE,WAAW,EAAE,MAAM,gBAAgB,CAAC;AAC7C,OAAO,EAAE,YAAY,EAAE,MAAM,0BAA0B,CAAC;AAQxD,MAAM,CAAC,MAAM,aAAa,GAAG,CAC3B,aAA4B,EAC5B,OAAe,EACf,KAAa,EACb,MAAc,EACd,OAGC,EAC+C,EAAE;IAClD,MAAM,MAAM,GAAG,OAAO,CACpB,GAAG,EAAE,CAAC,IAAI,YAAY,CAAC,aAAa,EAAE,OAAO,CAAC,EAC9C,CAAC,aAAa,EAAE,OAAO,CAAC,CACzB,CAAC;IAEF,MAAM,OAAO,GAAG,WAAW,CAAC,KAAK,IAE/B,EAAE;QACF,OAAO,MAAM,CAAC,OAAO,CAAC,KAAK,EAAE,MAAM,CAAC,CAAC;IACvC,CAAC,EAAE,CAAC,MAAM,EAAE,KAAK,EAAE,MAAM,CAAC,CAAC,CAAC;IAE5B,MAAM,SAAS,GACb,CAAC,CAAC,MAAM;QACR,CAAC,CAAC,KAAK;QACP,CAAC,OAAO,EAAE,OAAO,KAAK,SAAS,CAAC,CAAC,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC;IAE5D,OAAO,QAAQ,CAAC;QACd,QAAQ,EAAE,SAAS,CAAC,MAAM,CAAC,IAAI,CAAC,MAAM,CAAC;QACvC,OAAO;QACP,SAAS,EAAE,WAAW,CAAC,IAAI;QAC3B,oBAAoB,EAAE,KAAK;QAC3B,GAAG,OAAO;QACV,OAAO,EAAE,SAAS;KACnB,CAAC,CAAC;AACL,CAAC,CAAC;AAQF,MAAM,CAAC,MAAM,yBAAyB,GAAG,CACvC,aAA4B,EAC5B,OAAe,EACf,KAAa,EACb,MAAc,EACd,OAGC,EACiD,EAAE;IACpD,MAAM,MAAM,GAAG,OAAO,CACpB,GAAG,EAAE,CAAC,IAAI,YAAY,CAAC,aAAa,EAAE,OAAO,CAAC,EAC9C,CAAC,aAAa,EAAE,OAAO,CAAC,CACzB,CAAC;IAEF,MAAM,OAAO,GAAG,WAAW,CAAC,KAAK,IAE/B,EAAE;QACF,OAAO,MAAM,CAAC,mBAAmB,CAAC,KAAK,EAAE,MAAM,CAAC,CAAC;IACnD,CAAC,EAAE,CAAC,MAAM,EAAE,KAAK,EAAE,MAAM,CAAC,CAAC,CAAC;IAE5B,MAAM,SAAS,GACb,CAAC,CAAC,MAAM;QACR,CAAC,CAAC,KAAK;QACP,CAAC,OAAO,EAAE,OAAO,KAAK,SAAS,CAAC,CAAC,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC;IAE5D,OAAO,QAAQ,CAAC;QACd,QAAQ,EAAE,SAAS,CAAC,MAAM,CAAC,gBAAgB,CAAC,MAAM,CAAC;QACnD,OAAO;QACP,SAAS,EAAE,WAAW,CAAC,iBAAiB;QACxC,GAAG,OAAO;QACV,OAAO,EAAE,SAAS;KACnB,CAAC,CAAC;AACL,CAAC,CAAC","sourcesContent":["/**\n * Hook for Sudojo users endpoints\n */\n\nimport { useCallback, useMemo } from \"react\";\nimport {\n useQuery,\n UseQueryOptions,\n UseQueryResult,\n} from \"@tanstack/react-query\";\nimport type { NetworkClient, UserInfoResponse } from \"@sudobility/types\";\nimport type {\n BaseResponse,\n SubscriptionResult,\n} from \"@sudobility/sudojo_types\";\nimport { queryKeys } from \"./query-keys\";\nimport { STALE_TIMES } from \"./query-config\";\nimport { SudojoClient } from \"../network/sudojo-client\";\n\n/**\n * Hook to get user info (including siteAdmin status)\n *\n * Note: This endpoint requires Firebase authentication.\n * The userId must match the authenticated user's Firebase UID.\n */\nexport const useSudojoUser = (\n networkClient: NetworkClient,\n baseUrl: string,\n token: string,\n userId: string,\n options?: Omit<\n UseQueryOptions<BaseResponse<UserInfoResponse>>,\n \"queryKey\" | \"queryFn\"\n >,\n): UseQueryResult<BaseResponse<UserInfoResponse>> => {\n const client = useMemo(\n () => new SudojoClient(networkClient, baseUrl),\n [networkClient, baseUrl],\n );\n\n const queryFn = useCallback(async (): Promise<\n BaseResponse<UserInfoResponse>\n > => {\n return client.getUser(token, userId);\n }, [client, token, userId]);\n\n const isEnabled =\n !!userId &&\n !!token &&\n (options?.enabled !== undefined ? options.enabled : true);\n\n return useQuery({\n queryKey: queryKeys.sudojo.user(userId),\n queryFn,\n staleTime: STALE_TIMES.USER,\n refetchOnWindowFocus: false,\n ...options,\n enabled: isEnabled,\n });\n};\n\n/**\n * Hook to get user subscription status\n *\n * Note: This endpoint requires Firebase authentication.\n * The userId must match the authenticated user's Firebase UID.\n */\nexport const useSudojoUserSubscription = (\n networkClient: NetworkClient,\n baseUrl: string,\n token: string,\n userId: string,\n options?: Omit<\n UseQueryOptions<BaseResponse<SubscriptionResult>>,\n \"queryKey\" | \"queryFn\"\n >,\n): UseQueryResult<BaseResponse<SubscriptionResult>> => {\n const client = useMemo(\n () => new SudojoClient(networkClient, baseUrl),\n [networkClient, baseUrl],\n );\n\n const queryFn = useCallback(async (): Promise<\n BaseResponse<SubscriptionResult>\n > => {\n return client.getUserSubscription(token, userId);\n }, [client, token, userId]);\n\n const isEnabled =\n !!userId &&\n !!token &&\n (options?.enabled !== undefined ? options.enabled : true);\n\n return useQuery({\n queryKey: queryKeys.sudojo.userSubscription(userId),\n queryFn,\n staleTime: STALE_TIMES.USER_SUBSCRIPTION,\n ...options,\n enabled: isEnabled,\n });\n};\n"]}
1
+ {"version":3,"file":"use-sudojo-users.js","sourceRoot":"","sources":["../../src/hooks/use-sudojo-users.ts"],"names":[],"mappings":"AAIA,OAAO,EAAE,WAAW,EAAE,OAAO,EAAE,MAAM,OAAO,CAAC;AAC7C,OAAO,EACL,QAAQ,GAGT,MAAM,uBAAuB,CAAC;AAM/B,OAAO,EAAE,SAAS,EAAE,MAAM,cAAc,CAAC;AACzC,OAAO,EAAE,WAAW,EAAE,MAAM,gBAAgB,CAAC;AAC7C,OAAO,EAAE,YAAY,EAAE,MAAM,0BAA0B,CAAC;AAqBxD,MAAM,CAAC,MAAM,aAAa,GAAG,CAC3B,aAA4B,EAC5B,OAAe,EACf,KAAa,EACb,MAAc,EACd,OAGC,EAC+C,EAAE;IAClD,MAAM,MAAM,GAAG,OAAO,CACpB,GAAG,EAAE,CAAC,IAAI,YAAY,CAAC,aAAa,EAAE,OAAO,CAAC,EAC9C,CAAC,aAAa,EAAE,OAAO,CAAC,CACzB,CAAC;IAEF,MAAM,OAAO,GAAG,WAAW,CAAC,KAAK,IAE/B,EAAE;QACF,OAAO,MAAM,CAAC,OAAO,CAAC,KAAK,EAAE,MAAM,CAAC,CAAC;IACvC,CAAC,EAAE,CAAC,MAAM,EAAE,KAAK,EAAE,MAAM,CAAC,CAAC,CAAC;IAE5B,MAAM,SAAS,GACb,CAAC,CAAC,MAAM;QACR,CAAC,CAAC,KAAK;QACP,CAAC,OAAO,EAAE,OAAO,KAAK,SAAS,CAAC,CAAC,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC;IAE5D,OAAO,QAAQ,CAAC;QACd,QAAQ,EAAE,SAAS,CAAC,MAAM,CAAC,IAAI,CAAC,MAAM,CAAC;QACvC,OAAO;QACP,SAAS,EAAE,WAAW,CAAC,IAAI;QAC3B,oBAAoB,EAAE,KAAK;QAC3B,GAAG,OAAO;QACV,OAAO,EAAE,SAAS;KACnB,CAAC,CAAC;AACL,CAAC,CAAC;AAkBF,MAAM,CAAC,MAAM,yBAAyB,GAAG,CACvC,aAA4B,EAC5B,OAAe,EACf,KAAa,EACb,MAAc,EACd,OAGC,EACiD,EAAE;IACpD,MAAM,MAAM,GAAG,OAAO,CACpB,GAAG,EAAE,CAAC,IAAI,YAAY,CAAC,aAAa,EAAE,OAAO,CAAC,EAC9C,CAAC,aAAa,EAAE,OAAO,CAAC,CACzB,CAAC;IAEF,MAAM,OAAO,GAAG,WAAW,CAAC,KAAK,IAE/B,EAAE;QACF,OAAO,MAAM,CAAC,mBAAmB,CAAC,KAAK,EAAE,MAAM,CAAC,CAAC;IACnD,CAAC,EAAE,CAAC,MAAM,EAAE,KAAK,EAAE,MAAM,CAAC,CAAC,CAAC;IAE5B,MAAM,SAAS,GACb,CAAC,CAAC,MAAM;QACR,CAAC,CAAC,KAAK;QACP,CAAC,OAAO,EAAE,OAAO,KAAK,SAAS,CAAC,CAAC,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC;IAE5D,OAAO,QAAQ,CAAC;QACd,QAAQ,EAAE,SAAS,CAAC,MAAM,CAAC,gBAAgB,CAAC,MAAM,CAAC;QACnD,OAAO;QACP,SAAS,EAAE,WAAW,CAAC,iBAAiB;QACxC,GAAG,OAAO;QACV,OAAO,EAAE,SAAS;KACnB,CAAC,CAAC;AACL,CAAC,CAAC","sourcesContent":["/**\n * Hook for Sudojo users endpoints\n */\n\nimport { useCallback, useMemo } from \"react\";\nimport {\n useQuery,\n UseQueryOptions,\n UseQueryResult,\n} from \"@tanstack/react-query\";\nimport type { NetworkClient, UserInfoResponse } from \"@sudobility/types\";\nimport type {\n BaseResponse,\n SubscriptionResult,\n} from \"@sudobility/sudojo_types\";\nimport { queryKeys } from \"./query-keys\";\nimport { STALE_TIMES } from \"./query-config\";\nimport { SudojoClient } from \"../network/sudojo-client\";\n\n/**\n * Hook to fetch user info including admin status.\n *\n * **Requires Firebase authentication.** The userId must match the\n * authenticated user's Firebase UID. The query is automatically disabled\n * when either token or userId is empty.\n *\n * Disables `refetchOnWindowFocus` to avoid unnecessary refetches since\n * admin status rarely changes.\n *\n * Stale time: {@link STALE_TIMES.USER} (5 minutes).\n *\n * @param networkClient - Network client for making HTTP requests\n * @param baseUrl - Base URL of the Sudojo API\n * @param token - Firebase access token (required)\n * @param userId - Firebase UID of the user to query\n * @param options - Additional TanStack Query options\n * @returns A UseQueryResult containing the UserInfoResponse\n */\nexport const useSudojoUser = (\n networkClient: NetworkClient,\n baseUrl: string,\n token: string,\n userId: string,\n options?: Omit<\n UseQueryOptions<BaseResponse<UserInfoResponse>>,\n \"queryKey\" | \"queryFn\"\n >,\n): UseQueryResult<BaseResponse<UserInfoResponse>> => {\n const client = useMemo(\n () => new SudojoClient(networkClient, baseUrl),\n [networkClient, baseUrl],\n );\n\n const queryFn = useCallback(async (): Promise<\n BaseResponse<UserInfoResponse>\n > => {\n return client.getUser(token, userId);\n }, [client, token, userId]);\n\n const isEnabled =\n !!userId &&\n !!token &&\n (options?.enabled !== undefined ? options.enabled : true);\n\n return useQuery({\n queryKey: queryKeys.sudojo.user(userId),\n queryFn,\n staleTime: STALE_TIMES.USER,\n refetchOnWindowFocus: false,\n ...options,\n enabled: isEnabled,\n });\n};\n\n/**\n * Hook to fetch user subscription status (via RevenueCat integration).\n *\n * **Requires Firebase authentication.** The query is automatically disabled\n * when either token or userId is empty. Uses a shorter stale time since\n * subscription status may change via in-app purchase flows.\n *\n * Stale time: {@link STALE_TIMES.USER_SUBSCRIPTION} (2 minutes).\n *\n * @param networkClient - Network client for making HTTP requests\n * @param baseUrl - Base URL of the Sudojo API\n * @param token - Firebase access token (required)\n * @param userId - Firebase UID of the user to query\n * @param options - Additional TanStack Query options\n * @returns A UseQueryResult containing the SubscriptionResult\n */\nexport const useSudojoUserSubscription = (\n networkClient: NetworkClient,\n baseUrl: string,\n token: string,\n userId: string,\n options?: Omit<\n UseQueryOptions<BaseResponse<SubscriptionResult>>,\n \"queryKey\" | \"queryFn\"\n >,\n): UseQueryResult<BaseResponse<SubscriptionResult>> => {\n const client = useMemo(\n () => new SudojoClient(networkClient, baseUrl),\n [networkClient, baseUrl],\n );\n\n const queryFn = useCallback(async (): Promise<\n BaseResponse<SubscriptionResult>\n > => {\n return client.getUserSubscription(token, userId);\n }, [client, token, userId]);\n\n const isEnabled =\n !!userId &&\n !!token &&\n (options?.enabled !== undefined ? options.enabled : true);\n\n return useQuery({\n queryKey: queryKeys.sudojo.userSubscription(userId),\n queryFn,\n staleTime: STALE_TIMES.USER_SUBSCRIPTION,\n ...options,\n enabled: isEnabled,\n });\n};\n"]}
package/dist/index.d.ts CHANGED
@@ -1,7 +1,7 @@
1
1
  export { createSudojoClient, isValidUUID, SudojoClient, validateUUID, } from "./network";
2
2
  export type { GenerateOptions, SolveOptions, ValidateOptions } from "./network";
3
3
  export { HintAccessDeniedError } from "./errors";
4
- export { createQueryKey, getServiceKeys, queryKeys, STALE_TIMES, useSudojoHealth, useSudojoCreateLevel, useSudojoDeleteLevel, useSudojoLevel, useSudojoLevels, useSudojoUpdateLevel, useSudojoCreateTechnique, useSudojoDeleteTechnique, useSudojoTechnique, useSudojoTechniques, useSudojoUpdateTechnique, useSudojoCreateLearning, useSudojoDeleteLearning, useSudojoLearning, useSudojoLearningItem, useSudojoUpdateLearning, useSudojoBoard, useSudojoBoards, useSudojoCreateBoard, useSudojoDeleteBoard, useSudojoRandomBoard, useSudojoUpdateBoard, useSudojoCreateDaily, useSudojoDailies, useSudojoDaily, useSudojoDailyByDate, useSudojoDeleteDaily, useSudojoRandomDaily, useSudojoTodayDaily, useSudojoUpdateDaily, useSudojoChallenge, useSudojoChallenges, useSudojoCreateChallenge, useSudojoDeleteChallenge, useSudojoRandomChallenge, useSudojoUpdateChallenge, useSudojoUser, useSudojoUserSubscription, useSudojoCreatePractice, useSudojoDeleteAllPractices, useSudojoPracticeCounts, useSudojoRandomPractice, useSudojoBadgeDefinitions, useSudojoGamificationStats, useSudojoPlayFinish, useSudojoPlayStart, useSudojoPointHistory, } from "./hooks";
4
+ export { createQueryKey, getServiceKeys, queryKeys, STALE_TIMES, useSudojoHealth, useSudojoCreateLevel, useSudojoDeleteLevel, useSudojoLevel, useSudojoLevels, useSudojoUpdateLevel, useSudojoCreateTechnique, useSudojoDeleteTechnique, useSudojoTechnique, useSudojoTechniques, useSudojoUpdateTechnique, useSudojoCreateLearning, useSudojoDeleteLearning, useSudojoLearning, useSudojoLearningItem, useSudojoUpdateLearning, useSudojoBoard, useSudojoBoards, useSudojoCreateBoard, useSudojoDeleteBoard, useSudojoRandomBoard, useSudojoUpdateBoard, useSudojoCreateDaily, useSudojoDailies, useSudojoDaily, useSudojoDailyByDate, useSudojoDeleteDaily, useSudojoRandomDaily, useSudojoTodayDaily, useSudojoUpdateDaily, useSudojoChallenge, useSudojoChallenges, useSudojoCreateChallenge, useSudojoDeleteChallenge, useSudojoRandomChallenge, useSudojoUpdateChallenge, useSudojoUser, useSudojoUserSubscription, useSudojoCreatePractice, useSudojoDeleteAllPractices, useSudojoPracticeCounts, useSudojoRandomPractice, useSudojoBadgeDefinitions, useSudojoGamificationStats, useSudojoPlayFinish, useSudojoPlayStart, useSudojoPointHistory, useSudojoInvalidation, } from "./hooks";
5
5
  export type { QueryKey } from "./hooks";
6
6
  export { getSolverServiceKeys, solverQueryKeys, SOLVER_STALE_TIMES, useSolverGenerate, useSolverSolve, useSolverValidate, } from "./solver";
7
7
  //# sourceMappingURL=index.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AACA,OAAO,EACL,kBAAkB,EAClB,WAAW,EACX,YAAY,EACZ,YAAY,GACb,MAAM,WAAW,CAAC;AACnB,YAAY,EAAE,eAAe,EAAE,YAAY,EAAE,eAAe,EAAE,MAAM,WAAW,CAAC;AAGhF,OAAO,EAAE,qBAAqB,EAAE,MAAM,UAAU,CAAC;AAGjD,OAAO,EAEL,cAAc,EACd,cAAc,EACd,SAAS,EACT,WAAW,EAEX,eAAe,EAEf,oBAAoB,EACpB,oBAAoB,EACpB,cAAc,EACd,eAAe,EACf,oBAAoB,EAEpB,wBAAwB,EACxB,wBAAwB,EACxB,kBAAkB,EAClB,mBAAmB,EACnB,wBAAwB,EAExB,uBAAuB,EACvB,uBAAuB,EACvB,iBAAiB,EACjB,qBAAqB,EACrB,uBAAuB,EAEvB,cAAc,EACd,eAAe,EACf,oBAAoB,EACpB,oBAAoB,EACpB,oBAAoB,EACpB,oBAAoB,EAEpB,oBAAoB,EACpB,gBAAgB,EAChB,cAAc,EACd,oBAAoB,EACpB,oBAAoB,EACpB,oBAAoB,EACpB,mBAAmB,EACnB,oBAAoB,EAEpB,kBAAkB,EAClB,mBAAmB,EACnB,wBAAwB,EACxB,wBAAwB,EACxB,wBAAwB,EACxB,wBAAwB,EAExB,aAAa,EACb,yBAAyB,EAEzB,uBAAuB,EACvB,2BAA2B,EAC3B,uBAAuB,EACvB,uBAAuB,EAEvB,yBAAyB,EACzB,0BAA0B,EAC1B,mBAAmB,EACnB,kBAAkB,EAClB,qBAAqB,GACtB,MAAM,SAAS,CAAC;AACjB,YAAY,EAAE,QAAQ,EAAE,MAAM,SAAS,CAAC;AAGxC,OAAO,EACL,oBAAoB,EACpB,eAAe,EACf,kBAAkB,EAClB,iBAAiB,EACjB,cAAc,EACd,iBAAiB,GAClB,MAAM,UAAU,CAAC"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AACA,OAAO,EACL,kBAAkB,EAClB,WAAW,EACX,YAAY,EACZ,YAAY,GACb,MAAM,WAAW,CAAC;AACnB,YAAY,EAAE,eAAe,EAAE,YAAY,EAAE,eAAe,EAAE,MAAM,WAAW,CAAC;AAGhF,OAAO,EAAE,qBAAqB,EAAE,MAAM,UAAU,CAAC;AAGjD,OAAO,EAEL,cAAc,EACd,cAAc,EACd,SAAS,EACT,WAAW,EAEX,eAAe,EAEf,oBAAoB,EACpB,oBAAoB,EACpB,cAAc,EACd,eAAe,EACf,oBAAoB,EAEpB,wBAAwB,EACxB,wBAAwB,EACxB,kBAAkB,EAClB,mBAAmB,EACnB,wBAAwB,EAExB,uBAAuB,EACvB,uBAAuB,EACvB,iBAAiB,EACjB,qBAAqB,EACrB,uBAAuB,EAEvB,cAAc,EACd,eAAe,EACf,oBAAoB,EACpB,oBAAoB,EACpB,oBAAoB,EACpB,oBAAoB,EAEpB,oBAAoB,EACpB,gBAAgB,EAChB,cAAc,EACd,oBAAoB,EACpB,oBAAoB,EACpB,oBAAoB,EACpB,mBAAmB,EACnB,oBAAoB,EAEpB,kBAAkB,EAClB,mBAAmB,EACnB,wBAAwB,EACxB,wBAAwB,EACxB,wBAAwB,EACxB,wBAAwB,EAExB,aAAa,EACb,yBAAyB,EAEzB,uBAAuB,EACvB,2BAA2B,EAC3B,uBAAuB,EACvB,uBAAuB,EAEvB,yBAAyB,EACzB,0BAA0B,EAC1B,mBAAmB,EACnB,kBAAkB,EAClB,qBAAqB,EAErB,qBAAqB,GACtB,MAAM,SAAS,CAAC;AACjB,YAAY,EAAE,QAAQ,EAAE,MAAM,SAAS,CAAC;AAGxC,OAAO,EACL,oBAAoB,EACpB,eAAe,EACf,kBAAkB,EAClB,iBAAiB,EACjB,cAAc,EACd,iBAAiB,GAClB,MAAM,UAAU,CAAC"}
package/dist/index.js CHANGED
@@ -1,5 +1,5 @@
1
1
  export { createSudojoClient, isValidUUID, SudojoClient, validateUUID, } from "./network";
2
2
  export { HintAccessDeniedError } from "./errors";
3
- export { createQueryKey, getServiceKeys, queryKeys, STALE_TIMES, useSudojoHealth, useSudojoCreateLevel, useSudojoDeleteLevel, useSudojoLevel, useSudojoLevels, useSudojoUpdateLevel, useSudojoCreateTechnique, useSudojoDeleteTechnique, useSudojoTechnique, useSudojoTechniques, useSudojoUpdateTechnique, useSudojoCreateLearning, useSudojoDeleteLearning, useSudojoLearning, useSudojoLearningItem, useSudojoUpdateLearning, useSudojoBoard, useSudojoBoards, useSudojoCreateBoard, useSudojoDeleteBoard, useSudojoRandomBoard, useSudojoUpdateBoard, useSudojoCreateDaily, useSudojoDailies, useSudojoDaily, useSudojoDailyByDate, useSudojoDeleteDaily, useSudojoRandomDaily, useSudojoTodayDaily, useSudojoUpdateDaily, useSudojoChallenge, useSudojoChallenges, useSudojoCreateChallenge, useSudojoDeleteChallenge, useSudojoRandomChallenge, useSudojoUpdateChallenge, useSudojoUser, useSudojoUserSubscription, useSudojoCreatePractice, useSudojoDeleteAllPractices, useSudojoPracticeCounts, useSudojoRandomPractice, useSudojoBadgeDefinitions, useSudojoGamificationStats, useSudojoPlayFinish, useSudojoPlayStart, useSudojoPointHistory, } from "./hooks";
3
+ export { createQueryKey, getServiceKeys, queryKeys, STALE_TIMES, useSudojoHealth, useSudojoCreateLevel, useSudojoDeleteLevel, useSudojoLevel, useSudojoLevels, useSudojoUpdateLevel, useSudojoCreateTechnique, useSudojoDeleteTechnique, useSudojoTechnique, useSudojoTechniques, useSudojoUpdateTechnique, useSudojoCreateLearning, useSudojoDeleteLearning, useSudojoLearning, useSudojoLearningItem, useSudojoUpdateLearning, useSudojoBoard, useSudojoBoards, useSudojoCreateBoard, useSudojoDeleteBoard, useSudojoRandomBoard, useSudojoUpdateBoard, useSudojoCreateDaily, useSudojoDailies, useSudojoDaily, useSudojoDailyByDate, useSudojoDeleteDaily, useSudojoRandomDaily, useSudojoTodayDaily, useSudojoUpdateDaily, useSudojoChallenge, useSudojoChallenges, useSudojoCreateChallenge, useSudojoDeleteChallenge, useSudojoRandomChallenge, useSudojoUpdateChallenge, useSudojoUser, useSudojoUserSubscription, useSudojoCreatePractice, useSudojoDeleteAllPractices, useSudojoPracticeCounts, useSudojoRandomPractice, useSudojoBadgeDefinitions, useSudojoGamificationStats, useSudojoPlayFinish, useSudojoPlayStart, useSudojoPointHistory, useSudojoInvalidation, } from "./hooks";
4
4
  export { getSolverServiceKeys, solverQueryKeys, SOLVER_STALE_TIMES, useSolverGenerate, useSolverSolve, useSolverValidate, } from "./solver";
5
5
  //# sourceMappingURL=index.js.map
package/dist/index.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AACA,OAAO,EACL,kBAAkB,EAClB,WAAW,EACX,YAAY,EACZ,YAAY,GACb,MAAM,WAAW,CAAC;AAInB,OAAO,EAAE,qBAAqB,EAAE,MAAM,UAAU,CAAC;AAGjD,OAAO,EAEL,cAAc,EACd,cAAc,EACd,SAAS,EACT,WAAW,EAEX,eAAe,EAEf,oBAAoB,EACpB,oBAAoB,EACpB,cAAc,EACd,eAAe,EACf,oBAAoB,EAEpB,wBAAwB,EACxB,wBAAwB,EACxB,kBAAkB,EAClB,mBAAmB,EACnB,wBAAwB,EAExB,uBAAuB,EACvB,uBAAuB,EACvB,iBAAiB,EACjB,qBAAqB,EACrB,uBAAuB,EAEvB,cAAc,EACd,eAAe,EACf,oBAAoB,EACpB,oBAAoB,EACpB,oBAAoB,EACpB,oBAAoB,EAEpB,oBAAoB,EACpB,gBAAgB,EAChB,cAAc,EACd,oBAAoB,EACpB,oBAAoB,EACpB,oBAAoB,EACpB,mBAAmB,EACnB,oBAAoB,EAEpB,kBAAkB,EAClB,mBAAmB,EACnB,wBAAwB,EACxB,wBAAwB,EACxB,wBAAwB,EACxB,wBAAwB,EAExB,aAAa,EACb,yBAAyB,EAEzB,uBAAuB,EACvB,2BAA2B,EAC3B,uBAAuB,EACvB,uBAAuB,EAEvB,yBAAyB,EACzB,0BAA0B,EAC1B,mBAAmB,EACnB,kBAAkB,EAClB,qBAAqB,GACtB,MAAM,SAAS,CAAC;AAIjB,OAAO,EACL,oBAAoB,EACpB,eAAe,EACf,kBAAkB,EAClB,iBAAiB,EACjB,cAAc,EACd,iBAAiB,GAClB,MAAM,UAAU,CAAC","sourcesContent":["// Main library exports\nexport {\n createSudojoClient,\n isValidUUID,\n SudojoClient,\n validateUUID,\n} from \"./network\";\nexport type { GenerateOptions, SolveOptions, ValidateOptions } from \"./network\";\n\n// Errors\nexport { HintAccessDeniedError } from \"./errors\";\n\n// React hooks\nexport {\n // Query utilities\n createQueryKey,\n getServiceKeys,\n queryKeys,\n STALE_TIMES,\n // Health\n useSudojoHealth,\n // Levels\n useSudojoCreateLevel,\n useSudojoDeleteLevel,\n useSudojoLevel,\n useSudojoLevels,\n useSudojoUpdateLevel,\n // Techniques\n useSudojoCreateTechnique,\n useSudojoDeleteTechnique,\n useSudojoTechnique,\n useSudojoTechniques,\n useSudojoUpdateTechnique,\n // Learning\n useSudojoCreateLearning,\n useSudojoDeleteLearning,\n useSudojoLearning,\n useSudojoLearningItem,\n useSudojoUpdateLearning,\n // Boards\n useSudojoBoard,\n useSudojoBoards,\n useSudojoCreateBoard,\n useSudojoDeleteBoard,\n useSudojoRandomBoard,\n useSudojoUpdateBoard,\n // Dailies\n useSudojoCreateDaily,\n useSudojoDailies,\n useSudojoDaily,\n useSudojoDailyByDate,\n useSudojoDeleteDaily,\n useSudojoRandomDaily,\n useSudojoTodayDaily,\n useSudojoUpdateDaily,\n // Challenges\n useSudojoChallenge,\n useSudojoChallenges,\n useSudojoCreateChallenge,\n useSudojoDeleteChallenge,\n useSudojoRandomChallenge,\n useSudojoUpdateChallenge,\n // Users\n useSudojoUser,\n useSudojoUserSubscription,\n // Practices\n useSudojoCreatePractice,\n useSudojoDeleteAllPractices,\n useSudojoPracticeCounts,\n useSudojoRandomPractice,\n // Gamification\n useSudojoBadgeDefinitions,\n useSudojoGamificationStats,\n useSudojoPlayFinish,\n useSudojoPlayStart,\n useSudojoPointHistory,\n} from \"./hooks\";\nexport type { QueryKey } from \"./hooks\";\n\n// Solver hooks\nexport {\n getSolverServiceKeys,\n solverQueryKeys,\n SOLVER_STALE_TIMES,\n useSolverGenerate,\n useSolverSolve,\n useSolverValidate,\n} from \"./solver\";\n"]}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AACA,OAAO,EACL,kBAAkB,EAClB,WAAW,EACX,YAAY,EACZ,YAAY,GACb,MAAM,WAAW,CAAC;AAInB,OAAO,EAAE,qBAAqB,EAAE,MAAM,UAAU,CAAC;AAGjD,OAAO,EAEL,cAAc,EACd,cAAc,EACd,SAAS,EACT,WAAW,EAEX,eAAe,EAEf,oBAAoB,EACpB,oBAAoB,EACpB,cAAc,EACd,eAAe,EACf,oBAAoB,EAEpB,wBAAwB,EACxB,wBAAwB,EACxB,kBAAkB,EAClB,mBAAmB,EACnB,wBAAwB,EAExB,uBAAuB,EACvB,uBAAuB,EACvB,iBAAiB,EACjB,qBAAqB,EACrB,uBAAuB,EAEvB,cAAc,EACd,eAAe,EACf,oBAAoB,EACpB,oBAAoB,EACpB,oBAAoB,EACpB,oBAAoB,EAEpB,oBAAoB,EACpB,gBAAgB,EAChB,cAAc,EACd,oBAAoB,EACpB,oBAAoB,EACpB,oBAAoB,EACpB,mBAAmB,EACnB,oBAAoB,EAEpB,kBAAkB,EAClB,mBAAmB,EACnB,wBAAwB,EACxB,wBAAwB,EACxB,wBAAwB,EACxB,wBAAwB,EAExB,aAAa,EACb,yBAAyB,EAEzB,uBAAuB,EACvB,2BAA2B,EAC3B,uBAAuB,EACvB,uBAAuB,EAEvB,yBAAyB,EACzB,0BAA0B,EAC1B,mBAAmB,EACnB,kBAAkB,EAClB,qBAAqB,EAErB,qBAAqB,GACtB,MAAM,SAAS,CAAC;AAIjB,OAAO,EACL,oBAAoB,EACpB,eAAe,EACf,kBAAkB,EAClB,iBAAiB,EACjB,cAAc,EACd,iBAAiB,GAClB,MAAM,UAAU,CAAC","sourcesContent":["// Main library exports\nexport {\n createSudojoClient,\n isValidUUID,\n SudojoClient,\n validateUUID,\n} from \"./network\";\nexport type { GenerateOptions, SolveOptions, ValidateOptions } from \"./network\";\n\n// Errors\nexport { HintAccessDeniedError } from \"./errors\";\n\n// React hooks\nexport {\n // Query utilities\n createQueryKey,\n getServiceKeys,\n queryKeys,\n STALE_TIMES,\n // Health\n useSudojoHealth,\n // Levels\n useSudojoCreateLevel,\n useSudojoDeleteLevel,\n useSudojoLevel,\n useSudojoLevels,\n useSudojoUpdateLevel,\n // Techniques\n useSudojoCreateTechnique,\n useSudojoDeleteTechnique,\n useSudojoTechnique,\n useSudojoTechniques,\n useSudojoUpdateTechnique,\n // Learning\n useSudojoCreateLearning,\n useSudojoDeleteLearning,\n useSudojoLearning,\n useSudojoLearningItem,\n useSudojoUpdateLearning,\n // Boards\n useSudojoBoard,\n useSudojoBoards,\n useSudojoCreateBoard,\n useSudojoDeleteBoard,\n useSudojoRandomBoard,\n useSudojoUpdateBoard,\n // Dailies\n useSudojoCreateDaily,\n useSudojoDailies,\n useSudojoDaily,\n useSudojoDailyByDate,\n useSudojoDeleteDaily,\n useSudojoRandomDaily,\n useSudojoTodayDaily,\n useSudojoUpdateDaily,\n // Challenges\n useSudojoChallenge,\n useSudojoChallenges,\n useSudojoCreateChallenge,\n useSudojoDeleteChallenge,\n useSudojoRandomChallenge,\n useSudojoUpdateChallenge,\n // Users\n useSudojoUser,\n useSudojoUserSubscription,\n // Practices\n useSudojoCreatePractice,\n useSudojoDeleteAllPractices,\n useSudojoPracticeCounts,\n useSudojoRandomPractice,\n // Gamification\n useSudojoBadgeDefinitions,\n useSudojoGamificationStats,\n useSudojoPlayFinish,\n useSudojoPlayStart,\n useSudojoPointHistory,\n // Invalidation utilities\n useSudojoInvalidation,\n} from \"./hooks\";\nexport type { QueryKey } from \"./hooks\";\n\n// Solver hooks\nexport {\n getSolverServiceKeys,\n solverQueryKeys,\n SOLVER_STALE_TIMES,\n useSolverGenerate,\n useSolverSolve,\n useSolverValidate,\n} from \"./solver\";\n"]}
@@ -1 +1 @@
1
- {"version":3,"file":"sudojo-client.d.ts","sourceRoot":"","sources":["../../src/network/sudojo-client.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"sudojo-client.d.ts","sourceRoot":"","sources":["../../src/network/sudojo-client.ts"],"names":[],"mappings":"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"}