@agentuity/frontend 0.0.110 → 0.0.112

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 (88) hide show
  1. package/dist/analytics/beacon.d.ts +15 -0
  2. package/dist/analytics/beacon.d.ts.map +1 -0
  3. package/dist/analytics/beacon.js +177 -0
  4. package/dist/analytics/beacon.js.map +1 -0
  5. package/dist/analytics/collectors/clicks.d.ts +10 -0
  6. package/dist/analytics/collectors/clicks.d.ts.map +1 -0
  7. package/dist/analytics/collectors/clicks.js +84 -0
  8. package/dist/analytics/collectors/clicks.js.map +1 -0
  9. package/dist/analytics/collectors/errors.d.ts +5 -0
  10. package/dist/analytics/collectors/errors.d.ts.map +1 -0
  11. package/dist/analytics/collectors/errors.js +43 -0
  12. package/dist/analytics/collectors/errors.js.map +1 -0
  13. package/dist/analytics/collectors/forms.d.ts +5 -0
  14. package/dist/analytics/collectors/forms.d.ts.map +1 -0
  15. package/dist/analytics/collectors/forms.js +55 -0
  16. package/dist/analytics/collectors/forms.js.map +1 -0
  17. package/dist/analytics/collectors/pageview.d.ts +15 -0
  18. package/dist/analytics/collectors/pageview.d.ts.map +1 -0
  19. package/dist/analytics/collectors/pageview.js +64 -0
  20. package/dist/analytics/collectors/pageview.js.map +1 -0
  21. package/dist/analytics/collectors/scroll.d.ts +17 -0
  22. package/dist/analytics/collectors/scroll.d.ts.map +1 -0
  23. package/dist/analytics/collectors/scroll.js +93 -0
  24. package/dist/analytics/collectors/scroll.js.map +1 -0
  25. package/dist/analytics/collectors/spa.d.ts +10 -0
  26. package/dist/analytics/collectors/spa.d.ts.map +1 -0
  27. package/dist/analytics/collectors/spa.js +53 -0
  28. package/dist/analytics/collectors/spa.js.map +1 -0
  29. package/dist/analytics/collectors/visibility.d.ts +18 -0
  30. package/dist/analytics/collectors/visibility.d.ts.map +1 -0
  31. package/dist/analytics/collectors/visibility.js +81 -0
  32. package/dist/analytics/collectors/visibility.js.map +1 -0
  33. package/dist/analytics/collectors/webvitals.d.ts +6 -0
  34. package/dist/analytics/collectors/webvitals.d.ts.map +1 -0
  35. package/dist/analytics/collectors/webvitals.js +111 -0
  36. package/dist/analytics/collectors/webvitals.js.map +1 -0
  37. package/dist/analytics/events.d.ts +18 -0
  38. package/dist/analytics/events.d.ts.map +1 -0
  39. package/dist/analytics/events.js +126 -0
  40. package/dist/analytics/events.js.map +1 -0
  41. package/dist/analytics/index.d.ts +12 -0
  42. package/dist/analytics/index.d.ts.map +1 -0
  43. package/dist/analytics/index.js +12 -0
  44. package/dist/analytics/index.js.map +1 -0
  45. package/dist/analytics/offline.d.ts +19 -0
  46. package/dist/analytics/offline.d.ts.map +1 -0
  47. package/dist/analytics/offline.js +145 -0
  48. package/dist/analytics/offline.js.map +1 -0
  49. package/dist/analytics/types.d.ts +113 -0
  50. package/dist/analytics/types.d.ts.map +1 -0
  51. package/dist/analytics/types.js +2 -0
  52. package/dist/analytics/types.js.map +1 -0
  53. package/dist/analytics/utils/storage.d.ts +13 -0
  54. package/dist/analytics/utils/storage.d.ts.map +1 -0
  55. package/dist/analytics/utils/storage.js +63 -0
  56. package/dist/analytics/utils/storage.js.map +1 -0
  57. package/dist/analytics/utils/utm.d.ts +12 -0
  58. package/dist/analytics/utils/utm.d.ts.map +1 -0
  59. package/dist/analytics/utils/utm.js +27 -0
  60. package/dist/analytics/utils/utm.js.map +1 -0
  61. package/dist/client/index.d.ts.map +1 -1
  62. package/dist/client/index.js +93 -15
  63. package/dist/client/index.js.map +1 -1
  64. package/dist/client/types.d.ts +51 -5
  65. package/dist/client/types.d.ts.map +1 -1
  66. package/dist/index.d.ts +1 -0
  67. package/dist/index.d.ts.map +1 -1
  68. package/dist/index.js +2 -0
  69. package/dist/index.js.map +1 -1
  70. package/package.json +3 -3
  71. package/src/analytics/beacon.ts +203 -0
  72. package/src/analytics/collectors/clicks.ts +100 -0
  73. package/src/analytics/collectors/errors.ts +49 -0
  74. package/src/analytics/collectors/forms.ts +64 -0
  75. package/src/analytics/collectors/pageview.ts +76 -0
  76. package/src/analytics/collectors/scroll.ts +112 -0
  77. package/src/analytics/collectors/spa.ts +60 -0
  78. package/src/analytics/collectors/visibility.ts +94 -0
  79. package/src/analytics/collectors/webvitals.ts +129 -0
  80. package/src/analytics/events.ts +144 -0
  81. package/src/analytics/index.ts +21 -0
  82. package/src/analytics/offline.ts +163 -0
  83. package/src/analytics/types.ts +139 -0
  84. package/src/analytics/utils/storage.ts +64 -0
  85. package/src/analytics/utils/utm.ts +36 -0
  86. package/src/client/index.ts +109 -15
  87. package/src/client/types.ts +104 -17
  88. package/src/index.ts +18 -0
