@sudobility/testomniac_client 0.0.22 → 0.0.23

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/dist/index.d.ts CHANGED
@@ -1,5 +1,4 @@
1
1
  export * from './network';
2
- export * from './hooks';
3
2
  export * from './utils';
4
3
  export { type FirebaseIdToken, QUERY_KEYS, DEFAULT_STALE_TIME, DEFAULT_GC_TIME, } from './types';
5
4
  //# sourceMappingURL=index.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,cAAc,WAAW,CAAC;AAC1B,cAAc,SAAS,CAAC;AACxB,cAAc,SAAS,CAAC;AACxB,OAAO,EACL,KAAK,eAAe,EACpB,UAAU,EACV,kBAAkB,EAClB,eAAe,GAChB,MAAM,SAAS,CAAC"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,cAAc,WAAW,CAAC;AAC1B,cAAc,SAAS,CAAC;AACxB,OAAO,EACL,KAAK,eAAe,EACpB,UAAU,EACV,kBAAkB,EAClB,eAAe,GAChB,MAAM,SAAS,CAAC"}
package/dist/index.js CHANGED
@@ -1,5 +1,4 @@
1
1
  export * from './network';
2
- export * from './hooks';
3
2
  export * from './utils';
4
3
  export { QUERY_KEYS, DEFAULT_STALE_TIME, DEFAULT_GC_TIME, } from './types';
5
4
  //# 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":"AAAA,cAAc,WAAW,CAAC;AAC1B,cAAc,SAAS,CAAC;AACxB,cAAc,SAAS,CAAC;AACxB,OAAO,EAEL,UAAU,EACV,kBAAkB,EAClB,eAAe,GAChB,MAAM,SAAS,CAAC"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,cAAc,WAAW,CAAC;AAC1B,cAAc,SAAS,CAAC;AACxB,OAAO,EAEL,UAAU,EACV,kBAAkB,EAClB,eAAe,GAChB,MAAM,SAAS,CAAC"}
