@magemetrics/core 0.0.59 → 0.0.60

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/dist/index.d.ts +3464 -0
  2. package/dist/index.js +2923 -0
  3. package/dist/index.js.map +1 -0
  4. package/package.json +12 -9
  5. package/dist/package.json +0 -59
  6. package/dist/src/adapters/storage/browser.d.ts +0 -11
  7. package/dist/src/adapters/storage/browser.d.ts.map +0 -1
  8. package/dist/src/adapters/storage/browser.js +0 -37
  9. package/dist/src/adapters/storage/browser.js.map +0 -1
  10. package/dist/src/adapters/storage/factory.d.ts +0 -8
  11. package/dist/src/adapters/storage/factory.d.ts.map +0 -1
  12. package/dist/src/adapters/storage/factory.js +0 -24
  13. package/dist/src/adapters/storage/factory.js.map +0 -1
  14. package/dist/src/adapters/storage/interface.d.ts +0 -26
  15. package/dist/src/adapters/storage/interface.d.ts.map +0 -1
  16. package/dist/src/adapters/storage/interface.js +0 -1
  17. package/dist/src/adapters/storage/interface.js.map +0 -1
  18. package/dist/src/adapters/storage/memory.d.ts +0 -11
  19. package/dist/src/adapters/storage/memory.d.ts.map +0 -1
  20. package/dist/src/adapters/storage/memory.js +0 -20
  21. package/dist/src/adapters/storage/memory.js.map +0 -1
  22. package/dist/src/core/MageMetricsClient.d.ts +0 -103
  23. package/dist/src/core/MageMetricsClient.d.ts.map +0 -1
  24. package/dist/src/core/MageMetricsClient.js +0 -509
  25. package/dist/src/core/MageMetricsClient.js.map +0 -1
  26. package/dist/src/core/MageMetricsEventEmitter.d.ts +0 -25
  27. package/dist/src/core/MageMetricsEventEmitter.d.ts.map +0 -1
  28. package/dist/src/core/MageMetricsEventEmitter.js +0 -48
  29. package/dist/src/core/MageMetricsEventEmitter.js.map +0 -1
  30. package/dist/src/core/types.d.ts +0 -37
  31. package/dist/src/core/types.d.ts.map +0 -1
  32. package/dist/src/core/types.js +0 -6
  33. package/dist/src/core/types.js.map +0 -1
  34. package/dist/src/index.d.ts +0 -8
  35. package/dist/src/index.d.ts.map +0 -1
  36. package/dist/src/index.js +0 -7
  37. package/dist/src/index.js.map +0 -1
  38. package/dist/src/utils/hash.d.ts +0 -8
  39. package/dist/src/utils/hash.d.ts.map +0 -1
  40. package/dist/src/utils/hash.js +0 -16
  41. package/dist/src/utils/hash.js.map +0 -1
  42. package/dist/src/utils/platform.d.ts +0 -10
  43. package/dist/src/utils/platform.d.ts.map +0 -1
  44. package/dist/src/utils/platform.js +0 -25
  45. package/dist/src/utils/platform.js.map +0 -1
  46. package/dist/tsconfig.tsbuildinfo +0 -1
