@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
@@ -0,0 +1,145 @@
1
+ const DB_NAME = 'agentuity_analytics';
2
+ const STORE_NAME = 'events';
3
+ const DB_VERSION = 1;
4
+ const MAX_QUEUE_SIZE = 1000;
5
+ let db = null;
6
+ let dbInitPromise = null;
7
+ /**
8
+ * Initialize IndexedDB for offline event storage
9
+ */
10
+ async function initDB() {
11
+ if (typeof indexedDB === 'undefined') {
12
+ return null;
13
+ }
14
+ return new Promise((resolve) => {
15
+ try {
16
+ const request = indexedDB.open(DB_NAME, DB_VERSION);
17
+ request.onerror = () => {
18
+ resolve(null);
19
+ };
20
+ request.onsuccess = () => {
21
+ resolve(request.result);
22
+ };
23
+ request.onupgradeneeded = (e) => {
24
+ const database = e.target.result;
25
+ if (!database.objectStoreNames.contains(STORE_NAME)) {
26
+ database.createObjectStore(STORE_NAME, { keyPath: 'id' });
27
+ }
28
+ };
29
+ }
30
+ catch {
31
+ resolve(null);
32
+ }
33
+ });
34
+ }
35
+ /**
36
+ * Get database instance
37
+ */
38
+ async function getDB() {
39
+ if (db) {
40
+ return db;
41
+ }
42
+ if (!dbInitPromise) {
43
+ dbInitPromise = initDB();
44
+ }
45
+ db = await dbInitPromise;
46
+ return db;
47
+ }
48
+ /**
49
+ * Store event in IndexedDB for offline persistence
50
+ */
51
+ export async function storeOfflineEvent(event) {
52
+ const database = await getDB();
53
+ if (!database) {
54
+ return;
55
+ }
56
+ try {
57
+ const transaction = database.transaction(STORE_NAME, 'readwrite');
58
+ const store = transaction.objectStore(STORE_NAME);
59
+ // Check current count and evict old events if needed before adding
60
+ const count = await new Promise((resolve) => {
61
+ const countRequest = store.count();
62
+ countRequest.onsuccess = () => resolve(countRequest.result);
63
+ countRequest.onerror = () => resolve(0);
64
+ });
65
+ if (count >= MAX_QUEUE_SIZE) {
66
+ // Evict oldest event (FIFO) before adding new one
67
+ await new Promise((resolve) => {
68
+ const cursorRequest = store.openCursor();
69
+ cursorRequest.onsuccess = () => {
70
+ const cursor = cursorRequest.result;
71
+ if (cursor) {
72
+ const deleteRequest = cursor.delete();
73
+ deleteRequest.onsuccess = () => resolve();
74
+ deleteRequest.onerror = () => resolve();
75
+ }
76
+ else {
77
+ resolve();
78
+ }
79
+ };
80
+ cursorRequest.onerror = () => resolve();
81
+ });
82
+ }
83
+ store.add(event);
84
+ }
85
+ catch {
86
+ // Silent failure
87
+ }
88
+ }
89
+ /**
90
+ * Get all offline events and clear them
91
+ */
92
+ export async function getAndClearOfflineEvents() {
93
+ const database = await getDB();
94
+ if (!database) {
95
+ return [];
96
+ }
97
+ return new Promise((resolve) => {
98
+ try {
99
+ const transaction = database.transaction(STORE_NAME, 'readwrite');
100
+ const store = transaction.objectStore(STORE_NAME);
101
+ const events = [];
102
+ const request = store.openCursor();
103
+ request.onsuccess = () => {
104
+ const cursor = request.result;
105
+ if (cursor) {
106
+ events.push(cursor.value);
107
+ cursor.delete();
108
+ cursor.continue();
109
+ }
110
+ else {
111
+ resolve(events);
112
+ }
113
+ };
114
+ request.onerror = () => {
115
+ resolve([]);
116
+ };
117
+ }
118
+ catch {
119
+ resolve([]);
120
+ }
121
+ });
122
+ }
123
+ /**
124
+ * Check if we're online
125
+ */
126
+ export function isOnline() {
127
+ if (typeof navigator === 'undefined') {
128
+ return true;
129
+ }
130
+ return navigator.onLine !== false;
131
+ }
132
+ /**
133
+ * Initialize offline support
134
+ * Listens for online event to flush queued events
135
+ */
136
+ export function initOfflineSupport(flushCallback) {
137
+ if (typeof window === 'undefined') {
138
+ return;
139
+ }
140
+ window.addEventListener('online', () => {
141
+ // Flush offline events when coming back online
142
+ flushCallback();
143
+ });
144
+ }
145
+ //# sourceMappingURL=offline.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"offline.js","sourceRoot":"","sources":["../../src/analytics/offline.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,113 @@
1
+ /**
2
+ * Analytics event types
3
+ */
4
+ export type AnalyticsEventType = 'pageview' | 'click' | 'scroll' | 'visibility' | 'error' | 'custom' | 'web_vital' | 'form_submit' | 'outbound_link';
5
+ /**
6
+ * Analytics event sent to the collection endpoint
7
+ */
8
+ export interface AnalyticsEvent {
9
+ id: string;
10
+ timestamp: number;
11
+ timezone_offset: number;
12
+ event_type: AnalyticsEventType;
13
+ event_name?: string;
14
+ event_data?: Record<string, unknown>;
15
+ url: string;
16
+ path: string;
17
+ referrer: string;
18
+ title: string;
19
+ screen_width: number;
20
+ screen_height: number;
21
+ viewport_width: number;
22
+ viewport_height: number;
23
+ device_pixel_ratio: number;
24
+ user_agent: string;
25
+ language: string;
26
+ load_time?: number;
27
+ dom_ready?: number;
28
+ ttfb?: number;
29
+ fcp?: number;
30
+ lcp?: number;
31
+ cls?: number;
32
+ inp?: number;
33
+ scroll_depth?: number;
34
+ time_on_page?: number;
35
+ utm_source?: string;
36
+ utm_medium?: string;
37
+ utm_campaign?: string;
38
+ utm_term?: string;
39
+ utm_content?: string;
40
+ }
41
+ /**
42
+ * Batch payload sent to /_agentuity/webanalytics/collect
43
+ */
44
+ export interface AnalyticsBatchPayload {
45
+ org_id: string;
46
+ project_id: string;
47
+ session_id: string;
48
+ thread_id: string;
49
+ visitor_id: string;
50
+ is_devmode: boolean;
51
+ events: AnalyticsEvent[];
52
+ }
53
+ /**
54
+ * Configuration injected by SDK runtime into window.__AGENTUITY_ANALYTICS__
55
+ */
56
+ export interface AnalyticsPageConfig {
57
+ enabled: boolean;
58
+ orgId: string;
59
+ projectId: string;
60
+ sessionId: string;
61
+ threadId: string;
62
+ isDevmode: boolean;
63
+ trackClicks?: boolean;
64
+ trackScroll?: boolean;
65
+ trackOutboundLinks?: boolean;
66
+ trackForms?: boolean;
67
+ trackWebVitals?: boolean;
68
+ trackErrors?: boolean;
69
+ trackSPANavigation?: boolean;
70
+ requireConsent?: boolean;
71
+ sampleRate?: number;
72
+ excludePatterns?: string[];
73
+ globalProperties?: Record<string, unknown>;
74
+ }
75
+ /**
76
+ * Public analytics client interface
77
+ */
78
+ export interface AnalyticsClient {
79
+ /**
80
+ * Track a custom event
81
+ */
82
+ track(eventName: string, properties?: Record<string, unknown>): void;
83
+ /**
84
+ * Identify the current user (sets visitor properties)
85
+ */
86
+ identify(userId: string, traits?: Record<string, unknown>): void;
87
+ /**
88
+ * Manually track a page view
89
+ */
90
+ pageview(path?: string): void;
91
+ /**
92
+ * Flush pending events immediately
93
+ */
94
+ flush(): Promise<void>;
95
+ /**
96
+ * Opt out of analytics
97
+ */
98
+ optOut(): void;
99
+ /**
100
+ * Opt back in to analytics
101
+ */
102
+ optIn(): void;
103
+ /**
104
+ * Check if analytics is currently enabled
105
+ */
106
+ isEnabled(): boolean;
107
+ }
108
+ declare global {
109
+ interface Window {
110
+ __AGENTUITY_ANALYTICS__?: AnalyticsPageConfig;
111
+ }
112
+ }
113
+ //# sourceMappingURL=types.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../src/analytics/types.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=types.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"types.js","sourceRoot":"","sources":["../../src/analytics/types.ts"],"names":[],"mappings":""}
@@ -0,0 +1,13 @@
1
+ /**
2
+ * Get or create the visitor ID from localStorage
3
+ */
4
+ export declare function getVisitorId(): string;
5
+ /**
6
+ * Check if user has opted out
7
+ */
8
+ export declare function isOptedOut(): boolean;
9
+ /**
10
+ * Set opt-out status
11
+ */
12
+ export declare function setOptOut(optOut: boolean): void;
13
+ //# sourceMappingURL=storage.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"storage.d.ts","sourceRoot":"","sources":["../../../src/analytics/utils/storage.ts"],"names":[],"mappings":"AAiBA;;GAEG;AACH,wBAAgB,YAAY,IAAI,MAAM,CAerC;AAED;;GAEG;AACH,wBAAgB,UAAU,IAAI,OAAO,CAKpC;AAED;;GAEG;AACH,wBAAgB,SAAS,CAAC,MAAM,EAAE,OAAO,GAAG,IAAI,CAa/C"}
@@ -0,0 +1,63 @@
1
+ const VISITOR_ID_KEY = 'agentuity_visitor_id';
2
+ const OPT_OUT_KEY = 'agentuity_analytics_optout';
3
+ /**
4
+ * Generate a random UUID v4
5
+ */
6
+ function generateUUID() {
7
+ if (typeof crypto !== 'undefined' && crypto.randomUUID) {
8
+ return crypto.randomUUID();
9
+ }
10
+ return 'xxxxxxxx-xxxx-4xxx-yxxx-xxxxxxxxxxxx'.replace(/[xy]/g, (c) => {
11
+ const r = (Math.random() * 16) | 0;
12
+ const v = c === 'x' ? r : (r & 0x3) | 0x8;
13
+ return v.toString(16);
14
+ });
15
+ }
16
+ /**
17
+ * Get or create the visitor ID from localStorage
18
+ */
19
+ export function getVisitorId() {
20
+ if (typeof localStorage === 'undefined') {
21
+ return generateUUID();
22
+ }
23
+ let visitorId = localStorage.getItem(VISITOR_ID_KEY);
24
+ if (!visitorId) {
25
+ visitorId = `vid_${generateUUID()}`;
26
+ try {
27
+ localStorage.setItem(VISITOR_ID_KEY, visitorId);
28
+ }
29
+ catch {
30
+ // localStorage might be full or disabled
31
+ }
32
+ }
33
+ return visitorId;
34
+ }
35
+ /**
36
+ * Check if user has opted out
37
+ */
38
+ export function isOptedOut() {
39
+ if (typeof localStorage === 'undefined') {
40
+ return false;
41
+ }
42
+ return localStorage.getItem(OPT_OUT_KEY) === 'true';
43
+ }
44
+ /**
45
+ * Set opt-out status
46
+ */
47
+ export function setOptOut(optOut) {
48
+ if (typeof localStorage === 'undefined') {
49
+ return;
50
+ }
51
+ try {
52
+ if (optOut) {
53
+ localStorage.setItem(OPT_OUT_KEY, 'true');
54
+ }
55
+ else {
56
+ localStorage.removeItem(OPT_OUT_KEY);
57
+ }
58
+ }
59
+ catch {
60
+ // localStorage might be full or disabled
61
+ }
62
+ }
63
+ //# sourceMappingURL=storage.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"storage.js","sourceRoot":"","sources":["../../../src/analytics/utils/storage.ts"],"names":[],"mappings":"AAAA,MAAM,cAAc,GAAG,sBAAsB,CAAC;AAC9C,MAAM,WAAW,GAAG,4BAA4B,CAAC;AAEjD;;GAEG;AACH,SAAS,YAAY;IACpB,IAAI,OAAO,MAAM,KAAK,WAAW,IAAI,MAAM,CAAC,UAAU,EAAE,CAAC;QACxD,OAAO,MAAM,CAAC,UAAU,EAAE,CAAC;IAC5B,CAAC;IACD,OAAO,sCAAsC,CAAC,OAAO,CAAC,OAAO,EAAE,CAAC,CAAC,EAAE,EAAE;QACpE,MAAM,CAAC,GAAG,CAAC,IAAI,CAAC,MAAM,EAAE,GAAG,EAAE,CAAC,GAAG,CAAC,CAAC;QACnC,MAAM,CAAC,GAAG,CAAC,KAAK,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,GAAG,CAAC,GAAG,GAAG,CAAC;QAC1C,OAAO,CAAC,CAAC,QAAQ,CAAC,EAAE,CAAC,CAAC;IACvB,CAAC,CAAC,CAAC;AACJ,CAAC;AAED;;GAEG;AACH,MAAM,UAAU,YAAY;IAC3B,IAAI,OAAO,YAAY,KAAK,WAAW,EAAE,CAAC;QACzC,OAAO,YAAY,EAAE,CAAC;IACvB,CAAC;IAED,IAAI,SAAS,GAAG,YAAY,CAAC,OAAO,CAAC,cAAc,CAAC,CAAC;IACrD,IAAI,CAAC,SAAS,EAAE,CAAC;QAChB,SAAS,GAAG,OAAO,YAAY,EAAE,EAAE,CAAC;QACpC,IAAI,CAAC;YACJ,YAAY,CAAC,OAAO,CAAC,cAAc,EAAE,SAAS,CAAC,CAAC;QACjD,CAAC;QAAC,MAAM,CAAC;YACR,yCAAyC;QAC1C,CAAC;IACF,CAAC;IACD,OAAO,SAAS,CAAC;AAClB,CAAC;AAED;;GAEG;AACH,MAAM,UAAU,UAAU;IACzB,IAAI,OAAO,YAAY,KAAK,WAAW,EAAE,CAAC;QACzC,OAAO,KAAK,CAAC;IACd,CAAC;IACD,OAAO,YAAY,CAAC,OAAO,CAAC,WAAW,CAAC,KAAK,MAAM,CAAC;AACrD,CAAC;AAED;;GAEG;AACH,MAAM,UAAU,SAAS,CAAC,MAAe;IACxC,IAAI,OAAO,YAAY,KAAK,WAAW,EAAE,CAAC;QACzC,OAAO;IACR,CAAC;IACD,IAAI,CAAC;QACJ,IAAI,MAAM,EAAE,CAAC;YACZ,YAAY,CAAC,OAAO,CAAC,WAAW,EAAE,MAAM,CAAC,CAAC;QAC3C,CAAC;aAAM,CAAC;YACP,YAAY,CAAC,UAAU,CAAC,WAAW,CAAC,CAAC;QACtC,CAAC;IACF,CAAC;IAAC,MAAM,CAAC;QACR,yCAAyC;IAC1C,CAAC;AACF,CAAC"}
@@ -0,0 +1,12 @@
1
+ export interface UTMParams {
2
+ utm_source?: string;
3
+ utm_medium?: string;
4
+ utm_campaign?: string;
5
+ utm_term?: string;
6
+ utm_content?: string;
7
+ }
8
+ /**
9
+ * Extract UTM parameters from the current URL
10
+ */
11
+ export declare function getUTMParams(): UTMParams;
12
+ //# sourceMappingURL=utm.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"utm.d.ts","sourceRoot":"","sources":["../../../src/analytics/utils/utm.ts"],"names":[],"mappings":"AAAA,MAAM,WAAW,SAAS;IACzB,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,WAAW,CAAC,EAAE,MAAM,CAAC;CACrB;AAED;;GAEG;AACH,wBAAgB,YAAY,IAAI,SAAS,CAwBxC"}
@@ -0,0 +1,27 @@
1
+ /**
2
+ * Extract UTM parameters from the current URL
3
+ */
4
+ export function getUTMParams() {
5
+ if (typeof window === 'undefined') {
6
+ return {};
7
+ }
8
+ const params = new URLSearchParams(window.location.search);
9
+ const utm = {};
10
+ const source = params.get('utm_source');
11
+ if (source)
12
+ utm.utm_source = source;
13
+ const medium = params.get('utm_medium');
14
+ if (medium)
15
+ utm.utm_medium = medium;
16
+ const campaign = params.get('utm_campaign');
17
+ if (campaign)
18
+ utm.utm_campaign = campaign;
19
+ const term = params.get('utm_term');
20
+ if (term)
21
+ utm.utm_term = term;
22
+ const content = params.get('utm_content');
23
+ if (content)
24
+ utm.utm_content = content;
25
+ return utm;
26
+ }
27
+ //# sourceMappingURL=utm.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"utm.js","sourceRoot":"","sources":["../../../src/analytics/utils/utm.ts"],"names":[],"mappings":"AAQA;;GAEG;AACH,MAAM,UAAU,YAAY;IAC3B,IAAI,OAAO,MAAM,KAAK,WAAW,EAAE,CAAC;QACnC,OAAO,EAAE,CAAC;IACX,CAAC;IAED,MAAM,MAAM,GAAG,IAAI,eAAe,CAAC,MAAM,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAC;IAC3D,MAAM,GAAG,GAAc,EAAE,CAAC;IAE1B,MAAM,MAAM,GAAG,MAAM,CAAC,GAAG,CAAC,YAAY,CAAC,CAAC;IACxC,IAAI,MAAM;QAAE,GAAG,CAAC,UAAU,GAAG,MAAM,CAAC;IAEpC,MAAM,MAAM,GAAG,MAAM,CAAC,GAAG,CAAC,YAAY,CAAC,CAAC;IACxC,IAAI,MAAM;QAAE,GAAG,CAAC,UAAU,GAAG,MAAM,CAAC;IAEpC,MAAM,QAAQ,GAAG,MAAM,CAAC,GAAG,CAAC,cAAc,CAAC,CAAC;IAC5C,IAAI,QAAQ;QAAE,GAAG,CAAC,YAAY,GAAG,QAAQ,CAAC;IAE1C,MAAM,IAAI,GAAG,MAAM,CAAC,GAAG,CAAC,UAAU,CAAC,CAAC;IACpC,IAAI,IAAI;QAAE,GAAG,CAAC,QAAQ,GAAG,IAAI,CAAC;IAE9B,MAAM,OAAO,GAAG,MAAM,CAAC,GAAG,CAAC,aAAa,CAAC,CAAC;IAC1C,IAAI,OAAO;QAAE,GAAG,CAAC,WAAW,GAAG,OAAO,CAAC;IAEvC,OAAO,GAAG,CAAC;AACZ,CAAC"}
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/client/index.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,MAAM,EAAE,aAAa,EAAE,MAAM,SAAS,CAAC;AA0BrD;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA4BG;AACH,wBAAgB,YAAY,CAAC,CAAC,EAAE,OAAO,GAAE,aAAkB,EAAE,QAAQ,CAAC,EAAE,OAAO,GAAG,MAAM,CAAC,CAAC,CAAC,CAwG1F;AAGD,YAAY,EACX,aAAa,EACb,MAAM,EACN,aAAa,EACb,eAAe,EACf,iBAAiB,EACjB,YAAY,EACZ,YAAY,GACZ,MAAM,SAAS,CAAC"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/client/index.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,MAAM,EAAE,aAAa,EAAE,MAAM,SAAS,CAAC;AA4DrD;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA4BG;AACH,wBAAgB,YAAY,CAAC,CAAC,EAAE,OAAO,GAAE,aAAkB,EAAE,QAAQ,CAAC,EAAE,OAAO,GAAG,MAAM,CAAC,CAAC,CAAC,CAoK1F;AAGD,YAAY,EACX,aAAa,EACb,MAAM,EACN,aAAa,EACb,eAAe,EACf,iBAAiB,EACjB,YAAY,EACZ,YAAY,GACZ,MAAM,SAAS,CAAC"}
@@ -17,6 +17,37 @@ function resolveBaseUrl(baseUrl) {
17
17
  function resolveHeaders(headers) {
18
18
  return typeof headers === 'function' ? headers() : headers;
19
19
  }
20
+ /**
21
+ * Escape special regex characters in a string.
22
+ */
23
+ function escapeRegExp(str) {
24
+ return str.replace(/[.*+?^${}()|[\]\\]/g, '\\$&');
25
+ }
26
+ /**
27
+ * Substitute path parameters in a URL path template.
28
+ * E.g., '/api/users/:id' with { id: '123' } becomes '/api/users/123'
29
+ */
30
+ function substitutePathParams(pathTemplate, pathParams) {
31
+ if (!pathParams)
32
+ return pathTemplate;
33
+ let result = pathTemplate;
34
+ for (const [key, value] of Object.entries(pathParams)) {
35
+ const escapedKey = escapeRegExp(key);
36
+ result = result.replace(new RegExp(`:${escapedKey}\\??`, 'g'), encodeURIComponent(value));
37
+ result = result.replace(new RegExp(`\\*${escapedKey}`, 'g'), encodeURIComponent(value));
38
+ }
39
+ return result;
40
+ }
41
+ /**
42
+ * Build URL with query params.
43
+ */
44
+ function buildUrlWithQuery(baseUrl, path, query) {
45
+ const url = `${baseUrl}${path}`;
46
+ if (!query || Object.keys(query).length === 0)
47
+ return url;
48
+ const params = new URLSearchParams(query);
49
+ return `${url}?${params.toString()}`;
50
+ }
20
51
  /**
21
52
  * Create a type-safe API client from a RouteRegistry.
22
53
  *
@@ -65,9 +96,11 @@ export function createClient(options = {}, metadata) {
65
96
  if (isTerminalMethod && currentPath.length >= 1) {
66
97
  const method = prop;
67
98
  const pathSegments = currentPath;
68
- const urlPath = '/api/' + pathSegments.join('/');
69
- // Determine route type
99
+ // Look up route metadata
70
100
  let routeType = 'api';
101
+ let routePath;
102
+ // eslint-disable-next-line @typescript-eslint/no-explicit-any
103
+ let metaNode = metadata;
71
104
  if (isStreamMethod) {
72
105
  // Stream methods directly specify the route type
73
106
  if (method === 'websocket')
@@ -77,26 +110,71 @@ export function createClient(options = {}, metadata) {
77
110
  else if (method === 'stream')
78
111
  routeType = 'stream';
79
112
  }
80
- else if (metadata) {
81
- // Look up route type from metadata for HTTP methods
82
- // eslint-disable-next-line @typescript-eslint/no-explicit-any
83
- let metaNode = metadata;
113
+ if (metadata) {
84
114
  for (const segment of pathSegments) {
85
115
  if (metaNode && typeof metaNode === 'object') {
86
116
  metaNode = metaNode[segment];
87
117
  }
88
118
  }
89
- if (metaNode && typeof metaNode === 'object' && metaNode[method]?.type) {
90
- routeType = metaNode[method].type;
119
+ if (metaNode && typeof metaNode === 'object' && metaNode[method]) {
120
+ if (metaNode[method].type) {
121
+ routeType = metaNode[method].type;
122
+ }
123
+ if (metaNode[method].path) {
124
+ routePath = metaNode[method].path;
125
+ }
91
126
  }
92
127
  }
93
- return (input) => {
128
+ // Fallback URL path if no metadata
129
+ const fallbackPath = '/api/' + pathSegments.join('/');
130
+ return (...args) => {
94
131
  const resolvedBaseUrl = resolveBaseUrl(baseUrl);
95
132
  const resolvedHeaders = resolveHeaders(defaultHeaders);
133
+ // Get path param names from metadata if available
134
+ // eslint-disable-next-line @typescript-eslint/no-explicit-any
135
+ const pathParamNames = metaNode?.[method]?.pathParams;
136
+ const hasPathParams = pathParamNames && pathParamNames.length > 0;
137
+ let pathParams;
138
+ let input;
139
+ let query;
140
+ if (hasPathParams) {
141
+ // Route has path params - positional arguments API
142
+ // Args are: param1, param2, ..., [options?]
143
+ // Example: client.user.get('123', 12) or client.user.get('123', 12, { query: {...} })
144
+ pathParams = {};
145
+ for (let i = 0; i < pathParamNames.length; i++) {
146
+ const arg = args[i];
147
+ if (arg === undefined || arg === null) {
148
+ throw new Error(`Missing required path parameter '${pathParamNames[i]}' at position ${i + 1}. ` +
149
+ `Expected ${pathParamNames.length} path parameter(s): ${pathParamNames.join(', ')}`);
150
+ }
151
+ pathParams[pathParamNames[i]] = String(arg);
152
+ }
153
+ // Check if there's an options object after the path params
154
+ const optionsArg = args[pathParamNames.length];
155
+ if (optionsArg && typeof optionsArg === 'object') {
156
+ // eslint-disable-next-line @typescript-eslint/no-explicit-any
157
+ const opts = optionsArg;
158
+ input = opts.input;
159
+ query = opts.query;
160
+ }
161
+ }
162
+ else {
163
+ // No path params - use existing behavior
164
+ const options = args[0];
165
+ // eslint-disable-next-line @typescript-eslint/no-explicit-any
166
+ const opts = options;
167
+ const isOptionsObject = opts && typeof opts === 'object' && ('input' in opts || 'query' in opts);
168
+ input = isOptionsObject ? opts.input : options;
169
+ query = isOptionsObject ? opts.query : undefined;
170
+ }
171
+ // Substitute path params in the route path
172
+ const basePath = routePath || fallbackPath;
173
+ const urlPath = substitutePathParams(basePath, pathParams);
96
174
  // WebSocket endpoint
97
175
  if (routeType === 'websocket') {
98
176
  const wsBaseUrl = resolvedBaseUrl.replace(/^http/, 'ws');
99
- const wsUrl = `${wsBaseUrl}${urlPath}`;
177
+ const wsUrl = buildUrlWithQuery(wsBaseUrl, urlPath, query);
100
178
  const ws = createWebSocketClient(wsUrl);
101
179
  if (input) {
102
180
  ws.on('open', () => ws.send(input));
@@ -105,16 +183,15 @@ export function createClient(options = {}, metadata) {
105
183
  }
106
184
  // SSE endpoint
107
185
  if (routeType === 'sse') {
108
- const sseUrl = `${resolvedBaseUrl}${urlPath}`;
109
- // Note: Native EventSource doesn't support custom headers
110
- // For auth, use withCredentials or consider fetch-based alternatives like @microsoft/fetch-event-source
186
+ const sseUrl = buildUrlWithQuery(resolvedBaseUrl, urlPath, query);
111
187
  return createEventStreamClient(sseUrl, {
112
188
  withCredentials: Object.keys(resolvedHeaders).length > 0,
113
189
  });
114
190
  }
115
191
  // Stream endpoint
116
192
  if (routeType === 'stream') {
117
- return fetch(`${resolvedBaseUrl}${urlPath}`, {
193
+ const streamUrl = buildUrlWithQuery(resolvedBaseUrl, urlPath, query);
194
+ return fetch(streamUrl, {
118
195
  method: method.toUpperCase(),
119
196
  headers: { 'Content-Type': contentType, ...resolvedHeaders },
120
197
  body: input ? JSON.stringify(input) : undefined,
@@ -126,7 +203,8 @@ export function createClient(options = {}, metadata) {
126
203
  });
127
204
  }
128
205
  // Regular API endpoint
129
- return fetch(`${resolvedBaseUrl}${urlPath}`, {
206
+ const apiUrl = buildUrlWithQuery(resolvedBaseUrl, urlPath, query);
207
+ return fetch(apiUrl, {
130
208
  method: method.toUpperCase(),
131
209
  headers: { 'Content-Type': contentType, ...resolvedHeaders },
132
210
  body: method.toUpperCase() !== 'GET' && input ? JSON.stringify(input) : undefined,
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/client/index.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/client/index.ts"],"names":[],"mappings":"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"}