@@ -99,27 +99,95 @@ export interface StreamClient {
99
99
  cancel(): Promise<void>;
100
100
  }
101
101
 
102
+ /**
103
+ * Options object for endpoints without path params (optional query support).
104
+ */
105
+ export interface EndpointOptionsWithQuery<Input = unknown, Query = Record<string, string>> {
106
+ input?: Input;
107
+ query?: Query;
108
+ }
109
+
110
+ /**
111
+ * Additional options that can be passed after positional path params.
112
+ */
113
+ export interface EndpointExtraOptions<Input = unknown, Query = Record<string, string>> {
114
+ input?: Input;
115
+ query?: Query;
116
+ }
117
+
118
+ /**
119
+ * Convert a path params object to a tuple of its value types.
120
+ * Used for positional argument typing.
121
+ * Note: For proper ordering, we rely on the generated PathParamsTuple type.
122
+ */
123
+ export type PathParamsToTuple<P> = P extends readonly [infer First, ...infer Rest]
124
+ ? [First, ...PathParamsToTuple<Rest>]
125
+ : P extends readonly []
126
+ ? []
127
+ : string[];
128
+
102
129
  /**
103
130
  * API endpoint - callable function for regular HTTP calls.
131
+ * - Without path params: accepts input directly OR options object with query
132
+ * - With path params: accepts positional arguments followed by optional options object
133
+ *
134
+ * @example
135
+ * // No path params
136
+ * client.hello.post({ name: 'World' })
137
+ *
138
+ * // Single path param
139
+ * client.users.userId.get('123')
140
+ *
141
+ * // Multiple path params
142
+ * client.orgs.orgId.members.memberId.get('org-1', 'user-2')
143
+ *
144
+ * // With additional options
145
+ * client.users.userId.get('123', { query: { include: 'posts' } })
104
146
  */
105
- export type APIEndpoint<Input = unknown, Output = unknown> = (input?: Input) => Promise<Output>;
147
+ export type APIEndpoint<
148
+ Input = unknown,
149
+ Output = unknown,
150
+ PathParams = never,
151
+ PathParamsTuple extends unknown[] = string[],
152
+ > = [PathParams] extends [never]
153
+ ? (inputOrOptions?: Input | EndpointOptionsWithQuery<Input>) => Promise<Output>
154
+ : (...args: [...PathParamsTuple, options?: EndpointExtraOptions<Input>]) => Promise<Output>;
106
155
 
107
156
  /**
108
157
  * WebSocket endpoint - callable function that returns WebSocket client.
109
158
  */
110
- export type WebSocketEndpoint<Input = unknown, _Output = unknown> = (
111
- input?: Input
112
- ) => WebSocketClient;
159
+ export type WebSocketEndpoint<
160
+ Input = unknown,
161
+ _Output = unknown,
162
+ PathParams = never,
163
+ PathParamsTuple extends unknown[] = string[],
164
+ > = [PathParams] extends [never]
165
+ ? (inputOrOptions?: Input | EndpointOptionsWithQuery<Input>) => WebSocketClient
166
+ : (...args: [...PathParamsTuple, options?: EndpointExtraOptions<Input>]) => WebSocketClient;
113
167
 
114
168
  /**
115
169
  * Server-Sent Events endpoint - callable function that returns EventStream client.
116
170
  */