@@ -1,509 +0,0 @@
1
- import { addApiKeyHeader, addVersionHeader, ApiError, throwOnError, } from "@mm/shared/api/client/middleware";
2
- import { GenerateInsight, } from "@mm/shared/endpoints/admin-console/contextualInsights.routes";
3
- import { ExchangeExternalToken, GetApiInformation, } from "@mm/shared/endpoints/auth.routes";
4
- import { RetrieveDashboard } from "@mm/shared/endpoints/companion/dashboards.routes";
5
- import { CreateFlow, ExportReportData, RetrieveRecentFlows, } from "@mm/shared/endpoints/companion/flows.routes";
6
- import { TriggerFlow } from "@mm/shared/endpoints/companion/triggers.routes";
7
- import { RunEnd2EndFlowRoute } from "@mm/shared/endpoints/end2end/run.routes";
8
- import { GoTrueClient } from "@supabase/auth-js";
9
- import createApiClient, {} from "openapi-fetch";
10
- import { createStorageAdapter } from "#adapters/storage/factory";
11
- import { hashString } from "#utils/hash";
12
- import packageJson from "../../package.json";
13
- import { MageMetricsEventEmitter, } from "./MageMetricsEventEmitter";
14
- import { CHECK_KEY, TOKEN_STORAGE_KEY, } from "./types";
15
- const MM_CLIENT_VERSION = packageJson.version;
16
- export const getPublicApiClient = (apiUrl, apiKey) => {
17
- const client = createApiClient({ baseUrl: apiUrl });
18
- client.use(throwOnError);
19
- client.use(addVersionHeader(MM_CLIENT_VERSION));
20
- client.use(addApiKeyHeader(apiKey));
21
- return client;
22
- };
23
- /**
24
- * Core MageMetrics client that handles authentication lifecycle and provides
25
- * a promise-based API that automatically waits for authentication to complete.
26
- *
27
- * This version uses composition instead of inheritance and pluggable storage adapters
28
- * for cross-platform compatibility.
29
- */
30
- export class MageMetricsClient {
31
- config;
32
- authState = "initializing";
33
- supabaseClient = null;
34
- internalApiClient = null;
35
- noAuthApiClient = null;
36
- authApiResponse = null;
37
- authPromise = null;
38
- processedJwt = Symbol("initial");
39
- storageAdapter;
40
- events = new MageMetricsEventEmitter();
41
- constructor(config) {
42
- this.config = config;
43
- // Initialize storage adapter - either provided or auto-detected
44
- this.storageAdapter = config.storageAdapter || createStorageAdapter();
45
- // Initialize the authentication flow
46
- void this.initializeAuth();
47
- }
48
- /**
49
- * Add an event listener for authentication state changes
50
- * @param type the type of the event
51
- * @param listener the listener to add
52
- * @param options options for the event listener
53
- * @param options.signal an optional AbortSignal to abort the event listener
54
- */
55
- addEventListener(type, listener, options) {
56
- this.events.addEventListener(type, listener, options);
57
- }
58
- /**
59
- * Remove an event listener
60
- * @param type the type of the event
61
- * @param listener the listener to remove
62
- */
63
- removeEventListener(type, listener) {
64
- this.events.removeEventListener(type, listener);
65
- }
66
- async waitForAuth() {
67
- if (this.authState === "ready") {
68
- return Promise.resolve();
69
- }
70
- if (this.authState === "error") {
71
- throw new Error("Authentication failed");
72
- }
73
- // Wait for the current auth promise to resolve
74
- if (this.authPromise) {
75
- return this.authPromise;
76
- }
77
- throw new Error("Authentication not initialized");
78
- }
79
- async updateExternalJwt(jwt) {
80
- if (this.config.externalJwt === jwt)
81
- return;
82
- this.config.externalJwt = jwt;
83
- this.processedJwt = Symbol("updating");
84
- await this.performAuthFlow();
85
- }
86
- get state() {
87
- return this.authState;
88
- }
89
- async getAuthHeaders() {
90
- await this.waitForAuth();
91
- if (!this.supabaseClient) {
92
- return {};
93
- }
94
- const session = await this.supabaseClient.getSession();
95
- if (!session.data.session) {
96
- return {};
97
- }
98
- const { access_token } = session.data.session;
99
- const headers = {};
100
- if (access_token) {
101
- headers["sp-access-token"] = access_token;
102
- }
103
- return headers;
104
- }
105
- async clearStorage() {
106
- try {
107
- await this.storageAdapter.removeItem(TOKEN_STORAGE_KEY);
108
- await this.storageAdapter.removeItem(CHECK_KEY);
109
- }
110
- catch {
111
- // Ignore storage errors
112
- }
113
- }
114
- async logout() {
115
- if (this.supabaseClient) {
116
- await this.supabaseClient.signOut({ scope: "local" });
117
- }
118
- await this.clearStorage();
119
- }
120
- /**
121
- * Public API methods that automatically wait for authentication
122
- */
123
- api = {
124
- getRecentFlows: async (params = {}) => {
125
- await this.waitForAuth();
126
- if (!this.internalApiClient)
127
- throw new Error("API client not ready");
128
- const { data, error, response } = await this.internalApiClient.GET(RetrieveRecentFlows.path, {
129
- params: {
130
- query: {
131
- limit: params.limit ?? 10,
132
- },
133
- },
134
- });
135
- if (error) {
136
- throw new ApiError(error.error, response, {
137
- status: response.status,
138
- statusText: response.statusText,
139
- url: response.url,
140
- method: "GET",
141
- });
142
- }
143
- return data;
144
- },
145
- /**
146
- * @deprecated Use `createFlow` instead.
147
- * @param request the user request
148
- * @returns the id of the created flow
149
- */
150
- startFlow: async (request) => {
151
- await this.waitForAuth();
152
- if (!this.internalApiClient)
153
- throw new Error("API client not ready");
154
- if ("query" in request) {
155
- const { data, response } = await this.internalApiClient.POST(RunEnd2EndFlowRoute.path, {
156
- body: {
157
- userQuery: request.query,
158
- isNewAnalysisGoal: true,
159
- difficultyLevel: "complex",
160
- },
161
- });
162
- if (!data || data.status === "error") {
163
- throw new ApiError(data?.error ?? "Failed to start flow", response, {
164
- status: response.status,
165
- statusText: response.statusText,
166
- url: response.url,
167
- method: "POST",
168
- });
169
- }
170
- return data.flowId;
171
- }
172
- else {
173
- const { triggerId, variables } = request;
174
- const { data, response } = await this.internalApiClient.POST(TriggerFlow.path, {
175
- body: {
176
- triggerId,
177
- variables,
178
- },
179
- });
180
- if (!data || data.status === "error") {
181
- throw new ApiError(data?.error ?? "Failed to trigger flow", response, {
182
- status: response.status,
183
- statusText: response.statusText,
184
- url: response.url,
185
- method: "POST",
186
- });
187
- }
188
- return data.flowId;
189
- }
190
- },
191
- createFlow: async (request) => {
192
- await this.waitForAuth();
193
- if (!this.internalApiClient)
194
- throw new Error("API client not ready");
195
- if ("query" in request) {
196
- const { data, error, response } = await this.internalApiClient.POST(CreateFlow.path, {
197
- body: {
198
- userQuery: request.query,
199
- },
200
- });
201
- if (error) {
202
- throw new ApiError(error.error, response, {
203
- status: response.status,
204
- statusText: response.statusText,
205
- url: response.url,
206
- method: "POST",
207
- });
208
- }
209
- return { flowId: data.flowId };
210
- }
211
- else {
212
- const { triggerId, variables } = request;
213
- const { data, response } = await this.internalApiClient.POST(TriggerFlow.path, {
214
- body: {
215
- triggerId,
216
- variables,
217
- },
218
- });
219
- if (!data || data.status === "error") {
220
- throw new ApiError(data?.error ?? "Failed to trigger flow", response, {
221
- status: response.status,
222
- statusText: response.statusText,
223
- url: response.url,
224
- method: "POST",
225
- });
226
- }
227
- return { flowId: data.flowId };
228
- }
229
- },
230
- getDashboard: async (dashboardId) => {
231
- await this.waitForAuth();
232
- if (!this.internalApiClient)
233
- throw new Error("API client not ready");
234
- const { data, error, response } = await this.internalApiClient.GET(RetrieveDashboard.path, {
235
- params: {
236
- path: {
237
- dashboard_id: dashboardId,
238
- },
239
- },
240
- });
241
- if (error) {
242
- throw new ApiError(error.error, response, {
243
- status: response.status,
244
- statusText: response.statusText,
245
- url: response.url,
246
- method: "GET",
247
- });
248
- }
249
- return data;
250
- },
251
- exportReportData: async (reportId, format = "blob") => {
252
- await this.waitForAuth();
253
- if (!this.internalApiClient)
254
- throw new Error("API client not ready");
255
- const { data, error, response } = await this.internalApiClient.GET(ExportReportData.path, {
256
- params: {
257
- path: {
258
- report_id: String(reportId),
259
- },
260
- },
261
- parseAs: format,
262
- });
263
- if (error) {
264
- throw new ApiError(error.error, response, {
265
- status: response.status,
266
- statusText: response.statusText,
267
- url: response.url,
268
- method: "GET",
269
- });
270
- }
271
- const contentDisposition = response.headers.get("content-disposition");
272
- const filename = contentDisposition
273
- ? contentDisposition.split("filename=")[1]?.replace(/"/g, "") ||
274
- `mm-export-${reportId}.csv`
275
- : `mm-export-${reportId}.csv`;
276
- return { filename: filename, data: data };
277
- },
278
- generateContextualInsight: async (payload) => {
279
- await this.waitForAuth();
280
- if (!this.internalApiClient)
281
- throw new Error("API client not ready");
282
- const { data, error, response } = await this.internalApiClient.POST(GenerateInsight.path, {
283
- body: {
284
- selected_filter_value: payload.selectedFilterValue,
285
- custom_id: payload.customId,
286
- },
287
- });
288
- if (error) {
289
- throw new ApiError(error.error, response, {
290
- status: response.status,
291
- statusText: response.statusText,
292
- url: response.url,
293
- method: "POST",
294
- });
295
- }
296
- return data;
297
- },
298
- };
299
- /**
300
- * Initialize authentication flow
301
- */
302
- async initializeAuth() {
303
- this.authPromise = this.performAuthFlow();
304
- try {
305
- await this.authPromise;
306
- }
307
- catch (error) {
308
- console.error("Failed to initialize authentication:", error);
309
- }
310
- }
311
- /**
312
- * Perform the complete authentication flow
313
- */
314
- async performAuthFlow() {
315
- try {
316
- this.setState("initializing");
317
- // 1. Get API information first (this can probably be cached, the client is already cached)
318
- const apiInfo = await this.getApiInformation();
319
- // 2. Initialize Supabase client (this is cached already)
320
- this.initializeSupabaseClient(apiInfo.anonKey, apiInfo.apiUrl);
321
- // 3. Initialize API client
322
- this.initializeApiClient();
323
- // 4. Check for existing session or exchange token
324
- await this.handleAuthentication();
325
- // 5. Update local storage with the new JWT
326
- if (this.config.externalJwt) {
327
- await this.saveCheckKey(this.config.externalJwt, this.config.apiKey);
328
- }
329
- this.setState("ready");
330
- }
331
- catch (error) {
332
- console.error("Authentication flow failed:", error);
333
- this.setState("error");
334
- throw error;
335
- }
336
- }
337
- async getApiInformation() {
338
- if (!this.noAuthApiClient || !this.authApiResponse) {
339
- this.noAuthApiClient = getPublicApiClient(this.config.apiUrl, this.config.apiKey);
340
- const { data } = await this.noAuthApiClient.GET(GetApiInformation.path, {
341
- params: {
342
- query: {
343
- apiKey: this.config.apiKey,
344
- },
345
- },
346
- });
347
- if (!data) {
348
- throw new Error("Failed to fetch API information");
349
- }
350
- this.authApiResponse = data;
351
- }
352
- return this.authApiResponse;
353
- }
354
- initializeSupabaseClient(anonKey, apiUrl) {
355
- if (!this.supabaseClient) {
356
- this.supabaseClient = new GoTrueClient({
357
- url: `${apiUrl}/auth/v1`,
358
- storageKey: TOKEN_STORAGE_KEY,
359
- headers: {
360
- apiKey: anonKey,
361
- },
362
- });
363
- // Set up auth state change listener with token refresh handling
364
- this.supabaseClient.onAuthStateChange((event, session) => {
365
- console.debug("Supabase auth state change:", event, !!session);
366
- // Handle token refresh
367
- if (event === "TOKEN_REFRESHED" && session) {
368
- console.debug("Token refreshed successfully");
369
- this.setState("ready");
370
- }
371
- else if (event === "SIGNED_OUT") {
372
- console.debug("User signed out");
373
- void this.clearStorage();
374
- this.setState("initializing");
375
- }
376
- });
377
- }
378
- }
379
- /* This method always waits for authentication to complete before returning the client */
380
- async client() {
381
- await this.waitForAuth();
382
- if (this.authState === "ready") {
383
- if (!this.internalApiClient) {
384
- throw new Error("Client is ready but API client not available. This should never happen");
385
- }
386
- return this.internalApiClient;
387
- }
388
- throw new Error(`Client is not available in auth state: ${this.authState}`);
389
- }
390
- /**
391
- * Initialize the API client with Supabase headers
392
- */
393
- initializeApiClient() {
394
- this.internalApiClient = createApiClient({ baseUrl: this.config.apiUrl });
395
- this.internalApiClient.use(throwOnError);
396
- this.internalApiClient.use(this.createSupabaseHeaderMiddleware());
397
- this.internalApiClient.use(addVersionHeader(MM_CLIENT_VERSION));
398
- }
399
- /**
400
- * Handle the authentication logic (check session or exchange token)
401
- */
402
- async handleAuthentication() {
403
- if (!this.supabaseClient) {
404
- throw new Error("Supabase client not initialized");
405
- }
406
- // Skip if we've already processed this JWT
407
- if (this.processedJwt === this.config.externalJwt) {
408
- return;
409
- }
410
- try {
411
- const { data, error } = await this.supabaseClient.getSession();
412
- if (error) {
413
- console.error("Error getting session:", error);
414
- this.processedJwt = this.config.externalJwt || "";
415
- return;
416
- }
417
- const isCheckValid = await this.compareCheckKey(this.config.externalJwt ?? "", this.config.apiKey);
418
- if (data.session && this.config.externalJwt && isCheckValid) {
419
- console.debug("Session found, authentication ready");
420
- this.processedJwt = this.config.externalJwt || "";
421
- }
422
- else if (this.config.externalJwt) {
423
- console.debug("No session found, exchanging external JWT");
424
- await this.clearCheckKey();
425
- await this.exchangeExternalToken();
426
- this.processedJwt = this.config.externalJwt;
427
- }
428
- else {
429
- console.debug("No session and no external JWT provided");
430
- this.processedJwt = this.config.externalJwt || "";
431
- }
432
- }
433
- catch (error) {
434
- console.error("Unhandled error during authentication:", error);
435
- this.processedJwt = this.config.externalJwt || "";
436
- throw error;
437
- }
438
- }
439
- /**
440
- * Exchange external JWT for Supabase tokens
441
- */
442
- async exchangeExternalToken() {
443
- if (!this.noAuthApiClient ||
444
- !this.supabaseClient ||
445
- !this.config.externalJwt) {
446
- throw new Error("Required clients or JWT not available for token exchange");
447
- }
448
- const { data } = await this.noAuthApiClient.POST(ExchangeExternalToken.path, {
449
- body: {
450
- apiKey: this.config.apiKey,
451
- externalJWT: this.config.externalJwt,
452
- },
453
- headers: this.config.additionalHeaders || {},
454
- });
455
- if (!data) {
456
- throw new Error("Failed to exchange tokens");
457
- }
458
- // Set the session in Supabase
459
- await this.supabaseClient.setSession({
460
- access_token: data.accessToken,
461
- refresh_token: data.refreshToken,
462
- });
463
- console.debug("Token exchange successful, session set");
464
- }
465
- createSupabaseHeaderMiddleware() {
466
- const supabaseClient = this.supabaseClient;
467
- return {
468
- async onRequest({ request }) {
469
- if (!supabaseClient) {
470
- return request;
471
- }
472
- const session = await supabaseClient.getSession();
473
- if (!session.data.session) {
474
- return request;
475
- }
476
- const { access_token } = session.data.session;
477
- if (access_token) {
478
- request.headers.set("sp-access-token", access_token);
479
- }
480
- return request;
481
- },
482
- };
483
- }
484
- setState(state) {
485
- this.authState = state;
486
- this.events.dispatch("authStateChange", state);
487
- }
488
- encodeCheckKey(externalJwt, apiKey) {
489
- return hashString(JSON.stringify({
490
- externalJwt,
491
- apiKey,
492
- }));
493
- }
494
- async saveCheckKey(externalJwt, apiKey) {
495
- const encodedKey = this.encodeCheckKey(externalJwt, apiKey);
496
- await this.storageAdapter.setItem(CHECK_KEY, encodedKey);
497
- }
498
- async compareCheckKey(externalJwt, apiKey) {
499
- const storedKey = await this.storageAdapter.getItem(CHECK_KEY);
500
- if (!storedKey)
501
- return false;
502
- const newValue = this.encodeCheckKey(externalJwt, apiKey);
503
- return storedKey === newValue;
504
- }
505
- async clearCheckKey() {
506
- await this.storageAdapter.removeItem(CHECK_KEY);
507
- }
508
- }
509
- //# sourceMappingURL=MageMetricsClient.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"MageMetricsClient.js","sourceRoot":"","sources":["../../../src/core/MageMetricsClient.ts"],"names":[],"mappings":"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"}
@@ -1,25 +0,0 @@
1
- import type { AuthState } from "./types";
2
- /**
3
- * Event types using discriminated union for type safety and extensibility
4
- */
5
- export type MageMetricsEvent = {
6
- type: "authStateChange";
7
- detail: AuthState;
8
- };
9
- /**
10
- * Event listener function type
11
- */
12
- export type MageMetricsEventListener<T extends MageMetricsEvent = MageMetricsEvent> = (event: T) => void;
13
- /**
14
- * Simple event emitter for MageMetrics client.
15
- * Uses discriminated unions for type-safe events.
16
- */
17
- export declare class MageMetricsEventEmitter {
18
- private listeners;
19
- addEventListener<T extends MageMetricsEvent>(type: T["type"], listener: MageMetricsEventListener<T>, options?: {
20
- signal?: AbortSignal;
21
- }): void;
22
- removeEventListener<T extends MageMetricsEvent>(type: T["type"], listener: MageMetricsEventListener<T>): void;
23
- dispatch<T extends MageMetricsEvent>(type: T["type"], detail: T["detail"]): void;
24
- }
25
- //# sourceMappingURL=MageMetricsEventEmitter.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"MageMetricsEventEmitter.d.ts","sourceRoot":"","sources":["../../../src/core/MageMetricsEventEmitter.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,SAAS,CAAC;AAEzC;;GAEG;AACH,MAAM,MAAM,gBAAgB,GAAG;IAC7B,IAAI,EAAE,iBAAiB,CAAC;IACxB,MAAM,EAAE,SAAS,CAAC;CACnB,CAAC;AAGF;;GAEG;AACH,MAAM,MAAM,wBAAwB,CAClC,CAAC,SAAS,gBAAgB,GAAG,gBAAgB,IAC3C,CAAC,KAAK,EAAE,CAAC,KAAK,IAAI,CAAC;AAEvB;;;GAGG;AACH,qBAAa,uBAAuB;IAClC,OAAO,CAAC,SAAS,CAAyD;IAE1E,gBAAgB,CAAC,CAAC,SAAS,gBAAgB,EACzC,IAAI,EAAE,CAAC,CAAC,MAAM,CAAC,EACf,QAAQ,EAAE,wBAAwB,CAAC,CAAC,CAAC,EACrC,OAAO,CAAC,EAAE;QAAE,MAAM,CAAC,EAAE,WAAW,CAAA;KAAE,GACjC,IAAI;IAsBP,mBAAmB,CAAC,CAAC,SAAS,gBAAgB,EAC5C,IAAI,EAAE,CAAC,CAAC,MAAM,CAAC,EACf,QAAQ,EAAE,wBAAwB,CAAC,CAAC,CAAC,GACpC,IAAI;IAUP,QAAQ,CAAC,CAAC,SAAS,gBAAgB,EACjC,IAAI,EAAE,CAAC,CAAC,MAAM,CAAC,EACf,MAAM,EAAE,CAAC,CAAC,QAAQ,CAAC,GAClB,IAAI;CAcR"}
@@ -1,48 +0,0 @@
1
- /**
2
- * Simple event emitter for MageMetrics client.
3
- * Uses discriminated unions for type-safe events.
4
- */
5
- export class MageMetricsEventEmitter {
6
- listeners = new Map();
7
- addEventListener(type, listener, options) {
8
- if (!this.listeners.has(type)) {
9
- this.listeners.set(type, new Set());
10
- }
11
- // Handle AbortSignal for compatibility
12
- if (options?.signal) {
13
- if (options.signal.aborted) {
14
- return; // Don't add if already aborted
15
- }
16
- // Set up abort handler
17
- const abortHandler = () => {
18
- this.removeEventListener(type, listener);
19
- };
20
- options.signal.addEventListener("abort", abortHandler, { once: true });
21
- }
22
- this.listeners.get(type).add(listener);
23
- }
24
- removeEventListener(type, listener) {
25
- const typeListeners = this.listeners.get(type);
26
- if (typeListeners) {
27
- typeListeners.delete(listener);
28
- if (typeListeners.size === 0) {
29
- this.listeners.delete(type);
30
- }
31
- }
32
- }
33
- dispatch(type, detail) {
34
- const typeListeners = this.listeners.get(type);
35
- if (typeListeners) {
36
- const event = { type, detail };
37
- typeListeners.forEach((listener) => {
38
- try {
39
- listener(event);
40
- }
41
- catch (error) {
42
- console.error(`Error in event listener for "${type}":`, error);
43
- }
44
- });
45
- }
46
- }
47
- }
48
- //# sourceMappingURL=MageMetricsEventEmitter.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"MageMetricsEventEmitter.js","sourceRoot":"","sources":["../../../src/core/MageMetricsEventEmitter.ts"],"names":[],"mappings":"AAkBA;;;GAGG;AACH,MAAM,OAAO,uBAAuB;IAC1B,SAAS,GAA+C,IAAI,GAAG,EAAE,CAAC;IAE1E,gBAAgB,CACd,IAAe,EACf,QAAqC,EACrC,OAAkC;QAElC,IAAI,CAAC,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,IAAI,CAAC,EAAE,CAAC;YAC9B,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,IAAI,EAAE,IAAI,GAAG,EAAE,CAAC,CAAC;QACtC,CAAC;QAED,uCAAuC;QACvC,IAAI,OAAO,EAAE,MAAM,EAAE,CAAC;YACpB,IAAI,OAAO,CAAC,MAAM,CAAC,OAAO,EAAE,CAAC;gBAC3B,OAAO,CAAC,+BAA+B;YACzC,CAAC;YAED,uBAAuB;YACvB,MAAM,YAAY,GAAG,GAAG,EAAE;gBACxB,IAAI,CAAC,mBAAmB,CAAC,IAAI,EAAE,QAAQ,CAAC,CAAC;YAC3C,CAAC,CAAC;YAEF,OAAO,CAAC,MAAM,CAAC,gBAAgB,CAAC,OAAO,EAAE,YAAY,EAAE,EAAE,IAAI,EAAE,IAAI,EAAE,CAAC,CAAC;QACzE,CAAC;QAED,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,IAAI,CAAE,CAAC,GAAG,CAAC,QAAoC,CAAC,CAAC;IACtE,CAAC;IAED,mBAAmB,CACjB,IAAe,EACf,QAAqC;QAErC,MAAM,aAAa,GAAG,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC;QAC/C,IAAI,aAAa,EAAE,CAAC;YAClB,aAAa,CAAC,MAAM,CAAC,QAAoC,CAAC,CAAC;YAC3D,IAAI,aAAa,CAAC,IAAI,KAAK,CAAC,EAAE,CAAC;gBAC7B,IAAI,CAAC,SAAS,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC;YAC9B,CAAC;QACH,CAAC;IACH,CAAC;IAED,QAAQ,CACN,IAAe,EACf,MAAmB;QAEnB,MAAM,aAAa,GAAG,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC;QAC/C,IAAI,aAAa,EAAE,CAAC;YAClB,MAAM,KAAK,GAAG,EAAE,IAAI,EAAE,MAAM,EAAO,CAAC;YAEpC,aAAa,CAAC,OAAO,CAAC,CAAC,QAAQ,EAAE,EAAE;gBACjC,IAAI,CAAC;oBACH,QAAQ,CAAC,KAAK,CAAC,CAAC;gBAClB,CAAC;gBAAC,OAAO,KAAK,EAAE,CAAC;oBACf,OAAO,CAAC,KAAK,CAAC,gCAAgC,IAAI,IAAI,EAAE,KAAK,CAAC,CAAC;gBACjE,CAAC;YACH,CAAC,CAAC,CAAC;QACL,CAAC;IACH,CAAC;CACF"}
@@ -1,37 +0,0 @@
1
- import type { AsyncStorage } from "#adapters/storage/interface";
2
- /**
3
- * Configuration options for the MageMetricsClient
4
- */
5
- export interface MageMetricsClientConfig {
6
- apiUrl: string;
7
- apiKey: string;
8
- externalJwt?: string;
9
- additionalHeaders?: Record<string, string>;
10
- storageAdapter?: AsyncStorage;
11
- }
12
- /**
13
- * Authentication states
14
- */
15
- export type AuthState = "initializing" | "ready" | "error";
16
- /**
17
- * Parameters for starting a flow
18
- */
19
- export type StartFlowParam = {
20
- query: string;
21
- } | {
22
- triggerId: string;
23
- variables: Record<string, string>;
24
- };
25
- /**
26
- * Parameters for generating contextual insights
27
- */
28
- export type GenerateInsightParam = {
29
- selectedFilterValue: string;
30
- customId: string;
31
- };
32
- /**
33
- * Token storage keys
34
- */
35
- export declare const TOKEN_STORAGE_KEY = "mm-ai-sp-token";
36
- export declare const CHECK_KEY = "mm-ai-check-key";
37
- //# sourceMappingURL=types.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../../src/core/types.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,6BAA6B,CAAC;AAEhE;;GAEG;AACH,MAAM,WAAW,uBAAuB;IACtC,MAAM,EAAE,MAAM,CAAC;IACf,MAAM,EAAE,MAAM,CAAC;IACf,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,iBAAiB,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IAC3C,cAAc,CAAC,EAAE,YAAY,CAAC;CAC/B;AAED;;GAEG;AACH,MAAM,MAAM,SAAS,GAAG,cAAc,GAAG,OAAO,GAAG,OAAO,CAAC;AAE3D;;GAEG;AACH,MAAM,MAAM,cAAc,GACtB;IAAE,KAAK,EAAE,MAAM,CAAA;CAAE,GACjB;IAAE,SAAS,EAAE,MAAM,CAAC;IAAC,SAAS,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAA;CAAE,CAAC;AAE7D;;GAEG;AACH,MAAM,MAAM,oBAAoB,GAAG;IACjC,mBAAmB,EAAE,MAAM,CAAC;IAC5B,QAAQ,EAAE,MAAM,CAAC;CAClB,CAAC;AAEF;;GAEG;AACH,eAAO,MAAM,iBAAiB,mBAAmB,CAAC;AAClD,eAAO,MAAM,SAAS,oBAAoB,CAAC"}
@@ -1,6 +0,0 @@
1
- /**
2
- * Token storage keys
3
- */
4
- export const TOKEN_STORAGE_KEY = "mm-ai-sp-token";
5
- export const CHECK_KEY = "mm-ai-check-key";
6
- //# sourceMappingURL=types.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"types.js","sourceRoot":"","sources":["../../../src/core/types.ts"],"names":[],"mappings":"AAiCA;;GAEG;AACH,MAAM,CAAC,MAAM,iBAAiB,GAAG,gBAAgB,CAAC;AAClD,MAAM,CAAC,MAAM,SAAS,GAAG,iBAAiB,CAAC"}