@go-avro/avro-js 0.0.2-beta.7 → 0.0.2-beta.70

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