@@ -0,0 +1,13 @@
1
+ import type { NetworkClient } from '@sudobility/types';
2
+ import type { BaseResponse, User } from '@sudobility/testomniac_types';
3
+ import type { FirebaseIdToken } from '../types';
4
+ export declare class TestomniacClient {
5
+ private readonly baseUrl;
6
+ private readonly networkClient;
7
+ constructor(config: {
8
+ baseUrl: string;
9
+ networkClient: NetworkClient;
10
+ });
11
+ getUser(userId: string, token: FirebaseIdToken): Promise<BaseResponse<User>>;
12
+ }
13
+ //# sourceMappingURL=TestomniacClient.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"TestomniacClient.d.ts","sourceRoot":"","sources":["../../src/network/TestomniacClient.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,mBAAmB,CAAC;AACvD,OAAO,KAAK,EAAE,YAAY,EAAE,IAAI,EAAE,MAAM,8BAA8B,CAAC;AACvE,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,UAAU,CAAC;AAoDhD,qBAAa,gBAAgB;IAC3B,OAAO,CAAC,QAAQ,CAAC,OAAO,CAAS;IACjC,OAAO,CAAC,QAAQ,CAAC,aAAa,CAAgB;gBASlC,MAAM,EAAE;QAAE,OAAO,EAAE,MAAM,CAAC;QAAC,aAAa,EAAE,aAAa,CAAA;KAAE;IAuB/D,OAAO,CACX,MAAM,EAAE,MAAM,EACd,KAAK,EAAE,eAAe,GACrB,OAAO,CAAC,YAAY,CAAC,IAAI,CAAC,CAAC;CAO/B"}
@@ -0,0 +1,24 @@
1
+ import { buildUrl, createAuthHeaders } from '../utils/starter-helpers';
2
+ function validateResponse(data, operation) {
3
+ if (data != null &&
4
+ typeof data === 'object' &&
5
+ 'success' in data &&
6
+ typeof data.success === 'boolean') {
7
+ return data;
8
+ }
9
+ throw new Error(`Invalid API response for ${operation}: response does not match expected BaseResponse shape`);
10
+ }
11
+ export class TestomniacClient {
12
+ constructor(config) {
13
+ this.baseUrl = config.baseUrl;
14
+ this.networkClient = config.networkClient;
15
+ }
16
+ async getUser(userId, token) {
17
+ const url = buildUrl(this.baseUrl, `/api/v1/users/${userId}`);
18
+ const response = await this.networkClient.get(url, {
19
+ headers: createAuthHeaders(token),
20
+ });
21
+ return validateResponse(response.data, 'getUser');
22
+ }
23
+ }
24
+ //# sourceMappingURL=TestomniacClient.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"TestomniacClient.js","sourceRoot":"","sources":["../../src/network/TestomniacClient.ts"],"names":[],"mappings":"AAGA,OAAO,EAAE,QAAQ,EAAE,iBAAiB,EAAE,MAAM,0BAA0B,CAAC;AAevE,SAAS,gBAAgB,CACvB,IAAa,EACb,SAAiB;IAEjB,IACE,IAAI,IAAI,IAAI;QACZ,OAAO,IAAI,KAAK,QAAQ;QACxB,SAAS,IAAI,IAAI;QACjB,OAAQ,IAAgC,CAAC,OAAO,KAAK,SAAS,EAC9D,CAAC;QACD,OAAO,IAAuB,CAAC;IACjC,CAAC;IACD,MAAM,IAAI,KAAK,CACb,4BAA4B,SAAS,uDAAuD,CAC7F,CAAC;AACJ,CAAC;AAqBD,MAAM,OAAO,gBAAgB;IAW3B,YAAY,MAAyD;QACnE,IAAI,CAAC,OAAO,GAAG,MAAM,CAAC,OAAO,CAAC;QAC9B,IAAI,CAAC,aAAa,GAAG,MAAM,CAAC,aAAa,CAAC;IAC5C,CAAC;IAoBD,KAAK,CAAC,OAAO,CACX,MAAc,EACd,KAAsB;QAEtB,MAAM,GAAG,GAAG,QAAQ,CAAC,IAAI,CAAC,OAAO,EAAE,iBAAiB,MAAM,EAAE,CAAC,CAAC;QAC9D,MAAM,QAAQ,GAAG,MAAM,IAAI,CAAC,aAAa,CAAC,GAAG,CAAC,GAAG,EAAE;YACjD,OAAO,EAAE,iBAAiB,CAAC,KAAK,CAAC;SAClC,CAAC,CAAC;QACH,OAAO,gBAAgB,CAAO,QAAQ,CAAC,IAAI,EAAE,SAAS,CAAC,CAAC;IAC1D,CAAC;CACF"}
@@ -1,2 +1,2 @@
1
- export { StarterClient } from './StarterClient';
1
+ export { TestomniacClient } from './TestomniacClient';
2
2
  //# sourceMappingURL=index.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/network/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,aAAa,EAAE,MAAM,iBAAiB,CAAC"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/network/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,gBAAgB,EAAE,MAAM,oBAAoB,CAAC"}
@@ -1,2 +1,2 @@
1
- export { StarterClient } from './StarterClient';
1
+ export { TestomniacClient } from './TestomniacClient';
2
2
  //# sourceMappingURL=index.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/network/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,aAAa,EAAE,MAAM,iBAAiB,CAAC"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/network/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,gBAAgB,EAAE,MAAM,oBAAoB,CAAC"}
package/dist/types.d.ts CHANGED
@@ -2,8 +2,6 @@ export type FirebaseIdToken = string;
2
2
  export declare const DEFAULT_STALE_TIME: number;
3
3
  export declare const DEFAULT_GC_TIME: number;
4
4
  export declare const QUERY_KEYS: {
5
- readonly histories: (entitySlug: string) => readonly ["starter", "histories", string];
6
- readonly historiesTotal: () => readonly ["starter", "histories", "total"];
7
5
  readonly user: (userId: string) => readonly ["starter", "user", string];
8
6
  };