117
- export type SSEEndpoint<Input = unknown, _Output = unknown> = (input?: Input) => EventStreamClient;
171
+ export type SSEEndpoint<
172
+ Input = unknown,
173
+ _Output = unknown,
174
+ PathParams = never,
175
+ PathParamsTuple extends unknown[] = string[],
176
+ > = [PathParams] extends [never]
177
+ ? (inputOrOptions?: Input | EndpointOptionsWithQuery<Input>) => EventStreamClient
178
+ : (...args: [...PathParamsTuple, options?: EndpointExtraOptions<Input>]) => EventStreamClient;
118
179
 
119
180
  /**
120
181
  * Streaming endpoint - callable function that returns Stream client.
121
182
  */
122
- export type StreamEndpoint<Input = unknown, _Output = unknown> = (input?: Input) => StreamClient;
183
+ export type StreamEndpoint<
184
+ Input = unknown,
185
+ _Output = unknown,
186
+ PathParams = never,
187
+ PathParamsTuple extends unknown[] = string[],
188
+ > = [PathParams] extends [never]
189
+ ? (inputOrOptions?: Input | EndpointOptionsWithQuery<Input>) => StreamClient
190
+ : (...args: [...PathParamsTuple, options?: EndpointExtraOptions<Input>]) => StreamClient;
123
191
 
124
192
  /**
125
193
  * Route endpoint - discriminated union based on route type.
@@ -128,23 +196,42 @@ export type RouteEndpoint<
128
196
  Input = unknown,
129
197
  Output = unknown,
130
198
  Type extends string = 'api',
199
+ PathParams = never,
200
+ PathParamsTuple extends unknown[] = [],
131
201
  > = Type extends 'websocket'
132
- ? WebSocketEndpoint<Input, Output>
202
+ ? WebSocketEndpoint<Input, Output, PathParams, PathParamsTuple>
133
203
  : Type extends 'sse'
134
- ? SSEEndpoint<Input, Output>
204
+ ? SSEEndpoint<Input, Output, PathParams, PathParamsTuple>
135
205
  : Type extends 'stream'
136
- ? StreamEndpoint<Input, Output>
137
- : APIEndpoint<Input, Output>;
206
+ ? StreamEndpoint<Input, Output, PathParams, PathParamsTuple>
207
+ : APIEndpoint<Input, Output, PathParams, PathParamsTuple>;
138
208
 
139
209
  /**
140
210
  * Recursively build the client proxy type from a RouteRegistry.
141
211
  */
142
212
  export type Client<R> = {
143
- [K in keyof R]: R[K] extends { input: infer I; output: infer O; type: infer T }
144
- ? RouteEndpoint<I, O, T extends string ? T : 'api'>
145
- : R[K] extends { input: infer I; output: infer O }
146
- ? RouteEndpoint<I, O, 'api'>
147
- : R[K] extends object
148
- ? Client<R[K]>
149
- : never;
213
+ [K in keyof R]: R[K] extends {
214
+ input: infer I;
215
+ output: infer O;
216
+ type: infer T;
217
+ params: infer P;
218
+ paramsTuple: infer PT;
219
+ }
220
+ ? PT extends unknown[]
221
+ ? RouteEndpoint<I, O, T extends string ? T : 'api', P, PT>
222
+ : RouteEndpoint<I, O, T extends string ? T : 'api', P>
223
+ : R[K] extends {
224
+ input: infer I;
225
+ output: infer O;
226
+ type: infer T;
227
+ params: infer P;
228
+ }
229
+ ? RouteEndpoint<I, O, T extends string ? T : 'api', P>
230
+ : R[K] extends { input: infer I; output: infer O; type: infer T }
231
+ ? RouteEndpoint<I, O, T extends string ? T : 'api'>
232
+ : R[K] extends { input: infer I; output: infer O }
233
+ ? RouteEndpoint<I, O, 'api'>
234
+ : R[K] extends object
235
+ ? Client<R[K]>
236
+ : never;
150
237
  };
package/src/index.ts CHANGED
@@ -30,3 +30,21 @@ export type {
30
30
  StreamClient,
31
31
  EventHandler,
32
32
  } from './client/types';
33
+
34
+ // Export analytics
35
+ export {
36
+ getAnalytics,
37
+ track,
38
+ initBeacon,
39
+ trackPageview,
40
+ createBaseEvent,
41
+ getVisitorId,
42
+ isOptedOut,
43
+ setOptOut,
44
+ getUTMParams,
45
+ type AnalyticsClient,
46
+ type AnalyticsEvent,
47
+ type AnalyticsEventType,
48
+ type AnalyticsBatchPayload,
49
+ type AnalyticsPageConfig,
50
+ } from './analytics';