@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.
- package/dist/cjs/client.js +144 -0
- package/dist/cjs/client.js.map +1 -1
- package/dist/cjs/index.js.map +1 -1
- package/dist/cjs/types.js.map +1 -1
- package/dist/esm/client.js +144 -0
- package/dist/esm/client.js.map +1 -1
- package/dist/esm/index.js.map +1 -1
- package/dist/esm/types.js.map +1 -1
- package/dist/types/client.d.ts +49 -0
- package/dist/types/client.d.ts.map +1 -1
- package/dist/types/index.d.ts +1 -1
- package/dist/types/index.d.ts.map +1 -1
- package/dist/types/types.d.ts +19 -0
- package/dist/types/types.d.ts.map +1 -1
- package/package.json +1 -1
- package/src/client.test.ts +255 -0
- package/src/client.ts +172 -0
- package/src/index.ts +2 -0
- package/src/types.ts +22 -0
package/dist/cjs/client.js
CHANGED
|
@@ -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;
|
package/dist/cjs/client.js.map
CHANGED
|
@@ -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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"}
|
package/dist/cjs/index.js.map
CHANGED
|
@@ -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;
|
|
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"}
|
package/dist/cjs/types.js.map
CHANGED
|
@@ -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;
|
|
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"}
|
package/dist/esm/client.js
CHANGED
|
@@ -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
|
package/dist/esm/client.js.map
CHANGED
|
@@ -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":"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,EAWL,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;IAkB5B;;OAEG;IACH,YAAoB,MAAwB;QAfpC,eAAU,GAA0C,IAAI,CAAC;QACzD,uBAAkB,GAAG,KAAK,CAAC;QAG3B,mBAAc,GAAG,KAAK,CAAC;QAE/B,oBAAoB;QACZ,gBAAW,GAA4B,IAAI,GAAG,EAAE,CAAC;QACjD,sBAAiB,GAAG,KAAK,CAAC;QAC1B,4BAAuB,GAAwB,IAAI,CAAC;QAyrBpD,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;QArsBA,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,uCAAuC;QACvC,IAAI,CAAC,uBAAuB,GAAG,IAAI,OAAO,CAAC,CAAC,OAAO,EAAE,EAAE;YACrD,IAAI,CAAC,uBAAuB,GAAG,OAAO,CAAC;QACzC,CAAC,CAAC,CAAC;QAEH,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;QAED,kCAAkC;QAClC,KAAK,IAAI,CAAC,gBAAgB,EAAE,CAAC;IAC/B,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;;;OAGG;IACH,MAAM,CAAC,UAAU,CAAC,cAAsB;QACtC,OAAO,iBAAiB,CAAC,QAAQ,EAAE,UAAU,CAAC,cAAc,CAAC,IAAI,IAAI,CAAC;IACxE,CAAC;IAED;;;OAGG;IACH,MAAM,CAAC,KAAK;QACV,OAAO,iBAAiB,CAAC,QAAQ,EAAE,KAAK,EAAE,IAAI,OAAO,CAAC,OAAO,EAAE,CAAC;IAClE,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;;;;;;;;;OASG;IACH,UAAU,CAAC,cAAsB;QAC/B,IAAI,CAAC,cAAc,EAAE,CAAC;YACpB,MAAM,CAAC,IAAI,CAAC,6CAA6C,CAAC,CAAC;YAC3D,OAAO,IAAI,CAAC;QACd,CAAC;QAED,0CAA0C;QAC1C,MAAM,UAAU,GAAG,IAAI,CAAC,WAAW,CAAC,GAAG,CAAC,cAAc,CAAC,CAAC;QAExD,IAAI,CAAC,UAAU,EAAE,CAAC;YAChB,IAAI,IAAI,CAAC,iBAAiB,EAAE,CAAC;gBAC3B,gDAAgD;gBAChD,MAAM,CAAC,KAAK,CAAC,yBAAyB,cAAc,EAAE,CAAC,CAAC;gBACxD,OAAO,IAAI,CAAC;YACd,CAAC;YACD,6EAA6E;YAC7E,MAAM,CAAC,KAAK,CAAC,0DAA0D,cAAc,EAAE,CAAC,CAAC;YACzF,OAAO,IAAI,CAAC;QACd,CAAC;QAED,IAAI,CAAC,UAAU,CAAC,QAAQ,IAAI,UAAU,CAAC,QAAQ,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;YAC7D,MAAM,CAAC,IAAI,CAAC,cAAc,cAAc,kBAAkB,CAAC,CAAC;YAC5D,OAAO,IAAI,CAAC;QACd,CAAC;QAED,+CAA+C;QAC/C,MAAM,MAAM,GAAG,IAAI,CAAC,MAAM,IAAI,IAAI,CAAC,gBAAgB,CAAC;QAEpD,2CAA2C;QAC3C,MAAM,OAAO,GAAG,IAAI,CAAC,cAAc,CAAC,MAAM,EAAE,cAAc,EAAE,UAAU,CAAC,QAAQ,CAAC,CAAC;QAEjF,yDAAyD;QACzD,MAAM,YAAY,GAAG,cAAc,IAAI,CAAC,WAAW,CAAC,cAAc,CAAC,EAAE,CAAC;QACtE,IAAI,CAAC,gBAAgB,CAAC,YAAY,EAAE,OAAO,CAAC,CAAC;QAE7C,MAAM,CAAC,KAAK,CAAC,qBAAqB,OAAO,qBAAqB,cAAc,GAAG,CAAC,CAAC;QACjF,OAAO,OAAO,CAAC;IACjB,CAAC;IAED;;;OAGG;IACH,KAAK;QACH,OAAO,IAAI,CAAC,uBAAuB,CAAC;IACtC,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;IAED,wDAAwD;IACxD,sBAAsB;IACtB,wDAAwD;IAExD;;;OAGG;IACK,KAAK,CAAC,gBAAgB;QAC5B,MAAM,GAAG,GAAG,GAAG,IAAI,CAAC,MAAM,CAAC,OAAO,iBAAiB,CAAC;QAEpD,IAAI,CAAC;YACH,MAAM,CAAC,KAAK,CAAC,yBAAyB,CAAC,CAAC;YAExC,MAAM,QAAQ,GAAG,MAAM,KAAK,CAAC,GAAG,EAAE;gBAChC,MAAM,EAAE,KAAK;gBACb,OAAO,EAAE;oBACP,aAAa,EAAE,UAAU,IAAI,CAAC,MAAM,CAAC,MAAM,EAAE;oBAC7C,cAAc,EAAE,kBAAkB;iBACnC;aACF,CAAC,CAAC;YAEH,IAAI,CAAC,QAAQ,CAAC,EAAE,EAAE,CAAC;gBACjB,MAAM,CAAC,IAAI,CAAC,gCAAgC,QAAQ,CAAC,MAAM,EAAE,CAAC,CAAC;gBAC/D,IAAI,CAAC,oBAAoB,EAAE,CAAC;gBAC5B,OAAO;YACT,CAAC;YAED,MAAM,IAAI,GAAG,CAAC,MAAM,QAAQ,CAAC,IAAI,EAAE,CAAwB,CAAC;YAE5D,0BAA0B;YAC1B,IAAI,CAAC,WAAW,CAAC,KAAK,EAAE,CAAC;YACzB,KAAK,MAAM,UAAU,IAAI,IAAI,CAAC,WAAW,IAAI,EAAE,EAAE,CAAC;gBAChD,IAAI,CAAC,WAAW,CAAC,GAAG,CAAC,UAAU,CAAC,EAAE,EAAE,UAAU,CAAC,CAAC;YAClD,CAAC;YAED,MAAM,CAAC,KAAK,CAAC,UAAU,IAAI,CAAC,WAAW,CAAC,IAAI,cAAc,CAAC,CAAC;QAC9D,CAAC;QAAC,OAAO,CAAC,EAAE,CAAC;YACX,MAAM,CAAC,IAAI,CAAC,6BAA6B,EAAE,CAAC,CAAC,CAAC;QAChD,CAAC;gBAAS,CAAC;YACT,IAAI,CAAC,oBAAoB,EAAE,CAAC;QAC9B,CAAC;IACH,CAAC;IAED;;OAEG;IACK,oBAAoB;QAC1B,IAAI,CAAC,iBAAiB,GAAG,IAAI,CAAC;QAC9B,IAAI,IAAI,CAAC,uBAAuB,EAAE,CAAC;YACjC,IAAI,CAAC,uBAAuB,EAAE,CAAC;YAC/B,IAAI,CAAC,uBAAuB,GAAG,IAAI,CAAC;QACtC,CAAC;IACH,CAAC;IAED;;;OAGG;IACK,cAAc,CAAC,MAAc,EAAE,cAAsB,EAAE,QAAkB;QAC/E,2DAA2D;QAC3D,MAAM,SAAS,GAAG,GAAG,MAAM,IAAI,cAAc,EAAE,CAAC;QAChD,MAAM,IAAI,GAAG,IAAI,CAAC,UAAU,CAAC,SAAS,CAAC,CAAC;QAExC,6DAA6D;QAC7D,MAAM,OAAO,GAAG,IAAI,CAAC,GAAG,CAAC,QAAQ,CAAC,IAAI,EAAE,EAAE,CAAC,CAAC,CAAC;QAC7C,MAAM,YAAY,GAAG,OAAO,GAAG,QAAQ,CAAC,MAAM,CAAC;QAE/C,OAAO,QAAQ,CAAC,YAAY,CAAC,CAAC;IAChC,CAAC;IAED;;;OAGG;IACK,WAAW,CAAC,GAAW;QAC7B,OAAO,GAAG;aACP,OAAO,CAAC,UAAU,EAAE,KAAK,CAAC;aAC1B,OAAO,CAAC,SAAS,EAAE,GAAG,CAAC;aACvB,WAAW,EAAE;aACb,OAAO,CAAC,IAAI,EAAE,EAAE,CAAC,CAAC;IACvB,CAAC;;AAzzBc,0BAAQ,GAA6B,IAAI,AAAjC,CAAkC"}
|
package/dist/esm/index.js.map
CHANGED
|
@@ -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;
|
|
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"}
|
package/dist/esm/types.js.map
CHANGED
|
@@ -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;
|
|
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"}
|
package/dist/types/client.d.ts
CHANGED
|
@@ -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":"AAGA,OAAO,EACL,eAAe,
|
|
1
|
+
{"version":3,"file":"client.d.ts","sourceRoot":"","sources":["../../src/client.ts"],"names":[],"mappings":"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"}
|
package/dist/types/index.d.ts
CHANGED
|
@@ -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,
|
|
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"}
|
package/dist/types/types.d.ts
CHANGED
|
@@ -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.
|
|
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",
|
package/src/client.test.ts
CHANGED
|
@@ -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
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
|
*/
|