9
7
  //# sourceMappingURL=types.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../src/types.ts"],"names":[],"mappings":"AAOA,MAAM,MAAM,eAAe,GAAG,MAAM,CAAC;AAQrC,eAAO,MAAM,kBAAkB,QAAgB,CAAC;AAShD,eAAO,MAAM,eAAe,QAAiB,CAAC;AAmB9C,eAAO,MAAM,UAAU;qCAEG,MAAM;;4BAKf,MAAM;CACb,CAAC"}
1
+ {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../src/types.ts"],"names":[],"mappings":"AAOA,MAAM,MAAM,eAAe,GAAG,MAAM,CAAC;AAQrC,eAAO,MAAM,kBAAkB,QAAgB,CAAC;AAShD,eAAO,MAAM,eAAe,QAAiB,CAAC;AAgB9C,eAAO,MAAM,UAAU;4BAEN,MAAM;CACb,CAAC"}
package/dist/types.js CHANGED
@@ -1,8 +1,6 @@
1
1
  export const DEFAULT_STALE_TIME = 5 * 60 * 1000;
2
2
  export const DEFAULT_GC_TIME = 30 * 60 * 1000;
3
3
  export const QUERY_KEYS = {
4
- histories: (entitySlug) => ['starter', 'histories', entitySlug],
5
- historiesTotal: () => ['starter', 'histories', 'total'],
6
4
  user: (userId) => ['starter', 'user', userId],
7
5
  };
8
6
  //# sourceMappingURL=types.js.map
package/dist/types.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"types.js","sourceRoot":"","sources":["../src/types.ts"],"names":[],"mappings":"AAeA,MAAM,CAAC,MAAM,kBAAkB,GAAG,CAAC,GAAG,EAAE,GAAG,IAAI,CAAC;AAShD,MAAM,CAAC,MAAM,eAAe,GAAG,EAAE,GAAG,EAAE,GAAG,IAAI,CAAC;AAmB9C,MAAM,CAAC,MAAM,UAAU,GAAG;IAExB,SAAS,EAAE,CAAC,UAAkB,EAAE,EAAE,CAChC,CAAC,SAAS,EAAE,WAAW,EAAE,UAAU,CAAU;IAE/C,cAAc,EAAE,GAAG,EAAE,CAAC,CAAC,SAAS,EAAE,WAAW,EAAE,OAAO,CAAU;IAEhE,IAAI,EAAE,CAAC,MAAc,EAAE,EAAE,CAAC,CAAC,SAAS,EAAE,MAAM,EAAE,MAAM,CAAU;CACtD,CAAC"}
1
+ {"version":3,"file":"types.js","sourceRoot":"","sources":["../src/types.ts"],"names":[],"mappings":"AAeA,MAAM,CAAC,MAAM,kBAAkB,GAAG,CAAC,GAAG,EAAE,GAAG,IAAI,CAAC;AAShD,MAAM,CAAC,MAAM,eAAe,GAAG,EAAE,GAAG,EAAE,GAAG,IAAI,CAAC;AAgB9C,MAAM,CAAC,MAAM,UAAU,GAAG;IAExB,IAAI,EAAE,CAAC,MAAc,EAAE,EAAE,CAAC,CAAC,SAAS,EAAE,MAAM,EAAE,MAAM,CAAU;CACtD,CAAC"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@sudobility/testomniac_client",
3
- "version": "0.0.22",
3
+ "version": "0.0.23",
4
4
  "description": "Testomniac API client library with TanStack Query hooks",
5
5
  "type": "module",
6
6
  "main": "dist/index.js",
@@ -40,7 +40,7 @@
40
40
  "react": ">=18.0.0"
41
41
  },
