@mostly-good-metrics/javascript 0.5.1 → 0.6.0

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.
@@ -19,6 +19,10 @@ class MostlyGoodMetrics {
19
19
  this.flushTimer = null;
20
20
  this.isFlushingInternal = false;
21
21
  this.lifecycleSetup = false;
22
+ // A/B testing state
23
+ this.experiments = new Map();
24
+ this.experimentsLoaded = false;
25
+ this.experimentsReadyResolve = null;
22
26
  this.handleVisibilityChange = () => {
23
27
  if (document.hidden) {
24
28
  // App backgrounded
@@ -49,6 +53,10 @@ class MostlyGoodMetrics {
49
53
  this.storage = this.config.storage ?? (0, storage_1.createDefaultStorage)(this.config.maxStoredEvents);
50
54
  // Initialize network client
51
55
  this.networkClient = this.config.networkClient ?? (0, network_1.createDefaultNetworkClient)();
56
+ // Initialize experiments ready promise
57
+ this.experimentsReadyPromise = new Promise((resolve) => {
58
+ this.experimentsReadyResolve = resolve;
59
+ });
52
60
  logger_1.logger.info(`MostlyGoodMetrics initialized with environment: ${this.config.environment}`);
53
61
  // Start auto-flush timer
54
62
  this.startFlushTimer();
@@ -56,6 +64,8 @@ class MostlyGoodMetrics {
56
64
  if (this.config.trackAppLifecycleEvents) {
57
65
  this.setupLifecycleTracking();
58
66
  }
67
+ // Fetch experiments in background
68
+ void this.fetchExperiments();
59
69
  }
60
70
  /**
61
71
  * Configure and initialize the SDK.
@@ -170,6 +180,20 @@ class MostlyGoodMetrics {
170
180
  static getSuperProperties() {
171
181
  return MostlyGoodMetrics.instance?.getSuperProperties() ?? {};
172
182
  }
183
+ /**
184
+ * Get the variant for an experiment.
185
+ * Returns the assigned variant ('a', 'b', etc.) or null if experiment not found.
186
+ */
187
+ static getVariant(experimentName) {
188
+ return MostlyGoodMetrics.instance?.getVariant(experimentName) ?? null;
189
+ }
190
+ /**
191
+ * Returns a promise that resolves when experiments have been loaded.
192
+ * Useful for waiting before calling getVariant() to ensure server-side experiments are available.
193
+ */
194
+ static ready() {
195
+ return MostlyGoodMetrics.instance?.ready() ?? Promise.resolve();
196
+ }
173
197
  // =====================================================
174
198
  // Instance properties
175
199
  // =====================================================
@@ -398,6 +422,54 @@ class MostlyGoodMetrics {
398
422
  getSuperProperties() {
399
423
  return storage_1.persistence.getSuperProperties();
400
424
  }
425
+ /**
426
+ * Get the variant for an experiment.
427
+ * Returns the assigned variant ('a', 'b', etc.) or null if experiment not found.
428
+ *
429
+ * Assignment is deterministic based on userId + experimentName, so the same
430
+ * user always gets the same variant for the same experiment.
431
+ *
432
+ * The variant is automatically stored as a super property (experiment_{name}: 'variant')
433
+ * so it's attached to all subsequent events.
434
+ */
435
+ getVariant(experimentName) {
436
+ if (!experimentName) {
437
+ logger_1.logger.warn('getVariant called with empty experimentName');
438
+ return null;
439
+ }
440
+ // Check if we have this experiment cached
441
+ const experiment = this.experiments.get(experimentName);
442
+ if (!experiment) {
443
+ if (this.experimentsLoaded) {
444
+ // Experiments loaded but this one doesn't exist
445
+ logger_1.logger.debug(`Experiment not found: ${experimentName}`);
446
+ return null;
447
+ }
448
+ // Experiments not loaded yet - can't assign variant without knowing variants
449
+ logger_1.logger.debug(`Experiments not loaded yet, cannot assign variant for: ${experimentName}`);
450
+ return null;
451
+ }
452
+ if (!experiment.variants || experiment.variants.length === 0) {
453
+ logger_1.logger.warn(`Experiment ${experimentName} has no variants`);
454
+ return null;
455
+ }
456
+ // Get the user ID for deterministic assignment
457
+ const userId = this.userId ?? this.anonymousIdValue;
458
+ // Compute deterministic variant assignment
459
+ const variant = this.computeVariant(userId, experimentName, experiment.variants);
460
+ // Store as super property so it's attached to all events
461
+ const propertyName = `experiment_${this.toSnakeCase(experimentName)}`;
462
+ this.setSuperProperty(propertyName, variant);
463
+ logger_1.logger.debug(`Assigned variant '${variant}' for experiment '${experimentName}'`);
464
+ return variant;
465
+ }
466
+ /**
467
+ * Returns a promise that resolves when experiments have been loaded.
468
+ * Useful for waiting before calling getVariant() to ensure server-side experiments are available.
469
+ */
470
+ ready() {
471
+ return this.experimentsReadyPromise;
472
+ }
401
473
  /**
402
474
  * Clean up resources (stop timers, etc.).
403
475
  */
@@ -562,6 +634,78 @@ class MostlyGoodMetrics {
562
634
  // the regular flush mechanism for most events
563
635
  logger_1.logger.debug('Page unloading, attempting beacon flush');
564
636
  }
637
+ // =====================================================
638
+ // A/B Testing methods
639
+ // =====================================================
640
+ /**
641
+ * Fetch experiments from the server.
642
+ * Called automatically during initialization.
643
+ */
644
+ async fetchExperiments() {
645
+ const url = `${this.config.baseURL}/v1/experiments`;
646
+ try {
647
+ logger_1.logger.debug('Fetching experiments...');
648
+ const response = await fetch(url, {
649
+ method: 'GET',
650
+ headers: {
651
+ Authorization: `Bearer ${this.config.apiKey}`,
652
+ 'Content-Type': 'application/json',
653
+ },
654
+ });
655
+ if (!response.ok) {
656
+ logger_1.logger.warn(`Failed to fetch experiments: ${response.status}`);
657
+ this.markExperimentsReady();
658
+ return;
659
+ }
660
+ const data = (await response.json());
661
+ // Cache experiments by ID
662
+ this.experiments.clear();
663
+ for (const experiment of data.experiments || []) {
664
+ this.experiments.set(experiment.id, experiment);
665
+ }
666
+ logger_1.logger.debug(`Loaded ${this.experiments.size} experiments`);
667
+ }
668
+ catch (e) {
669
+ logger_1.logger.warn('Failed to fetch experiments', e);
670
+ }
671
+ finally {
672
+ this.markExperimentsReady();
673
+ }
674
+ }
675
+ /**
676
+ * Mark experiments as loaded and resolve the ready promise.
677
+ */
678
+ markExperimentsReady() {
679
+ this.experimentsLoaded = true;
680
+ if (this.experimentsReadyResolve) {
681
+ this.experimentsReadyResolve();
682
+ this.experimentsReadyResolve = null;
683
+ }
684
+ }
685
+ /**
686
+ * Compute a deterministic variant assignment based on userId and experimentName.
687
+ * Same user + same experiment = same variant (consistent assignment).
688
+ */
689
+ computeVariant(userId, experimentName, variants) {
690
+ // Create a deterministic hash from userId + experimentName
691
+ const hashInput = `${userId}:${experimentName}`;
692
+ const hash = this.simpleHash(hashInput);
693
+ // Convert hash to a positive number and mod by variant count
694
+ const hashNum = Math.abs(parseInt(hash, 16));
695
+ const variantIndex = hashNum % variants.length;
696
+ return variants[variantIndex];
697
+ }
698
+ /**
699
+ * Convert a string to snake_case.
700
+ * Used for experiment property names (e.g., "button-color" -> "button_color").
701
+ */
702
+ toSnakeCase(str) {
703
+ return str
704
+ .replace(/([A-Z])/g, '_$1')
705
+ .replace(/[-\s]+/g, '_')
706
+ .toLowerCase()
707
+ .replace(/^_/, '');
708
+ }
565
709
  }
566
710
  exports.MostlyGoodMetrics = MostlyGoodMetrics;
567
711
  MostlyGoodMetrics.instance = null;
@@ -1 +1 @@
1
- {"version":3,"file":"client.js","sourceRoot":"","sources":["../../src/client.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"client.js","sourceRoot":"","sources":["../../src/client.ts"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":";AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;GA2BG;;;AAEH,cAAc;AACd,mCAA6C;AAApC,2GAAA,iBAAiB,OAAA;AAqB1B,cAAc;AACd,iCAAmC;AAA1B,iGAAA,QAAQ,OAAA;AAEjB,YAAY;AACZ,iCAMiB;AALf,qGAAA,YAAY,OAAA;AACZ,yGAAA,gBAAgB,OAAA;AAChB,6GAAA,oBAAoB,OAAA;AACpB,oGAAA,WAAW,OAAA;AACX,yGAAA,gBAAgB,OAAA;AAGlB,wDAAwD;AACxD,qCAAiG;AAAxF,+GAAA,oBAAoB,OAAA;AAAE,mHAAA,wBAAwB,OAAA;AAAE,+GAAA,oBAAoB,OAAA;AAE7E,sDAAsD;AACtD,qCAA2E;AAAlE,6GAAA,kBAAkB,OAAA;AAAE,qHAAA,0BAA0B,OAAA;AAEvD,iCAAiC;AACjC,iCAWiB;AAVf,4GAAA,mBAAmB,OAAA;AACnB,qGAAA,YAAY,OAAA;AACZ,wGAAA,eAAe,OAAA;AACf,yGAAA,gBAAgB,OAAA;AAChB,0GAAA,iBAAiB,OAAA;AACjB,2GAAA,kBAAkB,OAAA;AAClB,uGAAA,cAAc,OAAA;AACd,yGAAA,gBAAgB,OAAA;AAChB,qGAAA,YAAY,OAAA;AACZ,uGAAA,cAAc,OAAA;AAGhB,yBAAyB;AACzB,mCAAkC;AAAzB,gGAAA,MAAM,OAAA"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":";AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;GA2BG;;;AAEH,cAAc;AACd,mCAA6C;AAApC,2GAAA,iBAAiB,OAAA;AAuB1B,cAAc;AACd,iCAAmC;AAA1B,iGAAA,QAAQ,OAAA;AAEjB,YAAY;AACZ,iCAMiB;AALf,qGAAA,YAAY,OAAA;AACZ,yGAAA,gBAAgB,OAAA;AAChB,6GAAA,oBAAoB,OAAA;AACpB,oGAAA,WAAW,OAAA;AACX,yGAAA,gBAAgB,OAAA;AAGlB,wDAAwD;AACxD,qCAAiG;AAAxF,+GAAA,oBAAoB,OAAA;AAAE,mHAAA,wBAAwB,OAAA;AAAE,+GAAA,oBAAoB,OAAA;AAE7E,sDAAsD;AACtD,qCAA2E;AAAlE,6GAAA,kBAAkB,OAAA;AAAE,qHAAA,0BAA0B,OAAA;AAEvD,iCAAiC;AACjC,iCAWiB;AAVf,4GAAA,mBAAmB,OAAA;AACnB,qGAAA,YAAY,OAAA;AACZ,wGAAA,eAAe,OAAA;AACf,yGAAA,gBAAgB,OAAA;AAChB,0GAAA,iBAAiB,OAAA;AACjB,2GAAA,kBAAkB,OAAA;AAClB,uGAAA,cAAc,OAAA;AACd,yGAAA,gBAAgB,OAAA;AAChB,qGAAA,YAAY,OAAA;AACZ,uGAAA,cAAc,OAAA;AAGhB,yBAAyB;AACzB,mCAAkC;AAAzB,gGAAA,MAAM,OAAA"}
@@ -1 +1 @@
1
- {"version":3,"file":"types.js","sourceRoot":"","sources":["../../src/types.ts"],"names":[],"mappings":";;;AAqWA;;GAEG;AACH,MAAa,QAAS,SAAQ,KAAK;IAKjC,YACE,IAAkB,EAClB,OAAe,EACf,OAAsD;QAEtD,KAAK,CAAC,OAAO,CAAC,CAAC;QACf,IAAI,CAAC,IAAI,GAAG,UAAU,CAAC;QACvB,IAAI,CAAC,IAAI,GAAG,IAAI,CAAC;QACjB,IAAI,CAAC,UAAU,GAAG,OAAO,EAAE,UAAU,CAAC;QACtC,IAAI,CAAC,UAAU,GAAG,OAAO,EAAE,UAAU,CAAC;QAEtC,uEAAuE;QACvE,IAAI,KAAK,CAAC,iBAAiB,EAAE,CAAC;YAC5B,KAAK,CAAC,iBAAiB,CAAC,IAAI,EAAE,QAAQ,CAAC,CAAC;QAC1C,CAAC;IACH,CAAC;CACF;AArBD,4BAqBC;AAED;;GAEG;AACU,QAAA,YAAY,GAAG;IAC1B,aAAa,EAAE,gBAAgB;IAC/B,WAAW,EAAE,cAAc;IAC3B,UAAU,EAAE,aAAa;IACzB,gBAAgB,EAAE,mBAAmB;IACrC,QAAQ,EAAE,WAAW;CACb,CAAC;AAiBX;;GAEG;AACU,QAAA,gBAAgB,GAAG;IAC9B,WAAW,EAAE,cAAc;IAC3B,YAAY,EAAE,eAAe;IAC7B,OAAO,EAAE,UAAU;IACnB,gBAAgB,EAAE,mBAAmB;IACrC,GAAG,EAAE,MAAM;CACH,CAAC;AAEX;;GAEG;AACU,QAAA,oBAAoB,GAAG;IAClC,OAAO,EAAE,sCAAsC;IAC/C,WAAW,EAAE,YAAY;IACzB,YAAY,EAAE,GAAG;IACjB,aAAa,EAAE,EAAE;IACjB,eAAe,EAAE,KAAK;IACtB,kBAAkB,EAAE,KAAK;IACzB,uBAAuB,EAAE,KAAK;CACtB,CAAC;AAEX;;GAEG;AACU,QAAA,WAAW,GAAG;IACzB,qBAAqB,EAAE,GAAG;IAC1B,cAAc,EAAE,IAAI;IACpB,cAAc,EAAE,CAAC;IACjB,kBAAkB,EAAE,CAAC;IACrB,iBAAiB,EAAE,GAAG;IACtB,0BAA0B,EAAE,IAAI;IAChC,kBAAkB,EAAE,CAAC;IACrB,uBAAuB,EAAE,EAAE,GAAG,IAAI,EAAE,OAAO;IAC3C,2BAA2B,EAAE,IAAI,EAAE,MAAM;CACjC,CAAC;AAEX;;;GAGG;AACU,QAAA,gBAAgB,GAAG,4BAA4B,CAAC"}
1
+ {"version":3,"file":"types.js","sourceRoot":"","sources":["../../src/types.ts"],"names":[],"mappings":";;;AAqWA;;GAEG;AACH,MAAa,QAAS,SAAQ,KAAK;IAKjC,YACE,IAAkB,EAClB,OAAe,EACf,OAAsD;QAEtD,KAAK,CAAC,OAAO,CAAC,CAAC;QACf,IAAI,CAAC,IAAI,GAAG,UAAU,CAAC;QACvB,IAAI,CAAC,IAAI,GAAG,IAAI,CAAC;QACjB,IAAI,CAAC,UAAU,GAAG,OAAO,EAAE,UAAU,CAAC;QACtC,IAAI,CAAC,UAAU,GAAG,OAAO,EAAE,UAAU,CAAC;QAEtC,uEAAuE;QACvE,IAAI,KAAK,CAAC,iBAAiB,EAAE,CAAC;YAC5B,KAAK,CAAC,iBAAiB,CAAC,IAAI,EAAE,QAAQ,CAAC,CAAC;QAC1C,CAAC;IACH,CAAC;CACF;AArBD,4BAqBC;AAED;;GAEG;AACU,QAAA,YAAY,GAAG;IAC1B,aAAa,EAAE,gBAAgB;IAC/B,WAAW,EAAE,cAAc;IAC3B,UAAU,EAAE,aAAa;IACzB,gBAAgB,EAAE,mBAAmB;IACrC,QAAQ,EAAE,WAAW;CACb,CAAC;AAuCX;;GAEG;AACU,QAAA,gBAAgB,GAAG;IAC9B,WAAW,EAAE,cAAc;IAC3B,YAAY,EAAE,eAAe;IAC7B,OAAO,EAAE,UAAU;IACnB,gBAAgB,EAAE,mBAAmB;IACrC,GAAG,EAAE,MAAM;CACH,CAAC;AAEX;;GAEG;AACU,QAAA,oBAAoB,GAAG;IAClC,OAAO,EAAE,sCAAsC;IAC/C,WAAW,EAAE,YAAY;IACzB,YAAY,EAAE,GAAG;IACjB,aAAa,EAAE,EAAE;IACjB,eAAe,EAAE,KAAK;IACtB,kBAAkB,EAAE,KAAK;IACzB,uBAAuB,EAAE,KAAK;CACtB,CAAC;AAEX;;GAEG;AACU,QAAA,WAAW,GAAG;IACzB,qBAAqB,EAAE,GAAG;IAC1B,cAAc,EAAE,IAAI;IACpB,cAAc,EAAE,CAAC;IACjB,kBAAkB,EAAE,CAAC;IACrB,iBAAiB,EAAE,GAAG;IACtB,0BAA0B,EAAE,IAAI;IAChC,kBAAkB,EAAE,CAAC;IACrB,uBAAuB,EAAE,EAAE,GAAG,IAAI,EAAE,OAAO;IAC3C,2BAA2B,EAAE,IAAI,EAAE,MAAM;CACjC,CAAC;AAEX;;;GAGG;AACU,QAAA,gBAAgB,GAAG,4BAA4B,CAAC"}
@@ -16,6 +16,10 @@ export class MostlyGoodMetrics {
16
16
  this.flushTimer = null;
17
17
  this.isFlushingInternal = false;
18
18
  this.lifecycleSetup = false;
19
+ // A/B testing state
20
+ this.experiments = new Map();
21
+ this.experimentsLoaded = false;
22
+ this.experimentsReadyResolve = null;
19
23
  this.handleVisibilityChange = () => {
20
24
  if (document.hidden) {
21
25
  // App backgrounded
@@ -46,6 +50,10 @@ export class MostlyGoodMetrics {
46
50
  this.storage = this.config.storage ?? createDefaultStorage(this.config.maxStoredEvents);
47
51
  // Initialize network client
48
52
  this.networkClient = this.config.networkClient ?? createDefaultNetworkClient();
53
+ // Initialize experiments ready promise
54
+ this.experimentsReadyPromise = new Promise((resolve) => {
55
+ this.experimentsReadyResolve = resolve;
56
+ });
49
57
  logger.info(`MostlyGoodMetrics initialized with environment: ${this.config.environment}`);
50
58
  // Start auto-flush timer
51
59
  this.startFlushTimer();
@@ -53,6 +61,8 @@ export class MostlyGoodMetrics {
53
61
  if (this.config.trackAppLifecycleEvents) {
54
62
  this.setupLifecycleTracking();
55
63
  }
64
+ // Fetch experiments in background
65
+ void this.fetchExperiments();
56
66
  }
57
67
  /**
58
68
  * Configure and initialize the SDK.
@@ -167,6 +177,20 @@ export class MostlyGoodMetrics {
167
177
  static getSuperProperties() {
168
178
  return MostlyGoodMetrics.instance?.getSuperProperties() ?? {};
169
179
  }
180
+ /**
181
+ * Get the variant for an experiment.
182
+ * Returns the assigned variant ('a', 'b', etc.) or null if experiment not found.
183
+ */
184
+ static getVariant(experimentName) {
185
+ return MostlyGoodMetrics.instance?.getVariant(experimentName) ?? null;
186
+ }
187
+ /**
188
+ * Returns a promise that resolves when experiments have been loaded.
189
+ * Useful for waiting before calling getVariant() to ensure server-side experiments are available.
190
+ */
191
+ static ready() {
192
+ return MostlyGoodMetrics.instance?.ready() ?? Promise.resolve();
193
+ }
170
194
  // =====================================================
171
195
  // Instance properties
172
196
  // =====================================================
@@ -395,6 +419,54 @@ export class MostlyGoodMetrics {
395
419
  getSuperProperties() {
396
420
  return persistence.getSuperProperties();
397
421
  }
422
+ /**
423
+ * Get the variant for an experiment.
424
+ * Returns the assigned variant ('a', 'b', etc.) or null if experiment not found.
425
+ *
426
+ * Assignment is deterministic based on userId + experimentName, so the same
427
+ * user always gets the same variant for the same experiment.
428
+ *
429
+ * The variant is automatically stored as a super property (experiment_{name}: 'variant')
430
+ * so it's attached to all subsequent events.
431
+ */
432
+ getVariant(experimentName) {
433
+ if (!experimentName) {
434
+ logger.warn('getVariant called with empty experimentName');
435
+ return null;
436
+ }
437
+ // Check if we have this experiment cached
438
+ const experiment = this.experiments.get(experimentName);
439
+ if (!experiment) {
440
+ if (this.experimentsLoaded) {
441
+ // Experiments loaded but this one doesn't exist
442
+ logger.debug(`Experiment not found: ${experimentName}`);
443
+ return null;
444
+ }
445
+ // Experiments not loaded yet - can't assign variant without knowing variants
446
+ logger.debug(`Experiments not loaded yet, cannot assign variant for: ${experimentName}`);
447
+ return null;
448
+ }
449
+ if (!experiment.variants || experiment.variants.length === 0) {
450
+ logger.warn(`Experiment ${experimentName} has no variants`);
451
+ return null;
452
+ }
453
+ // Get the user ID for deterministic assignment
454
+ const userId = this.userId ?? this.anonymousIdValue;
455
+ // Compute deterministic variant assignment
456
+ const variant = this.computeVariant(userId, experimentName, experiment.variants);
457
+ // Store as super property so it's attached to all events
458
+ const propertyName = `experiment_${this.toSnakeCase(experimentName)}`;
459
+ this.setSuperProperty(propertyName, variant);
460
+ logger.debug(`Assigned variant '${variant}' for experiment '${experimentName}'`);
461
+ return variant;
462
+ }
463
+ /**
464
+ * Returns a promise that resolves when experiments have been loaded.
465
+ * Useful for waiting before calling getVariant() to ensure server-side experiments are available.
466
+ */
467
+ ready() {
468
+ return this.experimentsReadyPromise;
469
+ }
398
470
  /**
399
471
  * Clean up resources (stop timers, etc.).
400
472
  */
@@ -559,6 +631,78 @@ export class MostlyGoodMetrics {
559
631
  // the regular flush mechanism for most events
560
632
  logger.debug('Page unloading, attempting beacon flush');
561
633
  }
634
+ // =====================================================
635
+ // A/B Testing methods
636
+ // =====================================================
637
+ /**
638
+ * Fetch experiments from the server.
639
+ * Called automatically during initialization.
640
+ */
641
+ async fetchExperiments() {
642
+ const url = `${this.config.baseURL}/v1/experiments`;
643
+ try {
644
+ logger.debug('Fetching experiments...');
645
+ const response = await fetch(url, {
646
+ method: 'GET',
647
+ headers: {
648
+ Authorization: `Bearer ${this.config.apiKey}`,
649
+ 'Content-Type': 'application/json',
650
+ },
651
+ });
652
+ if (!response.ok) {
653
+ logger.warn(`Failed to fetch experiments: ${response.status}`);
654
+ this.markExperimentsReady();
655
+ return;
656
+ }
657
+ const data = (await response.json());
658
+ // Cache experiments by ID
659
+ this.experiments.clear();
660
+ for (const experiment of data.experiments || []) {
661
+ this.experiments.set(experiment.id, experiment);
662
+ }
663
+ logger.debug(`Loaded ${this.experiments.size} experiments`);
664
+ }
665
+ catch (e) {
666
+ logger.warn('Failed to fetch experiments', e);
667
+ }
668
+ finally {
669
+ this.markExperimentsReady();
670
+ }
671
+ }
672
+ /**
673
+ * Mark experiments as loaded and resolve the ready promise.
674
+ */
675
+ markExperimentsReady() {
676
+ this.experimentsLoaded = true;
677
+ if (this.experimentsReadyResolve) {
678
+ this.experimentsReadyResolve();
679
+ this.experimentsReadyResolve = null;
680
+ }
681
+ }
682
+ /**
683
+ * Compute a deterministic variant assignment based on userId and experimentName.
684
+ * Same user + same experiment = same variant (consistent assignment).
685
+ */
686
+ computeVariant(userId, experimentName, variants) {
687
+ // Create a deterministic hash from userId + experimentName
688
+ const hashInput = `${userId}:${experimentName}`;
689
+ const hash = this.simpleHash(hashInput);
690
+ // Convert hash to a positive number and mod by variant count
691
+ const hashNum = Math.abs(parseInt(hash, 16));
692
+ const variantIndex = hashNum % variants.length;
693
+ return variants[variantIndex];
694
+ }
695
+ /**
696
+ * Convert a string to snake_case.
697
+ * Used for experiment property names (e.g., "button-color" -> "button_color").
698
+ */
699
+ toSnakeCase(str) {
700
+ return str
701
+ .replace(/([A-Z])/g, '_$1')
702
+ .replace(/[-\s]+/g, '_')
703
+ .toLowerCase()
704
+ .replace(/^_/, '');
705
+ }
562
706
  }
563
707
  MostlyGoodMetrics.instance = null;
564
708
  //# sourceMappingURL=client.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"client.js","sourceRoot":"","sources":["../../src/client.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,EAAE,eAAe,EAAE,MAAM,UAAU,CAAC;AACnD,OAAO,EAAE,0BAA0B,EAAE,MAAM,WAAW,CAAC;AACvD,OAAO,EAAE,oBAAoB,EAAE,WAAW,EAAE,MAAM,WAAW,CAAC;AAC9D,OAAO,EASL,YAAY,EACZ,gBAAgB,GAEjB,MAAM,SAAS,CAAC;AACjB,OAAO,EACL,KAAK,EACL,gBAAgB,EAChB,mBAAmB,EACnB,YAAY,EACZ,cAAc,EACd,eAAe,EACf,SAAS,EACT,YAAY,EACZ,WAAW,EACX,oBAAoB,EACpB,kBAAkB,EAClB,iBAAiB,GAClB,MAAM,SAAS,CAAC;AAEjB,MAAM,cAAc,GAAG,GAAG,CAAC,CAAC,4BAA4B;AAExD;;;GAGG;AACH,MAAM,OAAO,iBAAiB;IAY5B;;OAEG;IACH,YAAoB,MAAwB;QATpC,eAAU,GAA0C,IAAI,CAAC;QACzD,uBAAkB,GAAG,KAAK,CAAC;QAG3B,mBAAc,GAAG,KAAK,CAAC;QAumBvB,2BAAsB,GAAG,GAAS,EAAE;YAC1C,IAAI,QAAQ,CAAC,MAAM,EAAE,CAAC;gBACpB,mBAAmB;gBACnB,IAAI,CAAC,KAAK,CAAC,YAAY,CAAC,gBAAgB,CAAC,CAAC;gBAC1C,KAAK,IAAI,CAAC,KAAK,EAAE,CAAC,CAAC,iCAAiC;YACtD,CAAC;iBAAM,CAAC;gBACN,mBAAmB;gBACnB,IAAI,CAAC,KAAK,CAAC,YAAY,CAAC,UAAU,CAAC,CAAC;YACtC,CAAC;QACH,CAAC,CAAC;QAEM,uBAAkB,GAAG,GAAS,EAAE;YACtC,kDAAkD;YAClD,IAAI,CAAC,eAAe,EAAE,CAAC;QACzB,CAAC,CAAC;QAEM,mBAAc,GAAG,GAAS,EAAE;YAClC,kDAAkD;YAClD,IAAI,CAAC,eAAe,EAAE,CAAC;QACzB,CAAC,CAAC;QApnBA,IAAI,CAAC,MAAM,GAAG,oBAAoB,CAAC,MAAM,CAAC,CAAC;QAC3C,IAAI,CAAC,cAAc,GAAG,YAAY,EAAE,CAAC;QAErC,6DAA6D;QAC7D,WAAW,CAAC,gBAAgB,CAAC,MAAM,CAAC,YAAY,EAAE,MAAM,CAAC,cAAc,CAAC,CAAC;QACzE,IAAI,CAAC,gBAAgB,GAAG,WAAW,CAAC,qBAAqB,CACvD,MAAM,CAAC,WAAW,EAClB,mBAAmB,CACpB,CAAC;QAEF,iBAAiB;QACjB,eAAe,CAAC,IAAI,CAAC,MAAM,CAAC,kBAAkB,CAAC,CAAC;QAEhD,qBAAqB;QACrB,IAAI,CAAC,OAAO,GAAG,IAAI,CAAC,MAAM,CAAC,OAAO,IAAI,oBAAoB,CAAC,IAAI,CAAC,MAAM,CAAC,eAAe,CAAC,CAAC;QAExF,4BAA4B;QAC5B,IAAI,CAAC,aAAa,GAAG,IAAI,CAAC,MAAM,CAAC,aAAa,IAAI,0BAA0B,EAAE,CAAC;QAE/E,MAAM,CAAC,IAAI,CAAC,mDAAmD,IAAI,CAAC,MAAM,CAAC,WAAW,EAAE,CAAC,CAAC;QAE1F,yBAAyB;QACzB,IAAI,CAAC,eAAe,EAAE,CAAC;QAEvB,4BAA4B;QAC5B,IAAI,IAAI,CAAC,MAAM,CAAC,uBAAuB,EAAE,CAAC;YACxC,IAAI,CAAC,sBAAsB,EAAE,CAAC;QAChC,CAAC;IACH,CAAC;IAED;;;OAGG;IACH,MAAM,CAAC,SAAS,CAAC,MAAwB;QACvC,IAAI,CAAC,MAAM,CAAC,MAAM,EAAE,CAAC;YACnB,MAAM,IAAI,KAAK,CAAC,qBAAqB,CAAC,CAAC;QACzC,CAAC;QAED,IAAI,iBAAiB,CAAC,QAAQ,EAAE,CAAC;YAC/B,MAAM,CAAC,IAAI,CAAC,6EAA6E,CAAC,CAAC;YAC3F,OAAO,iBAAiB,CAAC,QAAQ,CAAC;QACpC,CAAC;QAED,iBAAiB,CAAC,QAAQ,GAAG,IAAI,iBAAiB,CAAC,MAAM,CAAC,CAAC;QAC3D,OAAO,iBAAiB,CAAC,QAAQ,CAAC;IACpC,CAAC;IAED;;OAEG;IACH,MAAM,KAAK,MAAM;QACf,OAAO,iBAAiB,CAAC,QAAQ,CAAC;IACpC,CAAC;IAED;;OAEG;IACH,MAAM,KAAK,YAAY;QACrB,OAAO,iBAAiB,CAAC,QAAQ,KAAK,IAAI,CAAC;IAC7C,CAAC;IAED;;OAEG;IACH,MAAM,CAAC,KAAK;QACV,IAAI,iBAAiB,CAAC,QAAQ,EAAE,CAAC;YAC/B,iBAAiB,CAAC,QAAQ,CAAC,OAAO,EAAE,CAAC;YACrC,iBAAiB,CAAC,QAAQ,GAAG,IAAI,CAAC;QACpC,CAAC;IACH,CAAC;IAED,wDAAwD;IACxD,2DAA2D;IAC3D,wDAAwD;IAExD;;OAEG;IACH,MAAM,CAAC,KAAK,CAAC,IAAY,EAAE,UAA4B;QACrD,iBAAiB,CAAC,QAAQ,EAAE,KAAK,CAAC,IAAI,EAAE,UAAU,CAAC,CAAC;IACtD,CAAC;IAED;;;;OAIG;IACH,MAAM,CAAC,QAAQ,CAAC,MAAc,EAAE,OAAqB;QACnD,iBAAiB,CAAC,QAAQ,EAAE,QAAQ,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;IACxD,CAAC;IAED;;OAEG;IACH,MAAM,CAAC,aAAa;QAClB,iBAAiB,CAAC,QAAQ,EAAE,aAAa,EAAE,CAAC;IAC9C,CAAC;IAED;;OAEG;IACH,MAAM,CAAC,KAAK;QACV,OAAO,iBAAiB,CAAC,QAAQ,EAAE,KAAK,EAAE,IAAI,OAAO,CAAC,OAAO,EAAE,CAAC;IAClE,CAAC;IAED;;OAEG;IACH,MAAM,CAAC,eAAe;QACpB,iBAAiB,CAAC,QAAQ,EAAE,eAAe,EAAE,CAAC;IAChD,CAAC;IAED;;OAEG;IACH,MAAM,CAAC,kBAAkB;QACvB,OAAO,iBAAiB,CAAC,QAAQ,EAAE,kBAAkB,EAAE,IAAI,OAAO,CAAC,OAAO,EAAE,CAAC;IAC/E,CAAC;IAED;;OAEG;IACH,MAAM,CAAC,oBAAoB;QACzB,OAAO,iBAAiB,CAAC,QAAQ,EAAE,oBAAoB,EAAE,IAAI,OAAO,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC;IAClF,CAAC;IAED;;OAEG;IACH,MAAM,CAAC,gBAAgB,CAAC,GAAW,EAAE,KAA8B;QACjE,iBAAiB,CAAC,QAAQ,EAAE,gBAAgB,CAAC,GAAG,EAAE,KAAK,CAAC,CAAC;IAC3D,CAAC;IAED;;OAEG;IACH,MAAM,CAAC,kBAAkB,CAAC,UAA2B;QACnD,iBAAiB,CAAC,QAAQ,EAAE,kBAAkB,CAAC,UAAU,CAAC,CAAC;IAC7D,CAAC;IAED;;OAEG;IACH,MAAM,CAAC,mBAAmB,CAAC,GAAW;QACpC,iBAAiB,CAAC,QAAQ,EAAE,mBAAmB,CAAC,GAAG,CAAC,CAAC;IACvD,CAAC;IAED;;OAEG;IACH,MAAM,CAAC,oBAAoB;QACzB,iBAAiB,CAAC,QAAQ,EAAE,oBAAoB,EAAE,CAAC;IACrD,CAAC;IAED;;OAEG;IACH,MAAM,CAAC,kBAAkB;QACvB,OAAO,iBAAiB,CAAC,QAAQ,EAAE,kBAAkB,EAAE,IAAI,EAAE,CAAC;IAChE,CAAC;IAED,wDAAwD;IACxD,sBAAsB;IACtB,wDAAwD;IAExD;;OAEG;IACH,IAAI,MAAM;QACR,OAAO,WAAW,CAAC,SAAS,EAAE,CAAC;IACjC,CAAC;IAED;;OAEG;IACH,IAAI,SAAS;QACX,OAAO,IAAI,CAAC,cAAc,CAAC;IAC7B,CAAC;IAED;;OAEG;IACH,IAAI,WAAW;QACb,OAAO,IAAI,CAAC,gBAAgB,CAAC;IAC/B,CAAC;IAED;;OAEG;IACH,IAAI,UAAU;QACZ,OAAO,IAAI,CAAC,kBAAkB,CAAC;IACjC,CAAC;IAED;;OAEG;IACH,IAAI,aAAa;QACf,OAAO,EAAE,GAAG,IAAI,CAAC,MAAM,EAAE,CAAC;IAC5B,CAAC;IAED,wDAAwD;IACxD,mBAAmB;IACnB,wDAAwD;IAExD;;OAEG;IACH,KAAK,CAAC,IAAY,EAAE,UAA4B;QAC9C,IAAI,CAAC;YACH,iBAAiB,CAAC,IAAI,CAAC,CAAC;QAC1B,CAAC;QAAC,OAAO,CAAC,EAAE,CAAC;YACX,MAAM,CAAC,KAAK,CAAC,uBAAuB,IAAI,EAAE,EAAE,CAAC,CAAC,CAAC;YAC/C,OAAO;QACT,CAAC;QAED,MAAM,mBAAmB,GAAG,kBAAkB,CAAC,UAAU,CAAC,CAAC;QAC3D,MAAM,eAAe,GAAG,WAAW,CAAC,kBAAkB,EAAE,CAAC;QAEzD,4EAA4E;QAC5E,iFAAiF;QACjF,MAAM,gBAAgB,GAAoB;YACxC,GAAG,eAAe;YAClB,GAAG,mBAAmB;YACtB,CAAC,gBAAgB,CAAC,WAAW,CAAC,EAAE,gBAAgB,EAAE;YAClD,CAAC,gBAAgB,CAAC,YAAY,CAAC,EAAE,cAAc,EAAE;YACjD,CAAC,gBAAgB,CAAC,GAAG,CAAC,EAAE,IAAI,CAAC,MAAM,CAAC,GAAG;SACxC,CAAC;QAEF,MAAM,KAAK,GAAa;YACtB,IAAI;YACJ,eAAe,EAAE,YAAY,EAAE;YAC/B,SAAS,EAAE,eAAe,EAAE;YAE5B,OAAO,EAAE,IAAI,CAAC,MAAM,IAAI,IAAI,CAAC,gBAAgB;YAE7C,UAAU,EAAE,IAAI,CAAC,cAAc;YAC/B,QAAQ,EAAE,IAAI,CAAC,MAAM,CAAC,QAAQ;YAC9B,WAAW,EAAE,IAAI,CAAC,MAAM,CAAC,UAAU,IAAI,SAAS;YAChD,UAAU,EAAE,IAAI,CAAC,MAAM,CAAC,SAAS,IAAI,YAAY,EAAE,IAAI,SAAS;YAChE,WAAW,EAAE,IAAI,CAAC,MAAM,CAAC,WAAW;YACpC,MAAM,EAAE,SAAS,EAAE;YACnB,QAAQ,EAAE,WAAW,EAAE;YACvB,UAAU,EAAE,MAAM,CAAC,IAAI,CAAC,gBAAgB,CAAC,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC,gBAAgB,CAAC,CAAC,CAAC,SAAS;SACpF,CAAC;QAEF,MAAM,CAAC,KAAK,CAAC,mBAAmB,IAAI,EAAE,EAAE,KAAK,CAAC,CAAC;QAE/C,6BAA6B;QAC7B,IAAI,CAAC,OAAO,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE,EAAE;YACpC,MAAM,CAAC,KAAK,CAAC,uBAAuB,EAAE,CAAC,CAAC,CAAC;QAC3C,CAAC,CAAC,CAAC;QAEH,6CAA6C;QAC7C,KAAK,IAAI,CAAC,cAAc,EAAE,CAAC;IAC7B,CAAC;IAED;;;;;;;OAOG;IACH,QAAQ,CAAC,MAAc,EAAE,OAAqB;QAC5C,IAAI,CAAC,MAAM,EAAE,CAAC;YACZ,MAAM,CAAC,IAAI,CAAC,mCAAmC,CAAC,CAAC;YACjD,OAAO;QACT,CAAC;QAED,MAAM,CAAC,KAAK,CAAC,qBAAqB,MAAM,EAAE,CAAC,CAAC;QAC5C,WAAW,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC;QAE9B,uEAAuE;QACvE,0HAA0H;QAC1H,IAAI,OAAO,IAAI,CAAC,OAAO,CAAC,KAAK,IAAI,OAAO,CAAC,IAAI,CAAC,EAAE,CAAC;YAC/C,IAAI,CAAC,yBAAyB,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;QAClD,CAAC;IACH,CAAC;IAED;;;OAGG;IACK,yBAAyB,CAAC,MAAc,EAAE,OAAoB;QACpE,uCAAuC;QACvC,MAAM,aAAa,GAAG,IAAI,CAAC,SAAS,CAAC,EAAE,MAAM,EAAE,KAAK,EAAE,OAAO,CAAC,KAAK,EAAE,IAAI,EAAE,OAAO,CAAC,IAAI,EAAE,CAAC,CAAC;QAC3F,MAAM,WAAW,GAAG,IAAI,CAAC,UAAU,CAAC,aAAa,CAAC,CAAC;QAEnD,MAAM,UAAU,GAAG,WAAW,CAAC,eAAe,EAAE,CAAC;QACjD,MAAM,UAAU,GAAG,WAAW,CAAC,qBAAqB,EAAE,CAAC;QACvD,MAAM,GAAG,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;QACvB,MAAM,iBAAiB,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,IAAI,CAAC;QAE9C,MAAM,WAAW,GAAG,UAAU,KAAK,WAAW,CAAC;QAC/C,MAAM,WAAW,GAAG,CAAC,UAAU,IAAI,GAAG,GAAG,UAAU,GAAG,iBAAiB,CAAC;QAExE,IAAI,WAAW,IAAI,WAAW,EAAE,CAAC;YAC/B,MAAM,CAAC,KAAK,CACV,wCAAwC,WAAW,iBAAiB,WAAW,GAAG,CACnF,CAAC;YAEF,mDAAmD;YACnD,MAAM,UAAU,GAAoB,EAAE,CAAC;YACvC,IAAI,OAAO,CAAC,KAAK,EAAE,CAAC;gBAClB,UAAU,CAAC,KAAK,GAAG,OAAO,CAAC,KAAK,CAAC;YACnC,CAAC;YACD,IAAI,OAAO,CAAC,IAAI,EAAE,CAAC;gBACjB,UAAU,CAAC,IAAI,GAAG,OAAO,CAAC,IAAI,CAAC;YACjC,CAAC;YAED,4BAA4B;YAC5B,IAAI,CAAC,KAAK,CAAC,YAAY,CAAC,QAAQ,EAAE,UAAU,CAAC,CAAC;YAE9C,mCAAmC;YACnC,WAAW,CAAC,eAAe,CAAC,WAAW,CAAC,CAAC;YACzC,WAAW,CAAC,qBAAqB,CAAC,GAAG,CAAC,CAAC;QACzC,CAAC;aAAM,CAAC;YACN,MAAM,CAAC,KAAK,CAAC,sCAAsC,CAAC,CAAC;QACvD,CAAC;IACH,CAAC;IAED;;;OAGG;IACK,UAAU,CAAC,GAAW;QAC5B,IAAI,IAAI,GAAG,CAAC,CAAC;QACb,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,GAAG,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE,CAAC;YACpC,MAAM,IAAI,GAAG,GAAG,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC;YAC/B,IAAI,GAAG,CAAC,IAAI,IAAI,CAAC,CAAC,GAAG,IAAI,GAAG,IAAI,CAAC;YACjC,IAAI,GAAG,IAAI,GAAG,IAAI,CAAC,CAAC,4BAA4B;QAClD,CAAC;QACD,OAAO,IAAI,CAAC,QAAQ,CAAC,EAAE,CAAC,CAAC;IAC3B,CAAC;IAED;;;OAGG;IACH,aAAa;QACX,MAAM,CAAC,KAAK,CAAC,yBAAyB,CAAC,CAAC;QACxC,WAAW,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC;QAC5B,WAAW,CAAC,kBAAkB,EAAE,CAAC;IACnC,CAAC;IAED;;OAEG;IACH,eAAe;QACb,IAAI,CAAC,cAAc,GAAG,YAAY,EAAE,CAAC;QACrC,MAAM,CAAC,KAAK,CAAC,wBAAwB,IAAI,CAAC,cAAc,EAAE,CAAC,CAAC;IAC9D,CAAC;IAED;;OAEG;IACH,KAAK,CAAC,KAAK;QACT,IAAI,IAAI,CAAC,kBAAkB,EAAE,CAAC;YAC5B,MAAM,CAAC,KAAK,CAAC,2BAA2B,CAAC,CAAC;YAC1C,OAAO;QACT,CAAC;QAED,IAAI,CAAC,kBAAkB,GAAG,IAAI,CAAC;QAC/B,MAAM,CAAC,KAAK,CAAC,gBAAgB,CAAC,CAAC;QAE/B,IAAI,CAAC;YACH,MAAM,IAAI,CAAC,YAAY,EAAE,CAAC;QAC5B,CAAC;gBAAS,CAAC;YACT,IAAI,CAAC,kBAAkB,GAAG,KAAK,CAAC;QAClC,CAAC;IACH,CAAC;IAED;;OAEG;IACH,KAAK,CAAC,kBAAkB;QACtB,MAAM,CAAC,KAAK,CAAC,6BAA6B,CAAC,CAAC;QAC5C,MAAM,IAAI,CAAC,OAAO,CAAC,KAAK,EAAE,CAAC;IAC7B,CAAC;IAED;;OAEG;IACH,KAAK,CAAC,oBAAoB;QACxB,OAAO,IAAI,CAAC,OAAO,CAAC,UAAU,EAAE,CAAC;IACnC,CAAC;IAED;;OAEG;IACH,gBAAgB,CAAC,GAAW,EAAE,KAA8B;QAC1D,MAAM,CAAC,KAAK,CAAC,2BAA2B,GAAG,EAAE,CAAC,CAAC;QAC/C,WAAW,CAAC,gBAAgB,CAAC,GAAG,EAAE,KAAK,CAAC,CAAC;IAC3C,CAAC;IAED;;OAEG;IACH,kBAAkB,CAAC,UAA2B;QAC5C,MAAM,CAAC,KAAK,CAAC,6BAA6B,MAAM,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;QAChF,WAAW,CAAC,kBAAkB,CAAC,UAAU,CAAC,CAAC;IAC7C,CAAC;IAED;;OAEG;IACH,mBAAmB,CAAC,GAAW;QAC7B,MAAM,CAAC,KAAK,CAAC,4BAA4B,GAAG,EAAE,CAAC,CAAC;QAChD,WAAW,CAAC,mBAAmB,CAAC,GAAG,CAAC,CAAC;IACvC,CAAC;IAED;;OAEG;IACH,oBAAoB;QAClB,MAAM,CAAC,KAAK,CAAC,+BAA+B,CAAC,CAAC;QAC9C,WAAW,CAAC,oBAAoB,EAAE,CAAC;IACrC,CAAC;IAED;;OAEG;IACH,kBAAkB;QAChB,OAAO,WAAW,CAAC,kBAAkB,EAAE,CAAC;IAC1C,CAAC;IAED;;OAEG;IACH,OAAO;QACL,IAAI,CAAC,cAAc,EAAE,CAAC;QACtB,IAAI,CAAC,wBAAwB,EAAE,CAAC;QAChC,MAAM,CAAC,KAAK,CAAC,sCAAsC,CAAC,CAAC;IACvD,CAAC;IAED,wDAAwD;IACxD,kBAAkB;IAClB,wDAAwD;IAEhD,KAAK,CAAC,cAAc;QAC1B,MAAM,KAAK,GAAG,MAAM,IAAI,CAAC,OAAO,CAAC,UAAU,EAAE,CAAC;QAC9C,IAAI,KAAK,IAAI,IAAI,CAAC,MAAM,CAAC,YAAY,EAAE,CAAC;YACtC,MAAM,CAAC,KAAK,CAAC,gDAAgD,CAAC,CAAC;YAC/D,KAAK,IAAI,CAAC,KAAK,EAAE,CAAC;QACpB,CAAC;IACH,CAAC;IAEO,KAAK,CAAC,YAAY;QACxB,IAAI,aAAa,GAAG,IAAI,CAAC;QACzB,OAAO,aAAa,EAAE,CAAC;YACrB,MAAM,UAAU,GAAG,MAAM,IAAI,CAAC,OAAO,CAAC,UAAU,EAAE,CAAC;YACnD,IAAI,UAAU,KAAK,CAAC,EAAE,CAAC;gBACrB,MAAM,CAAC,KAAK,CAAC,oBAAoB,CAAC,CAAC;gBACnC,MAAM;YACR,CAAC;YAED,sBAAsB;YACtB,IAAI,IAAI,CAAC,aAAa,CAAC,aAAa,EAAE,EAAE,CAAC;gBACvC,MAAM,CAAC,KAAK,CAAC,8BAA8B,CAAC,CAAC;gBAC7C,MAAM;YACR,CAAC;YAED,MAAM,MAAM,GAAG,MAAM,IAAI,CAAC,OAAO,CAAC,WAAW,CAAC,IAAI,CAAC,MAAM,CAAC,YAAY,CAAC,CAAC;YACxE,IAAI,MAAM,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;gBACxB,MAAM;YACR,CAAC;YAED,MAAM,OAAO,GAAG,IAAI,CAAC,YAAY,CAAC,MAAM,CAAC,CAAC;YAC1C,MAAM,MAAM,GAAG,MAAM,IAAI,CAAC,aAAa,CAAC,UAAU,CAAC,OAAO,EAAE,IAAI,CAAC,MAAM,CAAC,CAAC;YAEzE,IAAI,MAAM,CAAC,OAAO,EAAE,CAAC;gBACnB,MAAM,CAAC,KAAK,CAAC,qBAAqB,MAAM,CAAC,MAAM,SAAS,CAAC,CAAC;gBAC1D,MAAM,IAAI,CAAC,OAAO,CAAC,YAAY,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC;YACjD,CAAC;iBAAM,CAAC;gBACN,MAAM,CAAC,IAAI,CAAC,0BAA0B,MAAM,CAAC,KAAK,CAAC,OAAO,EAAE,CAAC,CAAC;gBAE9D,sCAAsC;gBACtC,IAAI,IAAI,CAAC,MAAM,CAAC,OAAO,EAAE,CAAC;oBACxB,IAAI,CAAC;wBACH,IAAI,CAAC,MAAM,CAAC,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;oBACpC,CAAC;oBAAC,OAAO,CAAC,EAAE,CAAC;wBACX,MAAM,CAAC,KAAK,CAAC,2BAA2B,EAAE,CAAC,CAAC,CAAC;oBAC/C,CAAC;gBACH,CAAC;gBAED,IAAI,CAAC,MAAM,CAAC,WAAW,EAAE,CAAC;oBACxB,4CAA4C;oBAC5C,MAAM,CAAC,IAAI,CAAC,4CAA4C,CAAC,CAAC;oBAC1D,MAAM,IAAI,CAAC,OAAO,CAAC,YAAY,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC;gBACjD,CAAC;qBAAM,CAAC;oBACN,4CAA4C;oBAC5C,aAAa,GAAG,KAAK,CAAC;gBACxB,CAAC;YACH,CAAC;YAED,+DAA+D;YAC/D,MAAM,KAAK,CAAC,cAAc,CAAC,CAAC;QAC9B,CAAC;IACH,CAAC;IAEO,YAAY,CAAC,MAAkB;QACrC,MAAM,OAAO,GAAoB;YAC/B,QAAQ,EAAE,IAAI,CAAC,MAAM,CAAC,QAAQ;YAC9B,WAAW,EAAE,IAAI,CAAC,MAAM,CAAC,UAAU,IAAI,SAAS;YAChD,UAAU,EAAE,IAAI,CAAC,MAAM,CAAC,SAAS,IAAI,YAAY,EAAE,IAAI,SAAS;YAEhE,OAAO,EAAE,IAAI,CAAC,MAAM,IAAI,IAAI,CAAC,gBAAgB;YAE7C,UAAU,EAAE,IAAI,CAAC,cAAc;YAC/B,WAAW,EAAE,IAAI,CAAC,MAAM,CAAC,WAAW;YACpC,MAAM,EAAE,SAAS,EAAE;YACnB,QAAQ,EAAE,WAAW,EAAE;SACxB,CAAC;QAEF,OAAO,EAAE,MAAM,EAAE,OAAO,EAAE,CAAC;IAC7B,CAAC;IAEO,eAAe;QACrB,IAAI,IAAI,CAAC,UAAU,EAAE,CAAC;YACpB,OAAO;QACT,CAAC;QAED,IAAI,CAAC,UAAU,GAAG,WAAW,CAAC,GAAG,EAAE;YACjC,KAAK,IAAI,CAAC,KAAK,EAAE,CAAC;QACpB,CAAC,EAAE,IAAI,CAAC,MAAM,CAAC,aAAa,GAAG,IAAI,CAAC,CAAC;QAErC,MAAM,CAAC,KAAK,CAAC,wBAAwB,IAAI,CAAC,MAAM,CAAC,aAAa,aAAa,CAAC,CAAC;IAC/E,CAAC;IAEO,cAAc;QACpB,IAAI,IAAI,CAAC,UAAU,EAAE,CAAC;YACpB,aAAa,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC;YAC/B,IAAI,CAAC,UAAU,GAAG,IAAI,CAAC;YACvB,MAAM,CAAC,KAAK,CAAC,qBAAqB,CAAC,CAAC;QACtC,CAAC;IACH,CAAC;IAEO,sBAAsB;QAC5B,IAAI,IAAI,CAAC,cAAc,EAAE,CAAC;YACxB,OAAO;QACT,CAAC;QAED,IAAI,OAAO,MAAM,KAAK,WAAW,IAAI,OAAO,QAAQ,KAAK,WAAW,EAAE,CAAC;YACrE,MAAM,CAAC,KAAK,CAAC,yDAAyD,CAAC,CAAC;YACxE,OAAO;QACT,CAAC;QAED,IAAI,CAAC,cAAc,GAAG,IAAI,CAAC;QAE3B,8BAA8B;QAC9B,IAAI,CAAC,oBAAoB,EAAE,CAAC;QAE5B,mBAAmB;QACnB,IAAI,CAAC,cAAc,EAAE,CAAC;QAEtB,mDAAmD;QACnD,QAAQ,CAAC,gBAAgB,CAAC,kBAAkB,EAAE,IAAI,CAAC,sBAAsB,CAAC,CAAC;QAE3E,uBAAuB;QACvB,MAAM,CAAC,gBAAgB,CAAC,cAAc,EAAE,IAAI,CAAC,kBAAkB,CAAC,CAAC;QACjE,MAAM,CAAC,gBAAgB,CAAC,UAAU,EAAE,IAAI,CAAC,cAAc,CAAC,CAAC;QAEzD,MAAM,CAAC,KAAK,CAAC,4BAA4B,CAAC,CAAC;IAC7C,CAAC;IAEO,wBAAwB;QAC9B,IAAI,OAAO,QAAQ,KAAK,WAAW,EAAE,CAAC;YACpC,QAAQ,CAAC,mBAAmB,CAAC,kBAAkB,EAAE,IAAI,CAAC,sBAAsB,CAAC,CAAC;QAChF,CAAC;QACD,IAAI,OAAO,MAAM,KAAK,WAAW,EAAE,CAAC;YAClC,MAAM,CAAC,mBAAmB,CAAC,cAAc,EAAE,IAAI,CAAC,kBAAkB,CAAC,CAAC;YACpE,MAAM,CAAC,mBAAmB,CAAC,UAAU,EAAE,IAAI,CAAC,cAAc,CAAC,CAAC;QAC9D,CAAC;IACH,CAAC;IAEO,oBAAoB;QAC1B,MAAM,cAAc,GAAG,IAAI,CAAC,MAAM,CAAC,UAAU,CAAC;QAC9C,MAAM,eAAe,GAAG,WAAW,CAAC,aAAa,EAAE,CAAC;QAEpD,IAAI,CAAC,cAAc,EAAE,CAAC;YACpB,sDAAsD;YACtD,OAAO;QACT,CAAC;QAED,IAAI,WAAW,CAAC,aAAa,EAAE,EAAE,CAAC;YAChC,oCAAoC;YACpC,IAAI,CAAC,KAAK,CAAC,YAAY,CAAC,aAAa,EAAE;gBACrC,CAAC,gBAAgB,CAAC,OAAO,CAAC,EAAE,cAAc;aAC3C,CAAC,CAAC;YACH,WAAW,CAAC,aAAa,CAAC,cAAc,CAAC,CAAC;QAC5C,CAAC;aAAM,IAAI,eAAe,IAAI,eAAe,KAAK,cAAc,EAAE,CAAC;YACjE,iCAAiC;YACjC,IAAI,CAAC,KAAK,CAAC,YAAY,CAAC,WAAW,EAAE;gBACnC,CAAC,gBAAgB,CAAC,OAAO,CAAC,EAAE,cAAc;gBAC1C,CAAC,gBAAgB,CAAC,gBAAgB,CAAC,EAAE,eAAe;aACrD,CAAC,CAAC;YACH,WAAW,CAAC,aAAa,CAAC,cAAc,CAAC,CAAC;QAC5C,CAAC;aAAM,IAAI,CAAC,eAAe,EAAE,CAAC;YAC5B,mCAAmC;YACnC,WAAW,CAAC,aAAa,CAAC,cAAc,CAAC,CAAC;QAC5C,CAAC;IACH,CAAC;IAEO,cAAc;QACpB,IAAI,CAAC,KAAK,CAAC,YAAY,CAAC,UAAU,CAAC,CAAC;IACtC,CAAC;IAuBO,eAAe;QACrB,0DAA0D;QAC1D,IAAI,OAAO,SAAS,KAAK,WAAW,IAAI,CAAC,SAAS,CAAC,UAAU,EAAE,CAAC;YAC9D,OAAO;QACT,CAAC;QAED,gDAAgD;QAChD,4DAA4D;QAC5D,8CAA8C;QAC9C,MAAM,CAAC,KAAK,CAAC,yCAAyC,CAAC,CAAC;IAC1D,CAAC;;AA/oBc,0BAAQ,GAA6B,IAAI,AAAjC,CAAkC"}
1
+ {"version":3,"file":"client.js","sourceRoot":"","sources":["../../src/client.ts"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;GA2BG;AAEH,cAAc;AACd,OAAO,EAAE,iBAAiB,EAAE,MAAM,UAAU,CAAC;AAqB7C,cAAc;AACd,OAAO,EAAE,QAAQ,EAAE,MAAM,SAAS,CAAC;AAEnC,YAAY;AACZ,OAAO,EACL,YAAY,EACZ,gBAAgB,EAChB,oBAAoB,EACpB,WAAW,EACX,gBAAgB,GACjB,MAAM,SAAS,CAAC;AAEjB,wDAAwD;AACxD,OAAO,EAAE,oBAAoB,EAAE,wBAAwB,EAAE,oBAAoB,EAAE,MAAM,WAAW,CAAC;AAEjG,sDAAsD;AACtD,OAAO,EAAE,kBAAkB,EAAE,0BAA0B,EAAE,MAAM,WAAW,CAAC;AAE3E,iCAAiC;AACjC,OAAO,EACL,mBAAmB,EACnB,YAAY,EACZ,eAAe,EACf,gBAAgB,EAChB,iBAAiB,EACjB,kBAAkB,EAClB,cAAc,EACd,gBAAgB,EAChB,YAAY,EACZ,cAAc,GACf,MAAM,SAAS,CAAC;AAEjB,yBAAyB;AACzB,OAAO,EAAE,MAAM,EAAE,MAAM,UAAU,CAAC"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;GA2BG;AAEH,cAAc;AACd,OAAO,EAAE,iBAAiB,EAAE,MAAM,UAAU,CAAC;AAuB7C,cAAc;AACd,OAAO,EAAE,QAAQ,EAAE,MAAM,SAAS,CAAC;AAEnC,YAAY;AACZ,OAAO,EACL,YAAY,EACZ,gBAAgB,EAChB,oBAAoB,EACpB,WAAW,EACX,gBAAgB,GACjB,MAAM,SAAS,CAAC;AAEjB,wDAAwD;AACxD,OAAO,EAAE,oBAAoB,EAAE,wBAAwB,EAAE,oBAAoB,EAAE,MAAM,WAAW,CAAC;AAEjG,sDAAsD;AACtD,OAAO,EAAE,kBAAkB,EAAE,0BAA0B,EAAE,MAAM,WAAW,CAAC;AAE3E,iCAAiC;AACjC,OAAO,EACL,mBAAmB,EACnB,YAAY,EACZ,eAAe,EACf,gBAAgB,EAChB,iBAAiB,EACjB,kBAAkB,EAClB,cAAc,EACd,gBAAgB,EAChB,YAAY,EACZ,cAAc,GACf,MAAM,SAAS,CAAC;AAEjB,yBAAyB;AACzB,OAAO,EAAE,MAAM,EAAE,MAAM,UAAU,CAAC"}
@@ -1 +1 @@
1
- {"version":3,"file":"types.js","sourceRoot":"","sources":["../../src/types.ts"],"names":[],"mappings":"AAqWA;;GAEG;AACH,MAAM,OAAO,QAAS,SAAQ,KAAK;IAKjC,YACE,IAAkB,EAClB,OAAe,EACf,OAAsD;QAEtD,KAAK,CAAC,OAAO,CAAC,CAAC;QACf,IAAI,CAAC,IAAI,GAAG,UAAU,CAAC;QACvB,IAAI,CAAC,IAAI,GAAG,IAAI,CAAC;QACjB,IAAI,CAAC,UAAU,GAAG,OAAO,EAAE,UAAU,CAAC;QACtC,IAAI,CAAC,UAAU,GAAG,OAAO,EAAE,UAAU,CAAC;QAEtC,uEAAuE;QACvE,IAAI,KAAK,CAAC,iBAAiB,EAAE,CAAC;YAC5B,KAAK,CAAC,iBAAiB,CAAC,IAAI,EAAE,QAAQ,CAAC,CAAC;QAC1C,CAAC;IACH,CAAC;CACF;AAED;;GAEG;AACH,MAAM,CAAC,MAAM,YAAY,GAAG;IAC1B,aAAa,EAAE,gBAAgB;IAC/B,WAAW,EAAE,cAAc;IAC3B,UAAU,EAAE,aAAa;IACzB,gBAAgB,EAAE,mBAAmB;IACrC,QAAQ,EAAE,WAAW;CACb,CAAC;AAiBX;;GAEG;AACH,MAAM,CAAC,MAAM,gBAAgB,GAAG;IAC9B,WAAW,EAAE,cAAc;IAC3B,YAAY,EAAE,eAAe;IAC7B,OAAO,EAAE,UAAU;IACnB,gBAAgB,EAAE,mBAAmB;IACrC,GAAG,EAAE,MAAM;CACH,CAAC;AAEX;;GAEG;AACH,MAAM,CAAC,MAAM,oBAAoB,GAAG;IAClC,OAAO,EAAE,sCAAsC;IAC/C,WAAW,EAAE,YAAY;IACzB,YAAY,EAAE,GAAG;IACjB,aAAa,EAAE,EAAE;IACjB,eAAe,EAAE,KAAK;IACtB,kBAAkB,EAAE,KAAK;IACzB,uBAAuB,EAAE,KAAK;CACtB,CAAC;AAEX;;GAEG;AACH,MAAM,CAAC,MAAM,WAAW,GAAG;IACzB,qBAAqB,EAAE,GAAG;IAC1B,cAAc,EAAE,IAAI;IACpB,cAAc,EAAE,CAAC;IACjB,kBAAkB,EAAE,CAAC;IACrB,iBAAiB,EAAE,GAAG;IACtB,0BAA0B,EAAE,IAAI;IAChC,kBAAkB,EAAE,CAAC;IACrB,uBAAuB,EAAE,EAAE,GAAG,IAAI,EAAE,OAAO;IAC3C,2BAA2B,EAAE,IAAI,EAAE,MAAM;CACjC,CAAC;AAEX;;;GAGG;AACH,MAAM,CAAC,MAAM,gBAAgB,GAAG,4BAA4B,CAAC"}
1
+ {"version":3,"file":"types.js","sourceRoot":"","sources":["../../src/types.ts"],"names":[],"mappings":"AAqWA;;GAEG;AACH,MAAM,OAAO,QAAS,SAAQ,KAAK;IAKjC,YACE,IAAkB,EAClB,OAAe,EACf,OAAsD;QAEtD,KAAK,CAAC,OAAO,CAAC,CAAC;QACf,IAAI,CAAC,IAAI,GAAG,UAAU,CAAC;QACvB,IAAI,CAAC,IAAI,GAAG,IAAI,CAAC;QACjB,IAAI,CAAC,UAAU,GAAG,OAAO,EAAE,UAAU,CAAC;QACtC,IAAI,CAAC,UAAU,GAAG,OAAO,EAAE,UAAU,CAAC;QAEtC,uEAAuE;QACvE,IAAI,KAAK,CAAC,iBAAiB,EAAE,CAAC;YAC5B,KAAK,CAAC,iBAAiB,CAAC,IAAI,EAAE,QAAQ,CAAC,CAAC;QAC1C,CAAC;IACH,CAAC;CACF;AAED;;GAEG;AACH,MAAM,CAAC,MAAM,YAAY,GAAG;IAC1B,aAAa,EAAE,gBAAgB;IAC/B,WAAW,EAAE,cAAc;IAC3B,UAAU,EAAE,aAAa;IACzB,gBAAgB,EAAE,mBAAmB;IACrC,QAAQ,EAAE,WAAW;CACb,CAAC;AAuCX;;GAEG;AACH,MAAM,CAAC,MAAM,gBAAgB,GAAG;IAC9B,WAAW,EAAE,cAAc;IAC3B,YAAY,EAAE,eAAe;IAC7B,OAAO,EAAE,UAAU;IACnB,gBAAgB,EAAE,mBAAmB;IACrC,GAAG,EAAE,MAAM;CACH,CAAC;AAEX;;GAEG;AACH,MAAM,CAAC,MAAM,oBAAoB,GAAG;IAClC,OAAO,EAAE,sCAAsC;IAC/C,WAAW,EAAE,YAAY;IACzB,YAAY,EAAE,GAAG;IACjB,aAAa,EAAE,EAAE;IACjB,eAAe,EAAE,KAAK;IACtB,kBAAkB,EAAE,KAAK;IACzB,uBAAuB,EAAE,KAAK;CACtB,CAAC;AAEX;;GAEG;AACH,MAAM,CAAC,MAAM,WAAW,GAAG;IACzB,qBAAqB,EAAE,GAAG;IAC1B,cAAc,EAAE,IAAI;IACpB,cAAc,EAAE,CAAC;IACjB,kBAAkB,EAAE,CAAC;IACrB,iBAAiB,EAAE,GAAG;IACtB,0BAA0B,EAAE,IAAI;IAChC,kBAAkB,EAAE,CAAC;IACrB,uBAAuB,EAAE,EAAE,GAAG,IAAI,EAAE,OAAO;IAC3C,2BAA2B,EAAE,IAAI,EAAE,MAAM;CACjC,CAAC;AAEX;;;GAGG;AACH,MAAM,CAAC,MAAM,gBAAgB,GAAG,4BAA4B,CAAC"}
@@ -13,6 +13,10 @@ export declare class MostlyGoodMetrics {
13
13
  private sessionIdValue;
14
14
  private anonymousIdValue;
15
15
  private lifecycleSetup;
16
+ private experiments;
17
+ private experimentsLoaded;
18
+ private experimentsReadyResolve;
19
+ private experimentsReadyPromise;
16
20
  /**
17
21
  * Private constructor - use `configure` to create an instance.
18
22
  */
@@ -84,6 +88,16 @@ export declare class MostlyGoodMetrics {
84
88
  * Get all current super properties.
85
89
  */
86
90
  static getSuperProperties(): EventProperties;
91
+ /**
92
+ * Get the variant for an experiment.
93
+ * Returns the assigned variant ('a', 'b', etc.) or null if experiment not found.
94
+ */
95
+ static getVariant(experimentName: string): string | null;
96
+ /**
97
+ * Returns a promise that resolves when experiments have been loaded.
98
+ * Useful for waiting before calling getVariant() to ensure server-side experiments are available.
99
+ */
100
+ static ready(): Promise<void>;
87
101
  /**
88
102
  * Get the current user ID.
89
103
  */
@@ -168,6 +182,22 @@ export declare class MostlyGoodMetrics {
168
182
  * Get all current super properties.
169
183
  */
170
184
  getSuperProperties(): EventProperties;
185
+ /**
186
+ * Get the variant for an experiment.
187
+ * Returns the assigned variant ('a', 'b', etc.) or null if experiment not found.
188
+ *
189
+ * Assignment is deterministic based on userId + experimentName, so the same
190
+ * user always gets the same variant for the same experiment.
191
+ *
192
+ * The variant is automatically stored as a super property (experiment_{name}: 'variant')
193
+ * so it's attached to all subsequent events.
194
+ */
195
+ getVariant(experimentName: string): string | null;
196
+ /**
197
+ * Returns a promise that resolves when experiments have been loaded.
198
+ * Useful for waiting before calling getVariant() to ensure server-side experiments are available.
199
+ */
200
+ ready(): Promise<void>;
171
201
  /**
172
202
  * Clean up resources (stop timers, etc.).
173
203
  */
@@ -185,5 +215,24 @@ export declare class MostlyGoodMetrics {
185
215
  private handleBeforeUnload;
186
216
  private handlePageHide;
187
217
  private flushWithBeacon;
218
+ /**
219
+ * Fetch experiments from the server.
220
+ * Called automatically during initialization.
221
+ */
222
+ private fetchExperiments;
223
+ /**
224
+ * Mark experiments as loaded and resolve the ready promise.
225
+ */
226
+ private markExperimentsReady;
227
+ /**
228
+ * Compute a deterministic variant assignment based on userId and experimentName.
229
+ * Same user + same experiment = same variant (consistent assignment).
230
+ */
231
+ private computeVariant;
232
+ /**
233
+ * Convert a string to snake_case.
234
+ * Used for experiment property names (e.g., "button-color" -> "button_color").
235
+ */
236
+ private toSnakeCase;
188
237
  }
189
238
  //# sourceMappingURL=client.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"client.d.ts","sourceRoot":"","sources":["../../src/client.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"client.d.ts","sourceRoot":"","sources":["../../src/client.ts"],"names":[],"mappings":"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"}
@@ -27,7 +27,7 @@
27
27
  * ```
28
28
  */
29
29
  export { MostlyGoodMetrics } from './client';
30
- export type { MGMConfiguration, ResolvedConfiguration, EventProperties, EventPropertyValue, MGMEvent, MGMEventContext, MGMEventsPayload, Platform, SDK, DeviceType, MGMErrorType, SendResult, IEventStorage, INetworkClient, UserProfile, } from './types';
30
+ export type { MGMConfiguration, ResolvedConfiguration, EventProperties, EventPropertyValue, MGMEvent, MGMEventContext, MGMEventsPayload, Platform, SDK, DeviceType, MGMErrorType, SendResult, IEventStorage, INetworkClient, UserProfile, Experiment, ExperimentsResponse, } from './types';
31
31
  export { MGMError } from './types';
32
32
  export { SystemEvents, SystemProperties, DefaultConfiguration, Constraints, EVENT_NAME_REGEX, } from './types';
33
33
  export { InMemoryEventStorage, LocalStorageEventStorage, createDefaultStorage } from './storage';
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;GA2BG;AAGH,OAAO,EAAE,iBAAiB,EAAE,MAAM,UAAU,CAAC;AAG7C,YAAY,EACV,gBAAgB,EAChB,qBAAqB,EACrB,eAAe,EACf,kBAAkB,EAClB,QAAQ,EACR,eAAe,EACf,gBAAgB,EAChB,QAAQ,EACR,GAAG,EACH,UAAU,EACV,YAAY,EACZ,UAAU,EACV,aAAa,EACb,cAAc,EACd,WAAW,GACZ,MAAM,SAAS,CAAC;AAGjB,OAAO,EAAE,QAAQ,EAAE,MAAM,SAAS,CAAC;AAGnC,OAAO,EACL,YAAY,EACZ,gBAAgB,EAChB,oBAAoB,EACpB,WAAW,EACX,gBAAgB,GACjB,MAAM,SAAS,CAAC;AAGjB,OAAO,EAAE,oBAAoB,EAAE,wBAAwB,EAAE,oBAAoB,EAAE,MAAM,WAAW,CAAC;AAGjG,OAAO,EAAE,kBAAkB,EAAE,0BAA0B,EAAE,MAAM,WAAW,CAAC;AAG3E,OAAO,EACL,mBAAmB,EACnB,YAAY,EACZ,eAAe,EACf,gBAAgB,EAChB,iBAAiB,EACjB,kBAAkB,EAClB,cAAc,EACd,gBAAgB,EAChB,YAAY,EACZ,cAAc,GACf,MAAM,SAAS,CAAC;AAGjB,OAAO,EAAE,MAAM,EAAE,MAAM,UAAU,CAAC"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;GA2BG;AAGH,OAAO,EAAE,iBAAiB,EAAE,MAAM,UAAU,CAAC;AAG7C,YAAY,EACV,gBAAgB,EAChB,qBAAqB,EACrB,eAAe,EACf,kBAAkB,EAClB,QAAQ,EACR,eAAe,EACf,gBAAgB,EAChB,QAAQ,EACR,GAAG,EACH,UAAU,EACV,YAAY,EACZ,UAAU,EACV,aAAa,EACb,cAAc,EACd,WAAW,EACX,UAAU,EACV,mBAAmB,GACpB,MAAM,SAAS,CAAC;AAGjB,OAAO,EAAE,QAAQ,EAAE,MAAM,SAAS,CAAC;AAGnC,OAAO,EACL,YAAY,EACZ,gBAAgB,EAChB,oBAAoB,EACpB,WAAW,EACX,gBAAgB,GACjB,MAAM,SAAS,CAAC;AAGjB,OAAO,EAAE,oBAAoB,EAAE,wBAAwB,EAAE,oBAAoB,EAAE,MAAM,WAAW,CAAC;AAGjG,OAAO,EAAE,kBAAkB,EAAE,0BAA0B,EAAE,MAAM,WAAW,CAAC;AAG3E,OAAO,EACL,mBAAmB,EACnB,YAAY,EACZ,eAAe,EACf,gBAAgB,EAChB,iBAAiB,EACjB,kBAAkB,EAClB,cAAc,EACd,gBAAgB,EAChB,YAAY,EACZ,cAAc,GACf,MAAM,SAAS,CAAC;AAGjB,OAAO,EAAE,MAAM,EAAE,MAAM,UAAU,CAAC"}
@@ -320,6 +320,25 @@ export interface UserProfile {
320
320
  */
321
321
  name?: string;
322
322
  }
323
+ /**
324
+ * An experiment configuration from the server.
325
+ */
326
+ export interface Experiment {
327
+ /**
328
+ * The experiment identifier (e.g., "button-color").
329
+ */
330
+ id: string;
331
+ /**
332
+ * The variants for this experiment (e.g., ["a", "b"]).
333
+ */
334
+ variants: string[];
335
+ }
336
+ /**
337
+ * Response from the experiments API endpoint.
338
+ */
339
+ export interface ExperimentsResponse {
340
+ experiments: Experiment[];
341
+ }
323
342
  /**
324
343
  * System property keys (prefixed with $).
325
344
  */
@@ -1 +1 @@
1
- {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../src/types.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../src/types.ts"],"names":[],"mappings":"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"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@mostly-good-metrics/javascript",
3
- "version": "0.5.1",
3
+ "version": "0.6.0",
4
4
  "description": "JavaScript/TypeScript SDK for MostlyGoodMetrics - a lightweight analytics library for web applications",
5
5
  "main": "dist/cjs/index.js",
6
6
  "module": "dist/esm/index.js",
@@ -793,4 +793,259 @@ describe('MostlyGoodMetrics', () => {
793
793
  expect(events[0].properties?.$device_type).not.toBe('hacked');
794
794
  });
795
795
  });
796
+
797
+ describe('getVariant', () => {
798
+ let originalFetch: typeof global.fetch;
799
+
800
+ beforeEach(() => {
801
+ originalFetch = global.fetch;
802
+ });
803
+
804
+ afterEach(() => {
805
+ global.fetch = originalFetch;
806
+ MostlyGoodMetrics.reset();
807
+ });
808
+
809
+ it('should return null when SDK not configured', () => {
810
+ const variant = MostlyGoodMetrics.getVariant('button-color');
811
+ expect(variant).toBeNull();
812
+ });
813
+
814
+ it('should return null when experiment not found after experiments loaded', async () => {
815
+ global.fetch = jest.fn().mockResolvedValue({
816
+ ok: true,
817
+ json: () => Promise.resolve({ experiments: [] }),
818
+ });
819
+
820
+ MostlyGoodMetrics.configure({
821
+ apiKey: 'test-key',
822
+ storage,
823
+ networkClient,
824
+ trackAppLifecycleEvents: false,
825
+ });
826
+
827
+ await MostlyGoodMetrics.ready();
828
+
829
+ const variant = MostlyGoodMetrics.getVariant('nonexistent-experiment');
830
+ expect(variant).toBeNull();
831
+ });
832
+
833
+ it('should return null when called before experiments are loaded', async () => {
834
+ // Never resolve the fetch
835
+ global.fetch = jest.fn().mockImplementation(() => new Promise(() => {}));
836
+
837
+ MostlyGoodMetrics.configure({
838
+ apiKey: 'test-key',
839
+ storage,
840
+ networkClient,
841
+ trackAppLifecycleEvents: false,
842
+ });
843
+
844
+ // Don't wait for ready - experiments not loaded yet
845
+ const variant = MostlyGoodMetrics.getVariant('button-color');
846
+ expect(variant).toBeNull();
847
+ });
848
+
849
+ it('should return variant when experiment exists', async () => {
850
+ global.fetch = jest.fn().mockResolvedValue({
851
+ ok: true,
852
+ json: () =>
853
+ Promise.resolve({
854
+ experiments: [{ id: 'button-color', variants: ['a', 'b'] }],
855
+ }),
856
+ });
857
+
858
+ MostlyGoodMetrics.configure({
859
+ apiKey: 'test-key',
860
+ storage,
861
+ networkClient,
862
+ trackAppLifecycleEvents: false,
863
+ });
864
+
865
+ await MostlyGoodMetrics.ready();
866
+
867
+ const variant = MostlyGoodMetrics.getVariant('button-color');
868
+ expect(variant).not.toBeNull();
869
+ expect(['a', 'b']).toContain(variant);
870
+ });
871
+
872
+ it('should be deterministic - same user gets same variant', async () => {
873
+ global.fetch = jest.fn().mockResolvedValue({
874
+ ok: true,
875
+ json: () =>
876
+ Promise.resolve({
877
+ experiments: [{ id: 'button-color', variants: ['a', 'b', 'c'] }],
878
+ }),
879
+ });
880
+
881
+ MostlyGoodMetrics.configure({
882
+ apiKey: 'test-key',
883
+ storage,
884
+ networkClient,
885
+ trackAppLifecycleEvents: false,
886
+ });
887
+
888
+ await MostlyGoodMetrics.ready();
889
+
890
+ // Call multiple times - should return same variant
891
+ const variant1 = MostlyGoodMetrics.getVariant('button-color');
892
+ const variant2 = MostlyGoodMetrics.getVariant('button-color');
893
+ const variant3 = MostlyGoodMetrics.getVariant('button-color');
894
+
895
+ expect(variant1).toBe(variant2);
896
+ expect(variant2).toBe(variant3);
897
+ });
898
+
899
+ it('should store variant as super property', async () => {
900
+ global.fetch = jest.fn().mockResolvedValue({
901
+ ok: true,
902
+ json: () =>
903
+ Promise.resolve({
904
+ experiments: [{ id: 'button-color', variants: ['a', 'b'] }],
905
+ }),
906
+ });
907
+
908
+ MostlyGoodMetrics.configure({
909
+ apiKey: 'test-key',
910
+ storage,
911
+ networkClient,
912
+ trackAppLifecycleEvents: false,
913
+ });
914
+
915
+ await MostlyGoodMetrics.ready();
916
+
917
+ const variant = MostlyGoodMetrics.getVariant('button-color');
918
+
919
+ const superProps = MostlyGoodMetrics.getSuperProperties();
920
+ expect(superProps.experiment_button_color).toBe(variant);
921
+ });
922
+
923
+ it('should attach experiment variant to tracked events', async () => {
924
+ global.fetch = jest.fn().mockResolvedValue({
925
+ ok: true,
926
+ json: () =>
927
+ Promise.resolve({
928
+ experiments: [{ id: 'checkout-flow', variants: ['control', 'treatment'] }],
929
+ }),
930
+ });
931
+
932
+ MostlyGoodMetrics.configure({
933
+ apiKey: 'test-key',
934
+ storage,
935
+ networkClient,
936
+ trackAppLifecycleEvents: false,
937
+ });
938
+
939
+ await MostlyGoodMetrics.ready();
940
+
941
+ const variant = MostlyGoodMetrics.getVariant('checkout-flow');
942
+ MostlyGoodMetrics.track('purchase_completed');
943
+
944
+ await new Promise((resolve) => setTimeout(resolve, 10));
945
+
946
+ const events = await storage.fetchEvents(1);
947
+ expect(events[0].properties?.experiment_checkout_flow).toBe(variant);
948
+ });
949
+
950
+ it('should handle fetch failure gracefully', async () => {
951
+ global.fetch = jest.fn().mockRejectedValue(new Error('Network error'));
952
+
953
+ MostlyGoodMetrics.configure({
954
+ apiKey: 'test-key',
955
+ storage,
956
+ networkClient,
957
+ trackAppLifecycleEvents: false,
958
+ });
959
+
960
+ // Should resolve even on fetch failure
961
+ await MostlyGoodMetrics.ready();
962
+
963
+ const variant = MostlyGoodMetrics.getVariant('button-color');
964
+ expect(variant).toBeNull();
965
+ });
966
+
967
+ it('should handle non-ok response gracefully', async () => {
968
+ global.fetch = jest.fn().mockResolvedValue({
969
+ ok: false,
970
+ status: 500,
971
+ });
972
+
973
+ MostlyGoodMetrics.configure({
974
+ apiKey: 'test-key',
975
+ storage,
976
+ networkClient,
977
+ trackAppLifecycleEvents: false,
978
+ });
979
+
980
+ await MostlyGoodMetrics.ready();
981
+
982
+ const variant = MostlyGoodMetrics.getVariant('button-color');
983
+ expect(variant).toBeNull();
984
+ });
985
+
986
+ it('should convert experiment name to snake_case for property', async () => {
987
+ global.fetch = jest.fn().mockResolvedValue({
988
+ ok: true,
989
+ json: () =>
990
+ Promise.resolve({
991
+ experiments: [{ id: 'newOnboardingFlow', variants: ['a', 'b'] }],
992
+ }),
993
+ });
994
+
995
+ MostlyGoodMetrics.configure({
996
+ apiKey: 'test-key',
997
+ storage,
998
+ networkClient,
999
+ trackAppLifecycleEvents: false,
1000
+ });
1001
+
1002
+ await MostlyGoodMetrics.ready();
1003
+
1004
+ MostlyGoodMetrics.getVariant('newOnboardingFlow');
1005
+
1006
+ const superProps = MostlyGoodMetrics.getSuperProperties();
1007
+ expect(superProps.experiment_new_onboarding_flow).toBeDefined();
1008
+ });
1009
+
1010
+ it('should return null for empty experimentName', async () => {
1011
+ global.fetch = jest.fn().mockResolvedValue({
1012
+ ok: true,
1013
+ json: () => Promise.resolve({ experiments: [] }),
1014
+ });
1015
+
1016
+ MostlyGoodMetrics.configure({
1017
+ apiKey: 'test-key',
1018
+ storage,
1019
+ networkClient,
1020
+ trackAppLifecycleEvents: false,
1021
+ });
1022
+
1023
+ await MostlyGoodMetrics.ready();
1024
+
1025
+ const variant = MostlyGoodMetrics.getVariant('');
1026
+ expect(variant).toBeNull();
1027
+ });
1028
+
1029
+ it('should return null for experiment with no variants', async () => {
1030
+ global.fetch = jest.fn().mockResolvedValue({
1031
+ ok: true,
1032
+ json: () =>
1033
+ Promise.resolve({
1034
+ experiments: [{ id: 'empty-experiment', variants: [] }],
1035
+ }),
1036
+ });
1037
+
1038
+ MostlyGoodMetrics.configure({
1039
+ apiKey: 'test-key',
1040
+ storage,
1041
+ networkClient,
1042
+ trackAppLifecycleEvents: false,
1043
+ });
1044
+
1045
+ await MostlyGoodMetrics.ready();
1046
+
1047
+ const variant = MostlyGoodMetrics.getVariant('empty-experiment');
1048
+ expect(variant).toBeNull();
1049
+ });
1050
+ });
796
1051
  });
package/src/client.ts CHANGED
@@ -3,6 +3,8 @@ import { createDefaultNetworkClient } from './network';
3
3
  import { createDefaultStorage, persistence } from './storage';
4
4
  import {
5
5
  EventProperties,
6
+ Experiment,
7
+ ExperimentsResponse,
6
8
  IEventStorage,
7
9
  INetworkClient,
8
10
  MGMConfiguration,
@@ -47,6 +49,12 @@ export class MostlyGoodMetrics {
47
49
  private anonymousIdValue: string;
48
50
  private lifecycleSetup = false;
49
51
 
52
+ // A/B testing state
53
+ private experiments: Map<string, Experiment> = new Map();
54
+ private experimentsLoaded = false;
55
+ private experimentsReadyResolve: (() => void) | null = null;
56
+ private experimentsReadyPromise: Promise<void>;
57
+
50
58
  /**
51
59
  * Private constructor - use `configure` to create an instance.
52
60
  */
@@ -70,6 +78,11 @@ export class MostlyGoodMetrics {
70
78
  // Initialize network client
71
79
  this.networkClient = this.config.networkClient ?? createDefaultNetworkClient();
72
80
 
81
+ // Initialize experiments ready promise
82
+ this.experimentsReadyPromise = new Promise((resolve) => {
83
+ this.experimentsReadyResolve = resolve;
84
+ });
85
+
73
86
  logger.info(`MostlyGoodMetrics initialized with environment: ${this.config.environment}`);
74
87
 
75
88
  // Start auto-flush timer
@@ -79,6 +92,9 @@ export class MostlyGoodMetrics {
79
92
  if (this.config.trackAppLifecycleEvents) {
80
93
  this.setupLifecycleTracking();
81
94
  }
95
+
96
+ // Fetch experiments in background
97
+ void this.fetchExperiments();
82
98
  }
83
99
 
84
100
  /**
@@ -213,6 +229,22 @@ export class MostlyGoodMetrics {
213
229
  return MostlyGoodMetrics.instance?.getSuperProperties() ?? {};
214
230
  }
215
231
 
232
+ /**
233
+ * Get the variant for an experiment.
234
+ * Returns the assigned variant ('a', 'b', etc.) or null if experiment not found.
235
+ */
236
+ static getVariant(experimentName: string): string | null {
237
+ return MostlyGoodMetrics.instance?.getVariant(experimentName) ?? null;
238
+ }
239
+
240
+ /**
241
+ * Returns a promise that resolves when experiments have been loaded.
242
+ * Useful for waiting before calling getVariant() to ensure server-side experiments are available.
243
+ */
244
+ static ready(): Promise<void> {
245
+ return MostlyGoodMetrics.instance?.ready() ?? Promise.resolve();
246
+ }
247
+
216
248
  // =====================================================
217
249
  // Instance properties
218
250
  // =====================================================
@@ -479,6 +511,63 @@ export class MostlyGoodMetrics {
479
511
  return persistence.getSuperProperties();
480
512
  }
481
513
 
514
+ /**
515
+ * Get the variant for an experiment.
516
+ * Returns the assigned variant ('a', 'b', etc.) or null if experiment not found.
517
+ *
518
+ * Assignment is deterministic based on userId + experimentName, so the same
519
+ * user always gets the same variant for the same experiment.
520
+ *
521
+ * The variant is automatically stored as a super property (experiment_{name}: 'variant')
522
+ * so it's attached to all subsequent events.
523
+ */
524
+ getVariant(experimentName: string): string | null {
525
+ if (!experimentName) {
526
+ logger.warn('getVariant called with empty experimentName');
527
+ return null;
528
+ }
529
+
530
+ // Check if we have this experiment cached
531
+ const experiment = this.experiments.get(experimentName);
532
+
533
+ if (!experiment) {
534
+ if (this.experimentsLoaded) {
535
+ // Experiments loaded but this one doesn't exist
536
+ logger.debug(`Experiment not found: ${experimentName}`);
537
+ return null;
538
+ }
539
+ // Experiments not loaded yet - can't assign variant without knowing variants
540
+ logger.debug(`Experiments not loaded yet, cannot assign variant for: ${experimentName}`);
541
+ return null;
542
+ }
543
+
544
+ if (!experiment.variants || experiment.variants.length === 0) {
545
+ logger.warn(`Experiment ${experimentName} has no variants`);
546
+ return null;
547
+ }
548
+
549
+ // Get the user ID for deterministic assignment
550
+ const userId = this.userId ?? this.anonymousIdValue;
551
+
552
+ // Compute deterministic variant assignment
553
+ const variant = this.computeVariant(userId, experimentName, experiment.variants);
554
+
555
+ // Store as super property so it's attached to all events
556
+ const propertyName = `experiment_${this.toSnakeCase(experimentName)}`;
557
+ this.setSuperProperty(propertyName, variant);
558
+
559
+ logger.debug(`Assigned variant '${variant}' for experiment '${experimentName}'`);
560
+ return variant;
561
+ }
562
+
563
+ /**
564
+ * Returns a promise that resolves when experiments have been loaded.
565
+ * Useful for waiting before calling getVariant() to ensure server-side experiments are available.
566
+ */
567
+ ready(): Promise<void> {
568
+ return this.experimentsReadyPromise;
569
+ }
570
+
482
571
  /**
483
572
  * Clean up resources (stop timers, etc.).
484
573
  */
@@ -692,4 +781,87 @@ export class MostlyGoodMetrics {
692
781
  // the regular flush mechanism for most events
693
782
  logger.debug('Page unloading, attempting beacon flush');
694
783
  }
784
+
785
+ // =====================================================
786
+ // A/B Testing methods
787
+ // =====================================================
788
+
789
+ /**
790
+ * Fetch experiments from the server.
791
+ * Called automatically during initialization.
792
+ */
793
+ private async fetchExperiments(): Promise<void> {
794
+ const url = `${this.config.baseURL}/v1/experiments`;
795
+
796
+ try {
797
+ logger.debug('Fetching experiments...');
798
+
799
+ const response = await fetch(url, {
800
+ method: 'GET',
801
+ headers: {
802
+ Authorization: `Bearer ${this.config.apiKey}`,
803
+ 'Content-Type': 'application/json',
804
+ },
805
+ });
806
+
807
+ if (!response.ok) {
808
+ logger.warn(`Failed to fetch experiments: ${response.status}`);
809
+ this.markExperimentsReady();
810
+ return;
811
+ }
812
+
813
+ const data = (await response.json()) as ExperimentsResponse;
814
+
815
+ // Cache experiments by ID
816
+ this.experiments.clear();
817
+ for (const experiment of data.experiments || []) {
818
+ this.experiments.set(experiment.id, experiment);
819
+ }
820
+
821
+ logger.debug(`Loaded ${this.experiments.size} experiments`);
822
+ } catch (e) {
823
+ logger.warn('Failed to fetch experiments', e);
824
+ } finally {
825
+ this.markExperimentsReady();
826
+ }
827
+ }
828
+
829
+ /**
830
+ * Mark experiments as loaded and resolve the ready promise.
831
+ */
832
+ private markExperimentsReady(): void {
833
+ this.experimentsLoaded = true;
834
+ if (this.experimentsReadyResolve) {
835
+ this.experimentsReadyResolve();
836
+ this.experimentsReadyResolve = null;
837
+ }
838
+ }
839
+
840
+ /**
841
+ * Compute a deterministic variant assignment based on userId and experimentName.
842
+ * Same user + same experiment = same variant (consistent assignment).
843
+ */
844
+ private computeVariant(userId: string, experimentName: string, variants: string[]): string {
845
+ // Create a deterministic hash from userId + experimentName
846
+ const hashInput = `${userId}:${experimentName}`;
847
+ const hash = this.simpleHash(hashInput);
848
+
849
+ // Convert hash to a positive number and mod by variant count
850
+ const hashNum = Math.abs(parseInt(hash, 16));
851
+ const variantIndex = hashNum % variants.length;
852
+
853
+ return variants[variantIndex];
854
+ }
855
+
856
+ /**
857
+ * Convert a string to snake_case.
858
+ * Used for experiment property names (e.g., "button-color" -> "button_color").
859
+ */
860
+ private toSnakeCase(str: string): string {
861
+ return str
862
+ .replace(/([A-Z])/g, '_$1')
863
+ .replace(/[-\s]+/g, '_')
864
+ .toLowerCase()
865
+ .replace(/^_/, '');
866
+ }
695
867
  }
package/src/index.ts CHANGED
@@ -47,6 +47,8 @@ export type {
47
47
  IEventStorage,
48
48
  INetworkClient,
49
49
  UserProfile,
50
+ Experiment,
51
+ ExperimentsResponse,
50
52
  } from './types';
51
53
 
52
54
  // Error class
package/src/types.ts CHANGED
@@ -407,6 +407,28 @@ export interface UserProfile {
407
407
  name?: string;
408
408
  }
409
409
 
410
+ /**
411
+ * An experiment configuration from the server.
412
+ */
413
+ export interface Experiment {
414
+ /**
415
+ * The experiment identifier (e.g., "button-color").
416
+ */
417
+ id: string;
418
+
419
+ /**
420
+ * The variants for this experiment (e.g., ["a", "b"]).
421
+ */
422
+ variants: string[];
423
+ }
424
+
425
+ /**
426
+ * Response from the experiments API endpoint.
427
+ */
428
+ export interface ExperimentsResponse {
429
+ experiments: Experiment[];
430
+ }
431
+
410
432
  /**
411
433
  * System property keys (prefixed with $).
412
434
  */