@go-avro/avro-js 0.0.2-beta.8 → 0.0.2-beta.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 (46) hide show
  1. package/README.md +1 -0
  2. package/dist/auth/AuthManager.d.ts +4 -0
  3. package/dist/auth/AuthManager.js +13 -0
  4. package/dist/client/QueryClient.d.ts +332 -14
  5. package/dist/client/QueryClient.js +251 -197
  6. package/dist/client/core/fetch.d.ts +1 -0
  7. package/dist/client/core/fetch.js +63 -0
  8. package/dist/client/core/utils.d.ts +1 -0
  9. package/dist/client/core/utils.js +14 -0
  10. package/dist/client/core/xhr.d.ts +1 -0
  11. package/dist/client/core/xhr.js +84 -0
  12. package/dist/client/hooks/analytics.d.ts +1 -0
  13. package/dist/client/hooks/analytics.js +10 -0
  14. package/dist/client/hooks/avro.d.ts +1 -0
  15. package/dist/client/hooks/avro.js +9 -0
  16. package/dist/client/hooks/bills.d.ts +1 -0
  17. package/dist/client/hooks/bills.js +141 -0
  18. package/dist/client/hooks/chats.d.ts +1 -0
  19. package/dist/client/hooks/chats.js +37 -0
  20. package/dist/client/hooks/companies.d.ts +1 -0
  21. package/dist/client/hooks/companies.js +79 -0
  22. package/dist/client/hooks/events.d.ts +1 -0
  23. package/dist/client/hooks/events.js +307 -0
  24. package/dist/client/hooks/jobs.d.ts +1 -0
  25. package/dist/client/hooks/jobs.js +184 -0
  26. package/dist/client/hooks/messages.d.ts +1 -0
  27. package/dist/client/hooks/messages.js +30 -0
  28. package/dist/client/hooks/months.d.ts +1 -0
  29. package/dist/client/hooks/months.js +92 -0
  30. package/dist/client/hooks/plans.d.ts +1 -0
  31. package/dist/client/hooks/plans.js +9 -0
  32. package/dist/client/hooks/root.d.ts +1 -0
  33. package/dist/client/hooks/root.js +8 -0
  34. package/dist/client/hooks/routes.d.ts +1 -0
  35. package/dist/client/hooks/routes.js +123 -0
  36. package/dist/client/hooks/sessions.d.ts +1 -0
  37. package/dist/client/hooks/sessions.js +154 -0
  38. package/dist/client/hooks/teams.d.ts +1 -0
  39. package/dist/client/hooks/teams.js +117 -0
  40. package/dist/client/hooks/users.d.ts +1 -0
  41. package/dist/client/hooks/users.js +104 -0
  42. package/dist/index.d.ts +19 -0
  43. package/dist/index.js +19 -0
  44. package/dist/types/api.d.ts +118 -29
  45. package/dist/types/api.js +10 -1
  46. package/package.json +6 -1
package/README.md CHANGED
@@ -10,6 +10,7 @@ This SDK provides:
10
10
  - Typed API interfaces for Avro entities (users, jobs, teams, etc.)
11
11
  - Pluggable token storage (in-memory, localStorage, SecureStore, etc.)
12
12
  - XHR-based requests for compatibility with React Native WebViews and older environments
13
+ - Mutation and Data Hooks for easy plug-in use in React and React Native projects.
13
14
 
14
15
  ## Installation
15
16
 