42
42
  "devDependencies": {
43
- "@sudobility/testomniac_types": "^0.0.20",
43
+ "@sudobility/testomniac_types": "^0.0.21",
44
44
  "@sudobility/types": "^1.9.61",
45
45
  "@tanstack/react-query": "^5.90.5",
46
46
  "@types/react": "^19.2.2",
@@ -1,3 +0,0 @@
1
- export { useHistories, type UseHistoriesReturn } from './useHistories';
2
- export { useHistoriesTotal, type UseHistoriesTotalReturn, } from './useHistoriesTotal';
3
- //# sourceMappingURL=index.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/hooks/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,YAAY,EAAE,KAAK,kBAAkB,EAAE,MAAM,gBAAgB,CAAC;AACvE,OAAO,EACL,iBAAiB,EACjB,KAAK,uBAAuB,GAC7B,MAAM,qBAAqB,CAAC"}
@@ -1,3 +0,0 @@
1
- export { useHistories } from './useHistories';
2
- export { useHistoriesTotal, } from './useHistoriesTotal';
3
- //# sourceMappingURL=index.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/hooks/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,YAAY,EAA2B,MAAM,gBAAgB,CAAC;AACvE,OAAO,EACL,iBAAiB,GAElB,MAAM,qBAAqB,CAAC"}
@@ -1,19 +0,0 @@
1
- import type { BaseResponse, History, HistoryCreateRequest, HistoryUpdateRequest, NetworkClient, Optional } from '@sudobility/testomniac_types';
2
- import type { FirebaseIdToken } from '../types';
3
- export interface UseHistoriesReturn {
4
- histories: History[];
5
- isLoading: boolean;
6
- error: Optional<string>;
7
- update: () => void;
8
- createHistory: (data: HistoryCreateRequest) => Promise<BaseResponse<History>>;
9
- updateHistory: (historyId: string, data: HistoryUpdateRequest) => Promise<BaseResponse<History>>;
10
- deleteHistory: (historyId: string) => Promise<BaseResponse<null>>;
11
- isCreating: boolean;
12
- isUpdating: boolean;
13
- isDeleting: boolean;
14
- clearError: () => void;
15
- }
16
- export declare const useHistories: (networkClient: NetworkClient, baseUrl: string, entitySlug: string | null, token: FirebaseIdToken | null, options?: {
17
- enabled?: boolean;
18
- }) => UseHistoriesReturn;
19
- //# sourceMappingURL=useHistories.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"useHistories.d.ts","sourceRoot":"","sources":["../../src/hooks/useHistories.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EACV,YAAY,EACZ,OAAO,EACP,oBAAoB,EACpB,oBAAoB,EACpB,aAAa,EACb,QAAQ,EACT,MAAM,8BAA8B,CAAC;AACtC,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,UAAU,CAAC;AAMhD,MAAM,WAAW,kBAAkB;IACjC,SAAS,EAAE,OAAO,EAAE,CAAC;IACrB,SAAS,EAAE,OAAO,CAAC;IACnB,KAAK,EAAE,QAAQ,CAAC,MAAM,CAAC,CAAC;IACxB,MAAM,EAAE,MAAM,IAAI,CAAC;IACnB,aAAa,EAAE,CAAC,IAAI,EAAE,oBAAoB,KAAK,OAAO,CAAC,YAAY,CAAC,OAAO,CAAC,CAAC,CAAC;IAC9E,aAAa,EAAE,CACb,SAAS,EAAE,MAAM,EACjB,IAAI,EAAE,oBAAoB,KACvB,OAAO,CAAC,YAAY,CAAC,OAAO,CAAC,CAAC,CAAC;IACpC,aAAa,EAAE,CAAC,SAAS,EAAE,MAAM,KAAK,OAAO,CAAC,YAAY,CAAC,IAAI,CAAC,CAAC,CAAC;IAClE,UAAU,EAAE,OAAO,CAAC;IACpB,UAAU,EAAE,OAAO,CAAC;IACpB,UAAU,EAAE,OAAO,CAAC;IACpB,UAAU,EAAE,MAAM,IAAI,CAAC;CACxB;AAED,eAAO,MAAM,YAAY,GACvB,eAAe,aAAa,EAC5B,SAAS,MAAM,EACf,YAAY,MAAM,GAAG,IAAI,EACzB,OAAO,eAAe,GAAG,IAAI,EAC7B,UAAU;IAAE,OAAO,CAAC,EAAE,OAAO,CAAA;CAAE,KAC9B,kBAoIF,CAAC"}
@@ -1,98 +0,0 @@
1
- import { useCallback, useMemo } from 'react';
2
- import { useMutation, useQuery, useQueryClient } from '@tanstack/react-query';
3
- import { StarterClient } from '../network/StarterClient';
4
- import { DEFAULT_GC_TIME, DEFAULT_STALE_TIME, QUERY_KEYS } from '../types';
5
- const EMPTY_HISTORIES = [];
6
- export const useHistories = (networkClient, baseUrl, entitySlug, token, options) => {
7
- const enabled = (options?.enabled ?? true) && !!entitySlug && !!token;
8
- const client = useMemo(() => new StarterClient({ baseUrl, networkClient }), [baseUrl, networkClient]);
9
- const queryClient = useQueryClient();
10
- const { data, isLoading, error: queryError, refetch, } = useQuery({
11
- queryKey: QUERY_KEYS.histories(entitySlug ?? ''),
12
- queryFn: async () => {
13
- const response = await client.getHistories(entitySlug, token);
14
- if (!response.success || !response.data) {
15
- throw new Error(response.error || 'Failed to fetch histories');
16
- }
17
- return response.data;
18
- },
19
- enabled,
20
- staleTime: DEFAULT_STALE_TIME,
21
- gcTime: DEFAULT_GC_TIME,
22
- });
23
- const invalidate = useCallback(() => {
24
- if (entitySlug) {
25
- queryClient.invalidateQueries({
26
- queryKey: QUERY_KEYS.histories(entitySlug),
27
- });
28
- }
29
- queryClient.invalidateQueries({
30
- queryKey: QUERY_KEYS.historiesTotal(),
31
- });
32
- }, [queryClient, entitySlug]);
33
- const createMutation = useMutation({
34
- mutationFn: async (data) => {
35
- return client.createHistory(entitySlug, data, token);
36
- },
37
- onSuccess: response => {
38
- if (response.success)
39
- invalidate();
40
- },
41
- });
42
- const updateMutation = useMutation({
43
- mutationFn: async ({ historyId, data, }) => {
44
- return client.updateHistory(entitySlug, historyId, data, token);
45
- },
46
- onSuccess: response => {
47
- if (response.success)
48
- invalidate();
49
- },
50
- });
51
- const deleteMutation = useMutation({
52
- mutationFn: async (historyId) => {
53
- return client.deleteHistory(entitySlug, historyId, token);
54
- },
55
- onSuccess: response => {
56
- if (response.success)
57
- invalidate();
58
- },
59
- });
60
- const createHistory = useCallback((data) => createMutation.mutateAsync(data), [createMutation]);
61
- const updateHistory = useCallback((historyId, data) => updateMutation.mutateAsync({ historyId, data }), [updateMutation]);
62
- const deleteHistory = useCallback((historyId) => deleteMutation.mutateAsync(historyId), [deleteMutation]);
63
- const mutationError = createMutation.error ?? updateMutation.error ?? deleteMutation.error;
64
- const queryErrorMessage = queryError instanceof Error ? queryError.message : null;
65
- const mutationErrorMessage = mutationError instanceof Error ? mutationError.message : null;
66
- const error = queryErrorMessage ?? mutationErrorMessage;
67
- const clearError = useCallback(() => {
68
- createMutation.reset();
69
- updateMutation.reset();
70
- deleteMutation.reset();
71
- }, [createMutation, updateMutation, deleteMutation]);
72
- return useMemo(() => ({
73
- histories: data ?? EMPTY_HISTORIES,
74
- isLoading,
75
- error,
76
- update: refetch,
77
- createHistory,
78
- updateHistory,
79
- deleteHistory,
80
- isCreating: createMutation.isPending,
81
- isUpdating: updateMutation.isPending,
82
- isDeleting: deleteMutation.isPending,
83
- clearError,
84
- }), [
85
- data,
86
- isLoading,
87
- error,
88
- refetch,
89
- createHistory,
90
- updateHistory,
91
- deleteHistory,
92
- createMutation.isPending,
93
- updateMutation.isPending,
94
- deleteMutation.isPending,
95
- clearError,
96
- ]);
97
- };
98
- //# sourceMappingURL=useHistories.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"useHistories.js","sourceRoot":"","sources":["../../src/hooks/useHistories.ts"],"names":[],"mappings":"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"}
@@ -1,11 +0,0 @@
1
- import type { NetworkClient, Optional } from '@sudobility/testomniac_types';
2
- export interface UseHistoriesTotalReturn {
3
- total: number;
4
- isLoading: boolean;
5
- error: Optional<string>;
6
- refetch: () => void;
7
- }
8
- export declare const useHistoriesTotal: (networkClient: NetworkClient, baseUrl: string, options?: {
9
- enabled?: boolean;
10
- }) => UseHistoriesTotalReturn;
11
- //# sourceMappingURL=useHistoriesTotal.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"useHistoriesTotal.d.ts","sourceRoot":"","sources":["../../src/hooks/useHistoriesTotal.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,aAAa,EAAE,QAAQ,EAAE,MAAM,8BAA8B,CAAC;AAO5E,MAAM,WAAW,uBAAuB;IAEtC,KAAK,EAAE,MAAM,CAAC;IAEd,SAAS,EAAE,OAAO,CAAC;IAEnB,KAAK,EAAE,QAAQ,CAAC,MAAM,CAAC,CAAC;IAExB,OAAO,EAAE,MAAM,IAAI,CAAC;CACrB;AA6BD,eAAO,MAAM,iBAAiB,GAC5B,eAAe,aAAa,EAC5B,SAAS,MAAM,EACf,UAAU;IAAE,OAAO,CAAC,EAAE,OAAO,CAAA;CAAE,KAC9B,uBAsCF,CAAC"}
@@ -1,29 +0,0 @@
1
- import { useMemo } from 'react';
2
- import { useQuery } from '@tanstack/react-query';
3
- import { StarterClient } from '../network/StarterClient';
4
- import { DEFAULT_GC_TIME, DEFAULT_STALE_TIME, QUERY_KEYS } from '../types';
5
- export const useHistoriesTotal = (networkClient, baseUrl, options) => {
6
- const enabled = options?.enabled ?? true;
7
- const client = useMemo(() => new StarterClient({ baseUrl, networkClient }), [baseUrl, networkClient]);
8
- const { data, isLoading, error: queryError, refetch, } = useQuery({
9
- queryKey: QUERY_KEYS.historiesTotal(),
10
- queryFn: async () => {
11
- const response = await client.getHistoriesTotal();
12
- if (!response.success || !response.data) {
13
- throw new Error(response.error || 'Failed to fetch total');
14
- }
15
- return response.data;
16
- },
17
- enabled,
18
- staleTime: DEFAULT_STALE_TIME,
19
- gcTime: DEFAULT_GC_TIME,
20
- });
21
- const error = queryError instanceof Error ? queryError.message : null;
22
- return useMemo(() => ({
23
- total: data?.total ?? 0,
24
- isLoading,
25
- error,
26
- refetch,
27
- }), [data, isLoading, error, refetch]);
28
- };
29
- //# sourceMappingURL=useHistoriesTotal.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"useHistoriesTotal.js","sourceRoot":"","sources":["../../src/hooks/useHistoriesTotal.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,OAAO,CAAC;AAChC,OAAO,EAAE,QAAQ,EAAE,MAAM,uBAAuB,CAAC;AAEjD,OAAO,EAAE,aAAa,EAAE,MAAM,0BAA0B,CAAC;AACzD,OAAO,EAAE,eAAe,EAAE,kBAAkB,EAAE,UAAU,EAAE,MAAM,UAAU,CAAC;AA2C3E,MAAM,CAAC,MAAM,iBAAiB,GAAG,CAC/B,aAA4B,EAC5B,OAAe,EACf,OAA+B,EACN,EAAE;IAC3B,MAAM,OAAO,GAAG,OAAO,EAAE,OAAO,IAAI,IAAI,CAAC;IAEzC,MAAM,MAAM,GAAG,OAAO,CACpB,GAAG,EAAE,CAAC,IAAI,aAAa,CAAC,EAAE,OAAO,EAAE,aAAa,EAAE,CAAC,EACnD,CAAC,OAAO,EAAE,aAAa,CAAC,CACzB,CAAC;IAEF,MAAM,EACJ,IAAI,EACJ,SAAS,EACT,KAAK,EAAE,UAAU,EACjB,OAAO,GACR,GAAG,QAAQ,CAAC;QACX,QAAQ,EAAE,UAAU,CAAC,cAAc,EAAE;QACrC,OAAO,EAAE,KAAK,IAAI,EAAE;YAClB,MAAM,QAAQ,GAAG,MAAM,MAAM,CAAC,iBAAiB,EAAE,CAAC;YAClD,IAAI,CAAC,QAAQ,CAAC,OAAO,IAAI,CAAC,QAAQ,CAAC,IAAI,EAAE,CAAC;gBACxC,MAAM,IAAI,KAAK,CAAC,QAAQ,CAAC,KAAK,IAAI,uBAAuB,CAAC,CAAC;YAC7D,CAAC;YACD,OAAO,QAAQ,CAAC,IAAI,CAAC;QACvB,CAAC;QACD,OAAO;QACP,SAAS,EAAE,kBAAkB;QAC7B,MAAM,EAAE,eAAe;KACxB,CAAC,CAAC;IAEH,MAAM,KAAK,GAAG,UAAU,YAAY,KAAK,CAAC,CAAC,CAAC,UAAU,CAAC,OAAO,CAAC,CAAC,CAAC,IAAI,CAAC;IAEtE,OAAO,OAAO,CACZ,GAAG,EAAE,CAAC,CAAC;QACL,KAAK,EAAE,IAAI,EAAE,KAAK,IAAI,CAAC;QACvB,SAAS;QACT,KAAK;QACL,OAAO;KACR,CAAC,EACF,CAAC,IAAI,EAAE,SAAS,EAAE,KAAK,EAAE,OAAO,CAAC,CAClC,CAAC;AACJ,CAAC,CAAC"}
@@ -1,18 +0,0 @@
1
- import type { NetworkClient } from '@sudobility/types';
2
- import type { BaseResponse, History, HistoryCreateRequest, HistoryTotalResponse, HistoryUpdateRequest, User } from '@sudobility/testomniac_types';
3
- import type { FirebaseIdToken } from '../types';
4
- export declare class StarterClient {
5
- private readonly baseUrl;
6
- private readonly networkClient;
7
- constructor(config: {
8
- baseUrl: string;
9
- networkClient: NetworkClient;
10
- });
11
- getUser(userId: string, token: FirebaseIdToken): Promise<BaseResponse<User>>;
12
- getHistories(entitySlug: string, token: FirebaseIdToken): Promise<BaseResponse<History[]>>;
13
- createHistory(entitySlug: string, data: HistoryCreateRequest, token: FirebaseIdToken): Promise<BaseResponse<History>>;
14
- updateHistory(entitySlug: string, historyId: string, data: HistoryUpdateRequest, token: FirebaseIdToken): Promise<BaseResponse<History>>;
15
- deleteHistory(entitySlug: string, historyId: string, token: FirebaseIdToken): Promise<BaseResponse<null>>;
16
- getHistoriesTotal(): Promise<BaseResponse<HistoryTotalResponse>>;
17
- }
18
- //# sourceMappingURL=StarterClient.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"StarterClient.d.ts","sourceRoot":"","sources":["../../src/network/StarterClient.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,mBAAmB,CAAC;AACvD,OAAO,KAAK,EACV,YAAY,EACZ,OAAO,EACP,oBAAoB,EACpB,oBAAoB,EACpB,oBAAoB,EACpB,IAAI,EACL,MAAM,8BAA8B,CAAC;AACtC,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,UAAU,CAAC;AA2DhD,qBAAa,aAAa;IACxB,OAAO,CAAC,QAAQ,CAAC,OAAO,CAAS;IACjC,OAAO,CAAC,QAAQ,CAAC,aAAa,CAAgB;gBASlC,MAAM,EAAE;QAAE,OAAO,EAAE,MAAM,CAAC;QAAC,aAAa,EAAE,aAAa,CAAA;KAAE;IAuB/D,OAAO,CACX,MAAM,EAAE,MAAM,EACd,KAAK,EAAE,eAAe,GACrB,OAAO,CAAC,YAAY,CAAC,IAAI,CAAC,CAAC;IA0BxB,YAAY,CAChB,UAAU,EAAE,MAAM,EAClB,KAAK,EAAE,eAAe,GACrB,OAAO,CAAC,YAAY,CAAC,OAAO,EAAE,CAAC,CAAC;IA4B7B,aAAa,CACjB,UAAU,EAAE,MAAM,EAClB,IAAI,EAAE,oBAAoB,EAC1B,KAAK,EAAE,eAAe,GACrB,OAAO,CAAC,YAAY,CAAC,OAAO,CAAC,CAAC;IA4B3B,aAAa,CACjB,UAAU,EAAE,MAAM,EAClB,SAAS,EAAE,MAAM,EACjB,IAAI,EAAE,oBAAoB,EAC1B,KAAK,EAAE,eAAe,GACrB,OAAO,CAAC,YAAY,CAAC,OAAO,CAAC,CAAC;IA4B3B,aAAa,CACjB,UAAU,EAAE,MAAM,EAClB,SAAS,EAAE,MAAM,EACjB,KAAK,EAAE,eAAe,GACrB,OAAO,CAAC,YAAY,CAAC,IAAI,CAAC,CAAC;IA6BxB,iBAAiB,IAAI,OAAO,CAAC,YAAY,CAAC,oBAAoB,CAAC,CAAC;CAUvE"}
@@ -1,59 +0,0 @@
1
- import { buildUrl, createAuthHeaders, createHeaders, } from '../utils/starter-helpers';
2
- function validateResponse(data, operation) {
3
- if (data != null &&
4
- typeof data === 'object' &&
5
- 'success' in data &&
6
- typeof data.success === 'boolean') {
7
- return data;
8
- }
9
- throw new Error(`Invalid API response for ${operation}: response does not match expected BaseResponse shape`);
10
- }
11
- export class StarterClient {
12
- constructor(config) {
13
- this.baseUrl = config.baseUrl;
14
- this.networkClient = config.networkClient;
15
- }
16
- async getUser(userId, token) {
17
- const url = buildUrl(this.baseUrl, `/api/v1/users/${userId}`);
18
- const response = await this.networkClient.get(url, {
19
- headers: createAuthHeaders(token),
20
- });
21
- return validateResponse(response.data, 'getUser');
22
- }
23
- async getHistories(entitySlug, token) {
24
- const url = buildUrl(this.baseUrl, `/api/v1/entities/${entitySlug}/histories`);
25
- const response = await this.networkClient.get(url, {
26
- headers: createAuthHeaders(token),
27
- });
28
- return validateResponse(response.data, 'getHistories');
29
- }
30
- async createHistory(entitySlug, data, token) {
31
- const url = buildUrl(this.baseUrl, `/api/v1/entities/${entitySlug}/histories`);
32
- const response = await this.networkClient.post(url, data, {
33
- headers: createAuthHeaders(token),
34
- });
35
- return validateResponse(response.data, 'createHistory');
36
- }
37
- async updateHistory(entitySlug, historyId, data, token) {
38
- const url = buildUrl(this.baseUrl, `/api/v1/entities/${entitySlug}/histories/${historyId}`);
39
- const response = await this.networkClient.put(url, data, {
40
- headers: createAuthHeaders(token),
41
- });
42
- return validateResponse(response.data, 'updateHistory');
43
- }
44
- async deleteHistory(entitySlug, historyId, token) {
45
- const url = buildUrl(this.baseUrl, `/api/v1/entities/${entitySlug}/histories/${historyId}`);
46
- const response = await this.networkClient.delete(url, {
47
- headers: createAuthHeaders(token),
48
- });
49
- return validateResponse(response.data, 'deleteHistory');
50
- }
51
- async getHistoriesTotal() {
52
- const url = buildUrl(this.baseUrl, '/api/v1/histories/total');
53
- const response = await this.networkClient.get(url, {
54
- headers: createHeaders(),
55
- });
56
- return validateResponse(response.data, 'getHistoriesTotal');
57
- }
58
- }
59
- //# sourceMappingURL=StarterClient.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"StarterClient.js","sourceRoot":"","sources":["../../src/network/StarterClient.ts"],"names":[],"mappings":"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"}