@@ -2,6 +2,8 @@ import { TokenStorage, Tokens } from '../types/auth';
2
2
  export declare class AuthManager {
3
3
  private storages;
4
4
  private baseUrl;
5
+ private tokenRefreshedCallbacks;
6
+ private tokenRefreshFailedCallbacks;
5
7
  constructor({ baseUrl, storage, }: {
6
8
  baseUrl: string;
7
9
  storage: TokenStorage | TokenStorage[];
@@ -9,6 +11,8 @@ export declare class AuthManager {
9
11
  isAuthenticated(): Promise<boolean>;
10
12
  fetchNewTokens(): Promise<Tokens>;
11
13
  accessToken(): Promise<string | undefined>;
14
+ onTokenRefreshed(callback: (accessToken: string) => void): void;
15
+ onTokenRefreshFailed(callback: () => void): void;
12
16
  refreshTokens(): Promise<Tokens | null>;
13
17
  setTokens(tokens: Tokens): Promise<void>;
14
18
  clearTokens(): Promise<void>;
@@ -1,5 +1,7 @@
1
1
  export class AuthManager {
2
2
  constructor({ baseUrl, storage, }) {
3
+ this.tokenRefreshedCallbacks = [];
4
+ this.tokenRefreshFailedCallbacks = [];
3
5
  this.storages = Array.isArray(storage) ? storage : [storage];
4
6
  if (this.storages.length === 0) {
5
7
  throw new Error('At least one token storage must be provided');
@@ -88,13 +90,24 @@ export class AuthManager {
88
90
  const newToken = await this.refreshTokens();
89
91
  return newToken?.access_token;
90
92
  }
93
+ onTokenRefreshed(callback) {
94
+ this.tokenRefreshedCallbacks.push(callback);
95
+ }
96
+ onTokenRefreshFailed(callback) {
97
+ this.tokenRefreshFailedCallbacks.push(callback);
98
+ }
91
99
  async refreshTokens() {
92
100
  try {
93
101
  const newToken = await this.fetchNewTokens();
94
102
  await Promise.all(this.storages.map(s => s.set(newToken)));
103
+ this.tokenRefreshedCallbacks.forEach(cb => {
104
+ if (newToken?.access_token)
105
+ cb(newToken.access_token);
106
+ });
95
107
  return newToken;
96
108
  }
97
109
  catch (error) {
110
+ this.tokenRefreshFailedCallbacks.forEach(cb => cb());
98
111
  console.error('Failed to refresh tokens:', error);
99
112
  return null;
100
113
  }
@@ -1,5 +1,10 @@
1
+ import { Socket } from 'socket.io-client';
2
+ import { InfiniteData, UseInfiniteQueryResult, useMutation, UseQueryResult } from '@tanstack/react-query';
1
3
  import { AuthManager } from '../auth/AuthManager';
4
+ import { _Event, ApiInfo, Avro, Bill, Break, Chat, Company, Job, LineItem, LoginResponse, Message, Plan, Route, ServiceMonth, Session, Team, User, UserCompanyAssociation } from '../types/api';
5
+ import { Tokens } from '../types/auth';
2
6
  import { CancelToken, RetryStrategy } from '../types/client';
7
+ import { StandardError } from '../types/error';
3
8
  export interface AvroQueryClientConfig {
4
9
  baseUrl: string;
5
10
  authManager: AuthManager;
@@ -7,22 +12,335 @@ export interface AvroQueryClientConfig {
7
12
  retryStrategy?: RetryStrategy;
8
13
  timeout?: number;
9
14
  }
15
+ declare module '../client/QueryClient' {
16
+ interface AvroQueryClient {
17
+ _xhr<T>(method: string, path: string, body: any, cancelToken?: CancelToken, headers?: Record<string, string>, isIdempotent?: boolean, retryCount?: number, progressUpdateCallback?: (loaded: number, total: number) => void): Promise<T>;
18
+ _fetch<T>(method: string, path: string, body: any, cancelToken?: CancelToken, headers?: Record<string, string>, isIdempotent?: boolean, retryCount?: number): Promise<T>;
19
+ getDelay(strategy: RetryStrategy, attempt: number): number;
20
+ sleep(ms: number): Promise<void>;
21
+ useGetRoot(): UseQueryResult<ApiInfo, StandardError>;
22
+ useGetJobs(companyGuid: string, body: {
23
+ amt?: number;
24
+ query?: string;
25
+ }, total: number, onProgress?: (fraction: number) => void, isMainLoad?: boolean): UseQueryResult<Job[], StandardError>;
26
+ useGetRoutes(companyGuid: string, body: {
27
+ amt?: number;
28
+ query?: string;
29
+ }, total: number, onProgress?: (fraction: number) => void): UseQueryResult<any[], StandardError>;
30
+ useGetTeams(companyGuid: string, body: {
31
+ amt?: number;
32
+ query?: string;
33
+ }, total: number, onProgress?: (fraction: number) => void): UseQueryResult<any[], StandardError>;
34
+ useGetEvents(companyGuid: string, body: {
35
+ amt?: number;
36
+ known_ids?: string[];
37
+ unknown_ids?: string[];
38
+ query?: string;
39
+ unbilled?: boolean;
40
+ billed?: boolean;
41
+ paid?: boolean;
42
+ jobId?: string;
43
+ }): UseInfiniteQueryResult<InfiniteData<_Event[], unknown>, StandardError>;
44
+ useGetChats(companyGuid: string, body: {
45
+ amt?: number;
46
+ known_ids?: string[];
47
+ unknown_ids?: string[];
48
+ query?: string;
49
+ }): UseInfiniteQueryResult<InfiniteData<Chat[], unknown>, StandardError>;
50
+ useGetMessages(chatGuid: string, body: {
51
+ amt?: number;
52
+ known_ids?: string[];
53
+ unknown_ids?: string[];
54
+ query?: string;
55
+ unbilled?: boolean;
56
+ billed?: boolean;
57
+ paid?: boolean;
58
+ jobId?: string;
59
+ }): UseInfiniteQueryResult<InfiniteData<Message[], unknown>, StandardError>;
60
+ useGetMonths(companyGuid: string, body: {
61
+ amt?: number;
62
+ known_ids?: string[];
63
+ unknown_ids?: string[];
64
+ query?: string;
65
+ unbilled?: boolean;
66
+ billed?: boolean;
67
+ paid?: boolean;
68
+ jobId?: string;
69
+ }): UseInfiniteQueryResult<InfiniteData<ServiceMonth[], unknown>, StandardError>;
70
+ useGetBills(companyGuid: string, body: {
71
+ amt?: number;
72
+ known_ids?: string[];
73
+ unknown_ids?: string[];
74
+ query?: string;
75
+ paid?: boolean;
76
+ }): UseInfiniteQueryResult<InfiniteData<Bill[], unknown>, StandardError>;
77
+ useGetPlans(code: string): UseQueryResult<Plan[], StandardError>;
78
+ useGetCompanies(options?: {}): UseQueryResult<{
79
+ name: string;
80
+ id: string;
81
+ }[], StandardError>;
82
+ useGetAnalytics(): UseQueryResult<any, StandardError>;
83
+ useGetCompany(companyId: string): UseQueryResult<Company, StandardError>;
84
+ useGetJob(jobId: string): UseQueryResult<Job, StandardError>;
85
+ useGetEvent(eventId: string): UseQueryResult<_Event, StandardError>;
86
+ useGetUser(userId: string): UseQueryResult<User, StandardError>;
87
+ useGetSelf(): UseQueryResult<User, StandardError>;
88
+ useGetBill(billId: string): UseQueryResult<Bill, StandardError>;
89
+ useGetRoute(routeId: string): UseQueryResult<Route, StandardError>;
90
+ useGetChat(chatId: string): UseQueryResult<Chat, StandardError>;
91
+ useGetUserSessions(): UseQueryResult<Session[], StandardError>;
92
+ useGetAvro(): UseQueryResult<Avro, StandardError>;
93
+ useSearchUsers(searchUsername: string): UseQueryResult<User[], StandardError>;
94
+ useCreateEvent(): ReturnType<typeof useMutation<{
95
+ id: string;
96
+ }, StandardError, {
97
+ companyId: string;
98
+ eventData: Partial<_Event>;
99
+ }>>;
100
+ useCreateUserSession(): ReturnType<typeof useMutation<{
101
+ id: string;
102
+ }, StandardError, {
103
+ companyId: string;
104
+ sessionData: Partial<Session>;
105
+ }>>;
106
+ useCreateBill(): ReturnType<typeof useMutation<{
107
+ id: string;
108
+ invoice_id: number;
109
+ }, StandardError, {
110
+ companyId: string;
111
+ data: {
112
+ line_items: LineItem[];
113
+ due_date: number;
114
+ users: string[];
115
+ custom_emails: [string, string][];
116
+ };
117
+ }>>;
118
+ useCreateJob(): ReturnType<typeof useMutation<{
119
+ id: string;
120
+ }, StandardError, {
121
+ companyId: string;
122
+ jobData: Partial<Job>;
123
+ }>>;
124
+ useCreateSelf(): ReturnType<typeof useMutation<{
125
+ msg: string;
126
+ }, StandardError, {
127
+ username: string;
128
+ name: string;
129
+ email: string;
130
+ password: string;
131
+ phone_number: string;
132
+ code?: string;
133
+ invite_token?: string;
134
+ }>>;
135
+ useCreateSessionBreak(): ReturnType<typeof useMutation<{
136
+ id: string;
137
+ }, StandardError, {
138
+ sessionId: string;
139
+ breakData: Partial<Break>;
140
+ }>>;
141
+ useUpdateEvent(): ReturnType<typeof useMutation<{
142
+ msg: string;
143
+ }, StandardError, {
144
+ eventId: string;
145
+ updates: Partial<_Event>;
146
+ }>>;
147
+ useUpdateUserSession(): ReturnType<typeof useMutation<{
148
+ msg: string;
149
+ }, StandardError, {
150
+ sessionId: string;
151
+ updates: Partial<Session>;
152
+ }>>;
153
+ useUpdateJob(): ReturnType<typeof useMutation<{
154
+ msg: string;
155
+ }, StandardError, {
156
+ jobId: string;
157
+ updates: Partial<Job>;
158
+ }>>;
159
+ useUpdateBill(): ReturnType<typeof useMutation<{
160
+ msg: string;
161
+ }, StandardError, {
162
+ billId: string;
163
+ updates: Partial<Bill>;
164
+ }>>;
165
+ useUpdateRoute(): ReturnType<typeof useMutation<{
166
+ msg: string;
167
+ }, StandardError, {
168
+ routeId: string;
169
+ updates: Partial<Route>;
170
+ }>>;
171
+ useUpdateEvents(): ReturnType<typeof useMutation<void, StandardError, {
172
+ companyId: string;
173
+ events: (_Event & {
174
+ page?: number;
175
+ })[];
176
+ action: "billed" | "paid";
177
+ }>>;
178
+ useUpdateTeam(): ReturnType<typeof useMutation<{
179
+ msg: string;
180
+ }, StandardError, {
181
+ teamId: string;
182
+ teamData: Partial<Team>;
183
+ }>>;
184
+ useUpdateMonths(): ReturnType<typeof useMutation<void, StandardError, {
185
+ companyId: string;
186
+ months: (ServiceMonth & {
187
+ page?: number;
188
+ })[];
189
+ action: "billed" | "paid";
190
+ }>>;
191
+ useUpdateUserCompany(): ReturnType<typeof useMutation<{
192
+ msg: string;
193
+ }, StandardError, {
194
+ company_id: string;
195
+ user_id: string;
196
+ data: Partial<UserCompanyAssociation>;
197
+ }>>;
198
+ useUpdateSessionBreak(): ReturnType<typeof useMutation<{
199
+ msg: string;
200
+ }, StandardError, {
201
+ breakId: string;
202
+ updates: Partial<Break>;
203
+ }>>;
204
+ useDeleteJob(): ReturnType<typeof useMutation<{
205
+ msg: string;
206
+ }, StandardError, {
207
+ jobId: string;
208
+ }>>;
209
+ useUpdateCompany(): ReturnType<typeof useMutation<{
210
+ msg: string;
211
+ }, StandardError, {
212
+ companyId: string;
213
+ companyData: Partial<Company | {
214
+ logo: File | null;
215
+ }>;
216
+ }>>;
217
+ useDeleteEvent(): ReturnType<typeof useMutation<{
218
+ msg: string;
219
+ }, StandardError, {
220
+ eventId: string;
221
+ }>>;
222
+ useDeleteBill(): ReturnType<typeof useMutation<{
223
+ msg: string;
224
+ }, StandardError, {
225
+ billId: string;
226
+ }>>;
227
+ useDeleteRoute(): ReturnType<typeof useMutation<{
228
+ msg: string;
229
+ }, StandardError, {
230
+ routeId: string;
231
+ }>>;
232
+ useDeleteSelf(): ReturnType<typeof useMutation<{
233
+ msg: string;
234
+ }, StandardError, void>>;
235
+ useDeleteCompany(): ReturnType<typeof useMutation<{
236
+ msg: string;
237
+ }, StandardError, {
238
+ companyId: string;
239
+ }>>;
240
+ useDeleteTeam(): ReturnType<typeof useMutation<{
241
+ msg: string;
242
+ }, StandardError, {
243
+ teamId: string;
244
+ }>>;
245
+ }
246
+ }
10
247
  export declare class AvroQueryClient {
11
- private config;
248
+ protected config: Required<AvroQueryClientConfig>;
249
+ readonly socket: Socket;
250
+ _isAuthenticated: boolean;
12
251
  constructor(config: AvroQueryClientConfig);
13
- getDelay(strategy: RetryStrategy, attempt: number): number;
14
- private _xhr;
15
- private _fetch;
16
- get<T>(path: string, cancelToken?: CancelToken, headers?: Record<string, string>): Promise<T>;
17
- post<T>(path: string, data: any, cancelToken?: CancelToken, headers?: Record<string, string>): Promise<T>;
18
- put<T>(path: string, data: any, cancelToken?: CancelToken, headers?: Record<string, string>): Promise<T>;
19
- delete<T>(path: string, cancelToken?: CancelToken, headers?: Record<string, string>): Promise<T>;
20
- login(data: {
252
+ emit(eventName: string, data: unknown): void;
253
+ on<T>(eventName: string, callback: (data: T) => void): void;
254
+ off(eventName: string, callback?: Function): void;
255
+ get<T>(path: string, cancelToken?: CancelToken, headers?: Record<string, string>, progressUpdateCallback?: (loaded: number, total: number) => void): Promise<T>;
256
+ post<T>(path: string, data: any, cancelToken?: CancelToken, headers?: Record<string, string>, progressUpdateCallback?: (loaded: number, total: number) => void): Promise<T>;
257
+ put<T>(path: string, data: any, cancelToken?: CancelToken, headers?: Record<string, string>, progressUpdateCallback?: (loaded: number, total: number) => void): Promise<T>;
258
+ delete<T>(path: string, cancelToken?: CancelToken, headers?: Record<string, string>, progressUpdateCallback?: (loaded: number, total: number) => void): Promise<T>;
259
+ useLogin(): ReturnType<typeof useMutation<LoginResponse, StandardError, {
21
260
  username: string;
22
261
  password: string;
23
- }, cancelToken?: CancelToken): Promise<Boolean>;
24
- logout(cancelToken?: CancelToken): Promise<void>;
25
- fetchJobs(companyGuid: string, amt?: number, knownIds?: string[], unknownIds?: string[], keyword?: string, offset?: number, cancelToken?: CancelToken, headers?: Record<string, string>): Promise<any>;
26
- fetchEvents(companyGuid: string, amt?: number, known_ids?: string[], unknown_ids?: string[], keyword?: string, offset?: number, cancelToken?: CancelToken, headers?: Record<string, string>): Promise<any>;
27
- fetchBills(companyGuid: string, amt?: number, known_ids?: string[], unknown_ids?: string[], keyword?: string, offset?: number, cancelToken?: CancelToken, headers?: Record<string, string>): Promise<any>;
262
+ code?: string;
263
+ cancelToken?: CancelToken;
264
+ }>>;
265
+ useGoogleLogin(): ReturnType<typeof useMutation<LoginResponse, StandardError, {
266
+ token: string;
267
+ cancelToken?: CancelToken;
268
+ }>>;
269
+ setTokens(tokens: Tokens): Promise<void>;
270
+ clearTokens(): Promise<void>;
271
+ isAuthenticated(): boolean;
272
+ isAuthenticatedAsync(): Promise<boolean>;
273
+ useLogout(): ReturnType<typeof useMutation<void, StandardError, CancelToken | undefined>>;
274
+ fetchJobs(companyGuid: string, body?: {
275
+ amt?: number;
276
+ known_ids?: string[];
277
+ unknown_ids?: string[];
278
+ query?: string;
279
+ offset?: number;
280
+ }, cancelToken?: CancelToken, headers?: Record<string, string>): Promise<any>;
281
+ fetchChats(companyGuid: string, body?: {
282
+ amt?: number;
283
+ known_ids?: string[];
284
+ unknown_ids?: string[];
285
+ query?: string;
286
+ offset?: number;
287
+ }, cancelToken?: CancelToken, headers?: Record<string, string>): Promise<any>;
288
+ fetchMessages(chatGuid: string, body?: {
289
+ amt?: number;
290
+ known_ids?: string[];
291
+ unknown_ids?: string[];
292
+ query?: string;
293
+ offset?: number;
294
+ }, cancelToken?: CancelToken, headers?: Record<string, string>): Promise<any>;
295
+ fetchEvents(companyGuid: string, body?: {
296
+ amt?: number;
297
+ known_ids?: string[];
298
+ unknown_ids?: string[];
299
+ query?: string;
300
+ offset?: number;
301
+ unbilled?: boolean;
302
+ billed?: boolean;
303
+ paid?: boolean;
304
+ jobId?: string | null;
305
+ }, cancelToken?: CancelToken, headers?: Record<string, string>): Promise<any>;
306
+ fetchMonths(companyGuid: string, body?: {
307
+ amt?: number;
308
+ known_ids?: string[];
309
+ unknown_ids?: string[];
310
+ query?: string;
311
+ offset?: number;
312
+ unbilled?: boolean;
313
+ billed?: boolean;
314
+ paid?: boolean;
315
+ jobId?: string | null;
316
+ }, cancelToken?: CancelToken, headers?: Record<string, string>): Promise<any>;
317
+ fetchBills(companyGuid: string, body?: {
318
+ amt?: number;
319
+ known_ids?: string[];
320
+ unknown_ids?: string[];
321
+ query?: string;
322
+ offset?: number;
323
+ paid?: boolean;
324
+ }, cancelToken?: CancelToken, headers?: Record<string, string>): Promise<any>;
325
+ fetchRoutes(companyGuid: string, body?: {
326
+ amt?: number;
327
+ known_ids?: string[];
328
+ unknown_ids?: string[];
329
+ query?: string;
330
+ offset?: number;
331
+ }, cancelToken?: CancelToken, headers?: Record<string, string>): Promise<any>;
332
+ fetchTeams(companyGuid: string, body?: {
333
+ amt?: number;
334
+ known_ids?: string[];
335
+ unknown_ids?: string[];
336
+ query?: string;
337
+ offset?: number;
338
+ }, cancelToken?: CancelToken, headers?: Record<string, string>): Promise<any>;
339
+ sendEmail(emailId: string, formData: FormData, progressUpdateCallback?: (loaded: number, total: number) => void): Promise<void>;
340
+ createBill(companyGuid: string, data: {
341
+ line_items: LineItem[];
342
+ due_date: number;
343
+ users: string[];
344
+ custom_emails: [string, string][];
345
+ }, cancelToken?: CancelToken): Promise<any>;
28
346
  }