@prismicio/manager 0.0.3-beta.13 → 0.0.3-beta.14

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (71) hide show
  1. package/dist/_node_modules/@amplitude/analytics-core/lib/esm/config.js +2 -2
  2. package/dist/_node_modules/@amplitude/analytics-core/lib/esm/config.js.map +1 -1
  3. package/dist/_node_modules/@amplitude/analytics-core/lib/esm/core-client.js +2 -2
  4. package/dist/_node_modules/@amplitude/analytics-core/lib/esm/core-client.js.map +1 -1
  5. package/dist/_node_modules/@amplitude/analytics-core/lib/esm/identify.js +2 -2
  6. package/dist/_node_modules/@amplitude/analytics-core/lib/esm/identify.js.map +1 -1
  7. package/dist/_node_modules/@amplitude/analytics-core/lib/esm/logger.js +2 -2
  8. package/dist/_node_modules/@amplitude/analytics-core/lib/esm/logger.js.map +1 -1
  9. package/dist/_node_modules/@amplitude/analytics-core/lib/esm/plugins/destination.js +2 -2
  10. package/dist/_node_modules/@amplitude/analytics-core/lib/esm/plugins/destination.js.map +1 -1
  11. package/dist/_node_modules/@amplitude/analytics-core/lib/esm/revenue.js +2 -2
  12. package/dist/_node_modules/@amplitude/analytics-core/lib/esm/revenue.js.map +1 -1
  13. package/dist/_node_modules/@amplitude/analytics-core/lib/esm/timeline.js +2 -2
  14. package/dist/_node_modules/@amplitude/analytics-core/lib/esm/timeline.js.map +1 -1
  15. package/dist/_node_modules/@amplitude/analytics-core/lib/esm/transports/base.js +2 -2
  16. package/dist/_node_modules/@amplitude/analytics-core/lib/esm/transports/base.js.map +1 -1
  17. package/dist/_node_modules/@amplitude/analytics-node/lib/esm/config.js +2 -2
  18. package/dist/_node_modules/@amplitude/analytics-node/lib/esm/config.js.map +1 -1
  19. package/dist/_node_modules/@amplitude/analytics-node/lib/esm/node-client.js +2 -2
  20. package/dist/_node_modules/@amplitude/analytics-node/lib/esm/node-client.js.map +1 -1
  21. package/dist/_node_modules/@amplitude/analytics-node/lib/esm/plugins/context.js +2 -2
  22. package/dist/_node_modules/@amplitude/analytics-node/lib/esm/plugins/context.js.map +1 -1
  23. package/dist/_node_modules/@amplitude/analytics-node/lib/esm/transports/http.js +2 -2
  24. package/dist/_node_modules/@amplitude/analytics-node/lib/esm/transports/http.js.map +1 -1
  25. package/dist/_node_modules/@amplitude/experiment-core/dist/experiment-core.esm.js +105 -45
  26. package/dist/_node_modules/@amplitude/experiment-core/dist/experiment-core.esm.js.map +1 -1
  27. package/dist/_node_modules/@amplitude/experiment-node-server/dist/gen/version.js +1 -1
  28. package/dist/_node_modules/@amplitude/experiment-node-server/dist/gen/version.js.map +1 -1
  29. package/dist/_node_modules/@amplitude/experiment-node-server/dist/src/assignment/assignment-filter.js.map +1 -1
  30. package/dist/_node_modules/@amplitude/experiment-node-server/dist/src/assignment/assignment-service.js.map +1 -1
  31. package/dist/_node_modules/@amplitude/experiment-node-server/dist/src/assignment/assignment.js.map +1 -1
  32. package/dist/_node_modules/@amplitude/experiment-node-server/dist/src/exposure/exposure-filter.js +35 -0
  33. package/dist/_node_modules/@amplitude/experiment-node-server/dist/src/exposure/exposure-filter.js.map +1 -0
  34. package/dist/_node_modules/@amplitude/experiment-node-server/dist/src/exposure/exposure-service.js +115 -0
  35. package/dist/_node_modules/@amplitude/experiment-node-server/dist/src/exposure/exposure-service.js.map +1 -0
  36. package/dist/_node_modules/@amplitude/experiment-node-server/dist/src/exposure/exposure.js +32 -0
  37. package/dist/_node_modules/@amplitude/experiment-node-server/dist/src/exposure/exposure.js.map +1 -0
  38. package/dist/_node_modules/@amplitude/experiment-node-server/dist/src/local/client.js +30 -11
  39. package/dist/_node_modules/@amplitude/experiment-node-server/dist/src/local/client.js.map +1 -1
  40. package/dist/_node_modules/@amplitude/experiment-node-server/dist/src/remote/client.js +9 -2
  41. package/dist/_node_modules/@amplitude/experiment-node-server/dist/src/remote/client.js.map +1 -1
  42. package/dist/_node_modules/@amplitude/experiment-node-server/dist/src/transport/http.js +9 -7
  43. package/dist/_node_modules/@amplitude/experiment-node-server/dist/src/transport/http.js.map +1 -1
  44. package/dist/_node_modules/@amplitude/experiment-node-server/dist/src/types/config.js +12 -9
  45. package/dist/_node_modules/@amplitude/experiment-node-server/dist/src/types/config.js.map +1 -1
  46. package/dist/_node_modules/common-tags/es/TemplateTag/TemplateTag.js +4 -4
  47. package/dist/_node_modules/common-tags/es/TemplateTag/TemplateTag.js.map +1 -1
  48. package/dist/_node_modules/eventsource/lib/eventsource.js +2 -2
  49. package/dist/_node_modules/eventsource/lib/eventsource.js.map +1 -1
  50. package/dist/_node_modules/fetch-blob/from.js +1 -1
  51. package/dist/_node_modules/node-fetch/src/body.js +1 -1
  52. package/dist/_node_modules/node-fetch/src/body.js.map +1 -1
  53. package/dist/_node_modules/node-fetch/src/headers.js +1 -1
  54. package/dist/_node_modules/node-fetch/src/headers.js.map +1 -1
  55. package/dist/_node_modules/node-fetch/src/request.js +2 -2
  56. package/dist/_node_modules/node-fetch/src/request.js.map +1 -1
  57. package/dist/_node_modules/node-fetch/src/response.js +1 -1
  58. package/dist/_node_modules/node-fetch/src/response.js.map +1 -1
  59. package/dist/_node_modules/web-streams-polyfill/dist/ponyfill.es2018.js +2 -2
  60. package/dist/_node_modules/web-streams-polyfill/dist/ponyfill.es2018.js.map +1 -1
  61. package/dist/_virtual/exposure-filter.js +5 -0
  62. package/dist/_virtual/exposure-filter.js.map +1 -0
  63. package/dist/_virtual/exposure-service.js +5 -0
  64. package/dist/_virtual/exposure-service.js.map +1 -0
  65. package/dist/_virtual/exposure.js +5 -0
  66. package/dist/_virtual/exposure.js.map +1 -0
  67. package/dist/_virtual/index3.js +2 -6
  68. package/dist/_virtual/index3.js.map +1 -1
  69. package/dist/_virtual/index4.js +6 -2
  70. package/dist/_virtual/index4.js.map +1 -1
  71. package/package.json +15 -15
@@ -0,0 +1,115 @@
1
+ import { __exports as exposureService } from "../../../../../../_virtual/exposure-service.js";
2
+ import { __require as requireHash } from "../util/hash.js";
3
+ var hasRequiredExposureService;
4
+ function requireExposureService() {
5
+ if (hasRequiredExposureService) return exposureService;
6
+ hasRequiredExposureService = 1;
7
+ (function(exports$1) {
8
+ var __awaiter = exposureService && exposureService.__awaiter || function(thisArg, _arguments, P, generator) {
9
+ function adopt(value) {
10
+ return value instanceof P ? value : new P(function(resolve) {
11
+ resolve(value);
12
+ });
13
+ }
14
+ return new (P || (P = Promise))(function(resolve, reject) {
15
+ function fulfilled(value) {
16
+ try {
17
+ step(generator.next(value));
18
+ } catch (e) {
19
+ reject(e);
20
+ }
21
+ }
22
+ function rejected(value) {
23
+ try {
24
+ step(generator["throw"](value));
25
+ } catch (e) {
26
+ reject(e);
27
+ }
28
+ }
29
+ function step(result) {
30
+ result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected);
31
+ }
32
+ step((generator = generator.apply(thisArg, _arguments || [])).next());
33
+ });
34
+ };
35
+ Object.defineProperty(exports$1, "__esModule", { value: true });
36
+ exports$1.toExposureEvents = exports$1.AmplitudeExposureService = exports$1.FLAG_TYPE_MUTUAL_EXCLUSION_GROUP = exports$1.DAY_MILLIS = void 0;
37
+ const hash_1 = requireHash();
38
+ exports$1.DAY_MILLIS = 24 * 60 * 60 * 1e3;
39
+ exports$1.FLAG_TYPE_MUTUAL_EXCLUSION_GROUP = "mutual-exclusion-group";
40
+ class AmplitudeExposureService {
41
+ constructor(amplitude, exposureFilter) {
42
+ this.amplitude = amplitude;
43
+ this.exposureFilter = exposureFilter;
44
+ }
45
+ track(exposure) {
46
+ return __awaiter(this, void 0, void 0, function* () {
47
+ if (this.exposureFilter.shouldTrack(exposure)) {
48
+ (0, exports$1.toExposureEvents)(exposure, this.exposureFilter.ttlMillis).forEach((event) => {
49
+ this.amplitude.logEvent(event);
50
+ });
51
+ }
52
+ });
53
+ }
54
+ }
55
+ exports$1.AmplitudeExposureService = AmplitudeExposureService;
56
+ const toExposureEvents = (exposure, ttlMillis) => {
57
+ var _a, _b, _c, _d;
58
+ const events = [];
59
+ const canonicalExposure = exposure.canonicalize();
60
+ for (const flagKey in exposure.results) {
61
+ const variant = exposure.results[flagKey];
62
+ const trackExposure = (_b = (_a = variant === null || variant === void 0 ? void 0 : variant.metadata) === null || _a === void 0 ? void 0 : _a.trackExposure) !== null && _b !== void 0 ? _b : true;
63
+ if (!trackExposure) {
64
+ continue;
65
+ }
66
+ const flagType = (_c = variant.metadata) === null || _c === void 0 ? void 0 : _c.flagType;
67
+ const isDefault = (_d = variant.metadata) === null || _d === void 0 ? void 0 : _d.default;
68
+ if (isDefault) {
69
+ continue;
70
+ }
71
+ const set = {};
72
+ const unset = {};
73
+ if (flagType != exports$1.FLAG_TYPE_MUTUAL_EXCLUSION_GROUP) {
74
+ if (variant.key) {
75
+ set[`[Experiment] ${flagKey}`] = variant.key;
76
+ } else if (variant.value) {
77
+ set[`[Experiment] ${flagKey}`] = variant.value;
78
+ }
79
+ }
80
+ const eventProperties = {};
81
+ eventProperties["[Experiment] Flag Key"] = flagKey;
82
+ if (variant.key) {
83
+ eventProperties["[Experiment] Variant"] = variant.key;
84
+ } else if (variant.value) {
85
+ eventProperties["[Experiment] Variant"] = variant.value;
86
+ }
87
+ if (variant.metadata) {
88
+ eventProperties["metadata"] = variant.metadata;
89
+ }
90
+ const event = {
91
+ event_type: "[Experiment] Exposure",
92
+ user_id: exposure.user.user_id,
93
+ device_id: exposure.user.device_id,
94
+ event_properties: eventProperties,
95
+ user_properties: {
96
+ $set: set,
97
+ $unset: unset
98
+ },
99
+ insert_id: `${exposure.user.user_id} ${exposure.user.device_id} ${(0, hash_1.hashCode)(flagKey + " " + canonicalExposure)} ${Math.floor(exposure.timestamp / ttlMillis)}`
100
+ };
101
+ if (exposure.user.groups) {
102
+ event.groups = exposure.user.groups;
103
+ }
104
+ events.push(event);
105
+ }
106
+ return events;
107
+ };
108
+ exports$1.toExposureEvents = toExposureEvents;
109
+ })(exposureService);
110
+ return exposureService;
111
+ }
112
+ export {
113
+ requireExposureService as __require
114
+ };
115
+ //# sourceMappingURL=exposure-service.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"exposure-service.js","sources":["../../../../../../../../../node_modules/@amplitude/experiment-node-server/dist/src/exposure/exposure-service.js"],"sourcesContent":["\"use strict\";\nvar __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {\n function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }\n return new (P || (P = Promise))(function (resolve, reject) {\n function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }\n function rejected(value) { try { step(generator[\"throw\"](value)); } catch (e) { reject(e); } }\n function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }\n step((generator = generator.apply(thisArg, _arguments || [])).next());\n });\n};\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.toExposureEvents = exports.AmplitudeExposureService = exports.FLAG_TYPE_MUTUAL_EXCLUSION_GROUP = exports.DAY_MILLIS = void 0;\nconst hash_1 = require(\"../util/hash\");\nexports.DAY_MILLIS = 24 * 60 * 60 * 1000;\nexports.FLAG_TYPE_MUTUAL_EXCLUSION_GROUP = 'mutual-exclusion-group';\nclass AmplitudeExposureService {\n constructor(amplitude, exposureFilter) {\n this.amplitude = amplitude;\n this.exposureFilter = exposureFilter;\n }\n track(exposure) {\n return __awaiter(this, void 0, void 0, function* () {\n if (this.exposureFilter.shouldTrack(exposure)) {\n (0, exports.toExposureEvents)(exposure, this.exposureFilter.ttlMillis).forEach((event) => {\n this.amplitude.logEvent(event);\n });\n }\n });\n }\n}\nexports.AmplitudeExposureService = AmplitudeExposureService;\nconst toExposureEvents = (exposure, ttlMillis) => {\n var _a, _b, _c, _d;\n const events = [];\n const canonicalExposure = exposure.canonicalize();\n for (const flagKey in exposure.results) {\n const variant = exposure.results[flagKey];\n const trackExposure = (_b = (_a = variant === null || variant === void 0 ? void 0 : variant.metadata) === null || _a === void 0 ? void 0 : _a.trackExposure) !== null && _b !== void 0 ? _b : true;\n if (!trackExposure) {\n continue;\n }\n const flagType = (_c = variant.metadata) === null || _c === void 0 ? void 0 : _c.flagType;\n const isDefault = (_d = variant.metadata) === null || _d === void 0 ? void 0 : _d.default;\n if (isDefault) {\n continue;\n }\n // Determine user properties to set and unset.\n const set = {};\n const unset = {};\n if (flagType != exports.FLAG_TYPE_MUTUAL_EXCLUSION_GROUP) {\n if (variant.key) {\n set[`[Experiment] ${flagKey}`] = variant.key;\n }\n else if (variant.value) {\n set[`[Experiment] ${flagKey}`] = variant.value;\n }\n }\n // Build event properties.\n const eventProperties = {};\n eventProperties['[Experiment] Flag Key'] = flagKey;\n if (variant.key) {\n eventProperties['[Experiment] Variant'] = variant.key;\n }\n else if (variant.value) {\n eventProperties['[Experiment] Variant'] = variant.value;\n }\n if (variant.metadata) {\n eventProperties['metadata'] = variant.metadata;\n }\n // Build event.\n const event = {\n event_type: '[Experiment] Exposure',\n user_id: exposure.user.user_id,\n device_id: exposure.user.device_id,\n event_properties: eventProperties,\n user_properties: {\n $set: set,\n $unset: unset,\n },\n insert_id: `${exposure.user.user_id} ${exposure.user.device_id} ${(0, hash_1.hashCode)(flagKey + ' ' + canonicalExposure)} ${Math.floor(exposure.timestamp / ttlMillis)}`,\n };\n if (exposure.user.groups) {\n event.groups = exposure.user.groups;\n }\n events.push(event);\n }\n return events;\n};\nexports.toExposureEvents = toExposureEvents;\n"],"names":["this","exports","require$$0"],"mappings":";;;;;;;AACA,QAAI,YAAaA,mBAAQA,gBAAK,aAAc,SAAU,SAAS,YAAY,GAAG,WAAW;AACrF,eAAS,MAAM,OAAO;AAAE,eAAO,iBAAiB,IAAI,QAAQ,IAAI,EAAE,SAAU,SAAS;AAAE,kBAAQ,KAAK;AAAA,QAAE,CAAE;AAAA,MAAE;AAC1G,aAAO,KAAK,MAAM,IAAI,UAAU,SAAU,SAAS,QAAQ;AACvD,iBAAS,UAAU,OAAO;AAAE,cAAI;AAAE,iBAAK,UAAU,KAAK,KAAK,CAAC;AAAA,UAAE,SAAU,GAAG;AAAE,mBAAO,CAAC;AAAA,UAAE;AAAA,QAAE;AACzF,iBAAS,SAAS,OAAO;AAAE,cAAI;AAAE,iBAAK,UAAU,OAAO,EAAE,KAAK,CAAC;AAAA,UAAE,SAAU,GAAG;AAAE,mBAAO,CAAC;AAAA,UAAE;AAAA,QAAE;AAC5F,iBAAS,KAAK,QAAQ;AAAE,iBAAO,OAAO,QAAQ,OAAO,KAAK,IAAI,MAAM,OAAO,KAAK,EAAE,KAAK,WAAW,QAAQ;AAAA,QAAE;AAC5G,cAAM,YAAY,UAAU,MAAM,SAAS,cAAc,CAAA,CAAE,GAAG,MAAM;AAAA,MAC5E,CAAK;AAAA,IACL;AACA,WAAO,eAAcC,WAAU,cAAc,EAAE,OAAO,MAAM;AAC5DA,cAAA,mBAA2BA,UAAA,2BAAmCA,UAAA,mCAA2CA,UAAA,aAAqB;AAC9H,UAAM,SAASC,YAAA;AACfD,cAAA,aAAqB,KAAK,KAAK,KAAK;AACpCA,cAAA,mCAA2C;AAAA,IAC3C,MAAM,yBAAyB;AAAA,MAC3B,YAAY,WAAW,gBAAgB;AACnC,aAAK,YAAY;AACjB,aAAK,iBAAiB;AAAA,MAC9B;AAAA,MACI,MAAM,UAAU;AACZ,eAAO,UAAU,MAAM,QAAQ,QAAQ,aAAa;AAChD,cAAI,KAAK,eAAe,YAAY,QAAQ,GAAG;AAC3C,gBAAIA,UAAQ,kBAAkB,UAAU,KAAK,eAAe,SAAS,EAAE,QAAQ,CAAC,UAAU;AACtF,mBAAK,UAAU,SAAS,KAAK;AAAA,YACjD,CAAiB;AAAA,UACjB;AAAA,QACA,CAAS;AAAA,MACT;AAAA,IACA;AACAA,cAAA,2BAAmC;AACnC,UAAM,mBAAmB,CAAC,UAAU,cAAc;AAC9C,UAAI,IAAI,IAAI,IAAI;AAChB,YAAM,SAAS,CAAA;AACf,YAAM,oBAAoB,SAAS,aAAY;AAC/C,iBAAW,WAAW,SAAS,SAAS;AACpC,cAAM,UAAU,SAAS,QAAQ,OAAO;AACxC,cAAM,iBAAiB,MAAM,KAAK,YAAY,QAAQ,YAAY,SAAS,SAAS,QAAQ,cAAc,QAAQ,OAAO,SAAS,SAAS,GAAG,mBAAmB,QAAQ,OAAO,SAAS,KAAK;AAC9L,YAAI,CAAC,eAAe;AAChB;AAAA,QACZ;AACQ,cAAM,YAAY,KAAK,QAAQ,cAAc,QAAQ,OAAO,SAAS,SAAS,GAAG;AACjF,cAAM,aAAa,KAAK,QAAQ,cAAc,QAAQ,OAAO,SAAS,SAAS,GAAG;AAClF,YAAI,WAAW;AACX;AAAA,QACZ;AAEQ,cAAM,MAAM,CAAA;AACZ,cAAM,QAAQ,CAAA;AACd,YAAI,YAAYA,UAAQ,kCAAkC;AACtD,cAAI,QAAQ,KAAK;AACb,gBAAI,gBAAgB,OAAO,EAAE,IAAI,QAAQ;AAAA,UACzD,WACqB,QAAQ,OAAO;AACpB,gBAAI,gBAAgB,OAAO,EAAE,IAAI,QAAQ;AAAA,UACzD;AAAA,QACA;AAEQ,cAAM,kBAAkB,CAAA;AACxB,wBAAgB,uBAAuB,IAAI;AAC3C,YAAI,QAAQ,KAAK;AACb,0BAAgB,sBAAsB,IAAI,QAAQ;AAAA,QAC9D,WACiB,QAAQ,OAAO;AACpB,0BAAgB,sBAAsB,IAAI,QAAQ;AAAA,QAC9D;AACQ,YAAI,QAAQ,UAAU;AAClB,0BAAgB,UAAU,IAAI,QAAQ;AAAA,QAClD;AAEQ,cAAM,QAAQ;AAAA,UACV,YAAY;AAAA,UACZ,SAAS,SAAS,KAAK;AAAA,UACvB,WAAW,SAAS,KAAK;AAAA,UACzB,kBAAkB;AAAA,UAClB,iBAAiB;AAAA,YACb,MAAM;AAAA,YACN,QAAQ;AAAA;UAEZ,WAAW,GAAG,SAAS,KAAK,OAAO,IAAI,SAAS,KAAK,SAAS,KAAI,GAAI,OAAO,UAAU,UAAU,MAAM,iBAAiB,CAAC,IAAI,KAAK,MAAM,SAAS,YAAY,SAAS,CAAC;AAAA;AAE3K,YAAI,SAAS,KAAK,QAAQ;AACtB,gBAAM,SAAS,SAAS,KAAK;AAAA,QACzC;AACQ,eAAO,KAAK,KAAK;AAAA,MACzB;AACI,aAAO;AAAA,IACX;AACAA,cAAA,mBAA2B;AAAA;;;","x_google_ignoreList":[0]}
@@ -0,0 +1,32 @@
1
+ import { __exports as exposure } from "../../../../../../_virtual/exposure.js";
2
+ var hasRequiredExposure;
3
+ function requireExposure() {
4
+ if (hasRequiredExposure) return exposure;
5
+ hasRequiredExposure = 1;
6
+ Object.defineProperty(exposure, "__esModule", { value: true });
7
+ exposure.Exposure = void 0;
8
+ class Exposure {
9
+ constructor(user, results) {
10
+ this.timestamp = Date.now();
11
+ this.user = user;
12
+ this.results = results;
13
+ }
14
+ canonicalize() {
15
+ var _a, _b, _c;
16
+ let canonical = `${(_a = this.user.user_id) === null || _a === void 0 ? void 0 : _a.trim()} ${(_b = this.user.device_id) === null || _b === void 0 ? void 0 : _b.trim()} `;
17
+ for (const key of Object.keys(this.results).sort()) {
18
+ const variant = this.results[key];
19
+ if (variant === null || variant === void 0 ? void 0 : variant.key) {
20
+ canonical += key.trim() + " " + ((_c = variant === null || variant === void 0 ? void 0 : variant.key) === null || _c === void 0 ? void 0 : _c.trim()) + " ";
21
+ }
22
+ }
23
+ return canonical;
24
+ }
25
+ }
26
+ exposure.Exposure = Exposure;
27
+ return exposure;
28
+ }
29
+ export {
30
+ requireExposure as __require
31
+ };
32
+ //# sourceMappingURL=exposure.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"exposure.js","sources":["../../../../../../../../../node_modules/@amplitude/experiment-node-server/dist/src/exposure/exposure.js"],"sourcesContent":["\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.Exposure = void 0;\n/**\n * Exposure is a class that represents a user's exposure to a set of flags.\n\n */\nclass Exposure {\n constructor(user, results) {\n this.timestamp = Date.now();\n this.user = user;\n this.results = results;\n }\n canonicalize() {\n var _a, _b, _c;\n let canonical = `${(_a = this.user.user_id) === null || _a === void 0 ? void 0 : _a.trim()} ${(_b = this.user.device_id) === null || _b === void 0 ? void 0 : _b.trim()} `;\n for (const key of Object.keys(this.results).sort()) {\n const variant = this.results[key];\n if (variant === null || variant === void 0 ? void 0 : variant.key) {\n canonical += key.trim() + ' ' + ((_c = variant === null || variant === void 0 ? void 0 : variant.key) === null || _c === void 0 ? void 0 : _c.trim()) + ' ';\n }\n }\n return canonical;\n }\n}\nexports.Exposure = Exposure;\n"],"names":[],"mappings":";;;;;AACA,SAAO,eAAe,UAAS,cAAc,EAAE,OAAO,MAAM;AAC5D,WAAA,WAAmB;AAAA,EAKnB,MAAM,SAAS;AAAA,IACX,YAAY,MAAM,SAAS;AACvB,WAAK,YAAY,KAAK,IAAG;AACzB,WAAK,OAAO;AACZ,WAAK,UAAU;AAAA,IACvB;AAAA,IACI,eAAe;AACX,UAAI,IAAI,IAAI;AACZ,UAAI,YAAY,IAAI,KAAK,KAAK,KAAK,aAAa,QAAQ,OAAO,SAAS,SAAS,GAAG,KAAI,CAAE,KAAK,KAAK,KAAK,KAAK,eAAe,QAAQ,OAAO,SAAS,SAAS,GAAG,KAAI,CAAE;AACvK,iBAAW,OAAO,OAAO,KAAK,KAAK,OAAO,EAAE,QAAQ;AAChD,cAAM,UAAU,KAAK,QAAQ,GAAG;AAChC,YAAI,YAAY,QAAQ,YAAY,SAAS,SAAS,QAAQ,KAAK;AAC/D,uBAAa,IAAI,KAAI,IAAK,QAAQ,KAAK,YAAY,QAAQ,YAAY,SAAS,SAAS,QAAQ,SAAS,QAAQ,OAAO,SAAS,SAAS,GAAG,KAAI,KAAM;AAAA,QACxK;AAAA,MACA;AACQ,aAAO;AAAA,IACf;AAAA,EACA;AACA,WAAA,WAAmB;;;","x_google_ignoreList":[0]}
@@ -1,10 +1,13 @@
1
1
  import { __exports as client } from "../../../../../../_virtual/client2.js";
2
- import require$$0 from "../../../../../../_virtual/index3.js";
2
+ import require$$0 from "../../../../../../_virtual/index4.js";
3
3
  import require$$1 from "../../../../../../_virtual/experiment-core.esm.js";
4
4
  import { __require as requireEventsource } from "../../../../../eventsource/lib/eventsource.js";
5
5
  import { __require as requireAssignment } from "../assignment/assignment.js";
6
6
  import { __require as requireAssignmentFilter } from "../assignment/assignment-filter.js";
7
7
  import { __require as requireAssignmentService } from "../assignment/assignment-service.js";
8
+ import { __require as requireExposure } from "../exposure/exposure.js";
9
+ import { __require as requireExposureFilter } from "../exposure/exposure-filter.js";
10
+ import { __require as requireExposureService } from "../exposure/exposure-service.js";
8
11
  import { __require as requireHttp } from "../transport/http.js";
9
12
  import { __require as requireCohort } from "../types/cohort.js";
10
13
  import { __require as requireConfig } from "../types/config.js";
@@ -24,7 +27,7 @@ var hasRequiredClient;
24
27
  function requireClient() {
25
28
  if (hasRequiredClient) return client;
26
29
  hasRequiredClient = 1;
27
- var __createBinding = client && client.__createBinding || (Object.create ? function(o, m, k, k2) {
30
+ var __createBinding = client && client.__createBinding || (Object.create ? (function(o, m, k, k2) {
28
31
  if (k2 === void 0) k2 = k;
29
32
  var desc = Object.getOwnPropertyDescriptor(m, k);
30
33
  if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
@@ -33,13 +36,13 @@ function requireClient() {
33
36
  } };
34
37
  }
35
38
  Object.defineProperty(o, k2, desc);
36
- } : function(o, m, k, k2) {
39
+ }) : (function(o, m, k, k2) {
37
40
  if (k2 === void 0) k2 = k;
38
41
  o[k2] = m[k];
39
- });
40
- var __setModuleDefault = client && client.__setModuleDefault || (Object.create ? function(o, v) {
42
+ }));
43
+ var __setModuleDefault = client && client.__setModuleDefault || (Object.create ? (function(o, v) {
41
44
  Object.defineProperty(o, "default", { enumerable: true, value: v });
42
- } : function(o, v) {
45
+ }) : function(o, v) {
43
46
  o["default"] = v;
44
47
  });
45
48
  var __importStar = client && client.__importStar || function(mod) {
@@ -100,6 +103,9 @@ function requireClient() {
100
103
  const assignment_1 = requireAssignment();
101
104
  const assignment_filter_1 = requireAssignmentFilter();
102
105
  const assignment_service_1 = requireAssignmentService();
106
+ const exposure_1 = requireExposure();
107
+ const exposure_filter_1 = requireExposureFilter();
108
+ const exposure_service_1 = requireExposureService();
103
109
  const http_1 = requireHttp();
104
110
  const cohort_1 = requireCohort();
105
111
  const config_1 = requireConfig();
@@ -139,6 +145,10 @@ function requireClient() {
139
145
  this.config.assignmentConfig = Object.assign(Object.assign({}, config_1.AssignmentConfigDefaults), this.config.assignmentConfig);
140
146
  this.assignmentService = this.createAssignmentService(this.config.assignmentConfig);
141
147
  }
148
+ if (this.config.exposureConfig) {
149
+ const exposureConfig = Object.assign(Object.assign({}, config_1.ExposureConfigDefaults), this.config.exposureConfig);
150
+ this.exposureService = this.createExposureService(exposureConfig);
151
+ }
142
152
  this.evaluation = new experiment_core_1.EvaluationEngine();
143
153
  }
144
154
  createAssignmentService(assignmentConfig) {
@@ -147,8 +157,14 @@ function requireClient() {
147
157
  instance.init(apiKey, ampConfig);
148
158
  return new assignment_service_1.AmplitudeAssignmentService(instance, new assignment_filter_1.InMemoryAssignmentFilter(cacheCapacity));
149
159
  }
160
+ createExposureService(exposureConfig) {
161
+ const instance = amplitude.createInstance();
162
+ const { apiKey, cacheCapacity } = exposureConfig, ampConfig = __rest(exposureConfig, ["apiKey", "cacheCapacity"]);
163
+ instance.init(apiKey, ampConfig);
164
+ return new exposure_service_1.AmplitudeExposureService(instance, new exposure_filter_1.InMemoryExposureFilter(cacheCapacity));
165
+ }
150
166
  /**
151
- * Locally evaluate varints for a user.
167
+ * Locally evaluate variants for a user.
152
168
  *
153
169
  * This function will only evaluate flags for the keys specified in the
154
170
  * {@link flagKeys} argument. If {@link flagKeys} is missing, all flags in the
@@ -163,8 +179,8 @@ function requireClient() {
163
179
  * from the flag cache are evaluated.
164
180
  * @returns The evaluated variants
165
181
  */
166
- evaluateV2(user, flagKeys) {
167
- var _a;
182
+ evaluateV2(user, flagKeys, options) {
183
+ var _a, _b;
168
184
  const flags = this.cache.getAllCached();
169
185
  this.enrichUserWithCohorts(user, flags);
170
186
  this.logger.debug("[Experiment] evaluate - user:", user, "flags:", flags);
@@ -172,6 +188,9 @@ function requireClient() {
172
188
  const sortedFlags = (0, experiment_core_1.topologicalSort)(flags, flagKeys);
173
189
  const results = this.evaluation.evaluate(context, sortedFlags);
174
190
  void ((_a = this.assignmentService) === null || _a === void 0 ? void 0 : _a.track(new assignment_1.Assignment(user, results)));
191
+ if (options === null || options === void 0 ? void 0 : options.tracksExposure) {
192
+ void ((_b = this.exposureService) === null || _b === void 0 ? void 0 : _b.track(new exposure_1.Exposure(user, results)));
193
+ }
175
194
  this.logger.debug("[Experiment] evaluate - variants: ", results);
176
195
  return (0, variant_1.evaluationVariantsToVariants)(results);
177
196
  }
@@ -236,9 +255,9 @@ function requireClient() {
236
255
  * @returns The evaluated variants
237
256
  * @deprecated use evaluateV2 instead
238
257
  */
239
- evaluate(user, flagKeys) {
258
+ evaluate(user, flagKeys, options) {
240
259
  return __awaiter(this, void 0, void 0, function* () {
241
- const results = this.evaluateV2(user, flagKeys);
260
+ const results = this.evaluateV2(user, flagKeys, options);
242
261
  return (0, variant_1.filterDefaultVariants)(results);
243
262
  });
244
263
  }
@@ -1 +1 @@
1
- {"version":3,"file":"client.js","sources":["../../../../../../../../../node_modules/@amplitude/experiment-node-server/dist/src/local/client.js"],"sourcesContent":["\"use strict\";\nvar __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {\n if (k2 === undefined) k2 = k;\n var desc = Object.getOwnPropertyDescriptor(m, k);\n if (!desc || (\"get\" in desc ? !m.__esModule : desc.writable || desc.configurable)) {\n desc = { enumerable: true, get: function() { return m[k]; } };\n }\n Object.defineProperty(o, k2, desc);\n}) : (function(o, m, k, k2) {\n if (k2 === undefined) k2 = k;\n o[k2] = m[k];\n}));\nvar __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {\n Object.defineProperty(o, \"default\", { enumerable: true, value: v });\n}) : function(o, v) {\n o[\"default\"] = v;\n});\nvar __importStar = (this && this.__importStar) || function (mod) {\n if (mod && mod.__esModule) return mod;\n var result = {};\n if (mod != null) for (var k in mod) if (k !== \"default\" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);\n __setModuleDefault(result, mod);\n return result;\n};\nvar __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {\n function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }\n return new (P || (P = Promise))(function (resolve, reject) {\n function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }\n function rejected(value) { try { step(generator[\"throw\"](value)); } catch (e) { reject(e); } }\n function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }\n step((generator = generator.apply(thisArg, _arguments || [])).next());\n });\n};\nvar __rest = (this && this.__rest) || function (s, e) {\n var t = {};\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p) && e.indexOf(p) < 0)\n t[p] = s[p];\n if (s != null && typeof Object.getOwnPropertySymbols === \"function\")\n for (var i = 0, p = Object.getOwnPropertySymbols(s); i < p.length; i++) {\n if (e.indexOf(p[i]) < 0 && Object.prototype.propertyIsEnumerable.call(s, p[i]))\n t[p[i]] = s[p[i]];\n }\n return t;\n};\nvar __importDefault = (this && this.__importDefault) || function (mod) {\n return (mod && mod.__esModule) ? mod : { \"default\": mod };\n};\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.LocalEvaluationClient = void 0;\nconst amplitude = __importStar(require(\"@amplitude/analytics-node\"));\nconst experiment_core_1 = require(\"@amplitude/experiment-core\");\nconst eventsource_1 = __importDefault(require(\"eventsource\"));\nconst assignment_1 = require(\"../assignment/assignment\");\nconst assignment_filter_1 = require(\"../assignment/assignment-filter\");\nconst assignment_service_1 = require(\"../assignment/assignment-service\");\nconst http_1 = require(\"../transport/http\");\nconst cohort_1 = require(\"../types/cohort\");\nconst config_1 = require(\"../types/config\");\nconst cohort_2 = require(\"../util/cohort\");\nconst config_2 = require(\"../util/config\");\nconst logger_1 = require(\"../util/logger\");\nconst user_1 = require(\"../util/user\");\nconst variant_1 = require(\"../util/variant\");\nconst cache_1 = require(\"./cache\");\nconst fetcher_1 = require(\"./cohort/fetcher\");\nconst poller_1 = require(\"./cohort/poller\");\nconst storage_1 = require(\"./cohort/storage\");\nconst fetcher_2 = require(\"./fetcher\");\nconst poller_2 = require(\"./poller\");\nconst streamer_1 = require(\"./streamer\");\nconst STREAM_RETRY_DELAY_MILLIS = 15000; // The base delay to retry stream after fallback to poller.\nconst STREAM_RETRY_JITTER_MAX_MILLIS = 2000; // The jitter to add to delay after fallbacked to poller.\nconst STREAM_ATTEMPTS = 1; // Number of attempts before fallback to poller.\nconst STREAM_TRY_DELAY_MILLIS = 1000; // The delay between attempts.\nconst COHORT_POLLING_INTERVAL_MILLIS_MIN = 60000;\n/**\n * Experiment client for evaluating variants for a user locally.\n * @category Core Usage\n */\nclass LocalEvaluationClient {\n constructor(apiKey, config, flagConfigCache, httpClient = new http_1.FetchHttpClient(config === null || config === void 0 ? void 0 : config.httpAgent), streamEventSourceFactory = (url, params) => new eventsource_1.default(url, params)) {\n var _a, _b, _c;\n this.config = (0, config_2.populateLocalConfigDefaults)(config);\n const fetcher = new fetcher_2.FlagConfigFetcher(apiKey, httpClient, this.config.serverUrl, this.config.logLevel, this.config.loggerProvider);\n this.cache = new cache_1.InMemoryFlagConfigCache(flagConfigCache, this.config.bootstrap);\n this.logger = new logger_1.AmplitudeLogger(this.config.logLevel, this.config.loggerProvider);\n this.cohortStorage = new storage_1.InMemoryCohortStorage();\n let cohortFetcher = undefined;\n if (this.config.cohortSyncConfig) {\n cohortFetcher = new fetcher_1.CohortFetcher(this.config.cohortSyncConfig.apiKey, this.config.cohortSyncConfig.secretKey, httpClient, (_a = this.config.cohortSyncConfig) === null || _a === void 0 ? void 0 : _a.cohortServerUrl, (_b = this.config.cohortSyncConfig) === null || _b === void 0 ? void 0 : _b.maxCohortSize, undefined, this.config.logLevel, this.config.loggerProvider);\n this.cohortUpdater = new poller_1.CohortPoller(cohortFetcher, this.cohortStorage, this.cache, Math.max(COHORT_POLLING_INTERVAL_MILLIS_MIN, (_c = this.config.cohortSyncConfig) === null || _c === void 0 ? void 0 : _c.cohortPollingIntervalMillis), this.config.logLevel, this.config.loggerProvider);\n }\n const flagsPoller = new poller_2.FlagConfigPoller(fetcher, this.cache, this.cohortStorage, cohortFetcher, this.config.flagConfigPollingIntervalMillis, this.config.logLevel, this.config.loggerProvider);\n this.updater = this.config.streamUpdates\n ? new streamer_1.FlagConfigStreamer(apiKey, flagsPoller, this.cache, streamEventSourceFactory, this.config.streamFlagConnTimeoutMillis, STREAM_ATTEMPTS, STREAM_TRY_DELAY_MILLIS, STREAM_RETRY_DELAY_MILLIS +\n Math.floor(Math.random() * STREAM_RETRY_JITTER_MAX_MILLIS), this.config.streamServerUrl, this.cohortStorage, cohortFetcher, this.config.logLevel, this.config.loggerProvider)\n : flagsPoller;\n if (this.config.assignmentConfig) {\n this.config.assignmentConfig = Object.assign(Object.assign({}, config_1.AssignmentConfigDefaults), this.config.assignmentConfig);\n this.assignmentService = this.createAssignmentService(this.config.assignmentConfig);\n }\n this.evaluation = new experiment_core_1.EvaluationEngine();\n }\n createAssignmentService(assignmentConfig) {\n const instance = amplitude.createInstance();\n const { apiKey, cacheCapacity } = assignmentConfig, ampConfig = __rest(assignmentConfig, [\"apiKey\", \"cacheCapacity\"]);\n instance.init(apiKey, ampConfig);\n return new assignment_service_1.AmplitudeAssignmentService(instance, new assignment_filter_1.InMemoryAssignmentFilter(cacheCapacity));\n }\n /**\n * Locally evaluate varints for a user.\n *\n * This function will only evaluate flags for the keys specified in the\n * {@link flagKeys} argument. If {@link flagKeys} is missing, all flags in the\n * {@link FlagConfigCache} will be evaluated.\n *\n * Unlike {@link evaluate}, this function returns a default variant object\n * if the flag or experiment was evaluated, but the user was not assigned a\n * variant (i.e. 'off').\n *\n * @param user The user to evaluate\n * @param flagKeys The flags to evaluate with the user. If empty, all flags\n * from the flag cache are evaluated.\n * @returns The evaluated variants\n */\n evaluateV2(user, flagKeys) {\n var _a;\n const flags = this.cache.getAllCached();\n this.enrichUserWithCohorts(user, flags);\n this.logger.debug('[Experiment] evaluate - user:', user, 'flags:', flags);\n const context = (0, user_1.convertUserToEvaluationContext)(user);\n const sortedFlags = (0, experiment_core_1.topologicalSort)(flags, flagKeys);\n const results = this.evaluation.evaluate(context, sortedFlags);\n void ((_a = this.assignmentService) === null || _a === void 0 ? void 0 : _a.track(new assignment_1.Assignment(user, results)));\n this.logger.debug('[Experiment] evaluate - variants: ', results);\n return (0, variant_1.evaluationVariantsToVariants)(results);\n }\n checkFlagsCohortsAvailable(cohortIdsByFlag) {\n const availableCohortIds = this.cohortStorage.getAllCohortIds();\n for (const key in cohortIdsByFlag) {\n const flagCohortIds = cohortIdsByFlag[key];\n const unavailableCohortIds = cohort_2.CohortUtils.setSubtract(flagCohortIds, availableCohortIds);\n if (unavailableCohortIds.size > 0) {\n this.logger.error(`[Experiment] Flag ${key} has cohort ids ${[\n ...unavailableCohortIds,\n ]} unavailable, evaluation may be incorrect`);\n return false;\n }\n }\n return true;\n }\n enrichUserWithCohorts(user, flags) {\n const cohortIdsByFlag = {};\n const cohortIdsByGroup = {};\n for (const key in flags) {\n const cohortIdsByGroupOfFlag = cohort_2.CohortUtils.extractCohortIdsByGroupFromFlag(flags[key]);\n cohort_2.CohortUtils.mergeValuesOfBIntoValuesOfA(cohortIdsByGroup, cohortIdsByGroupOfFlag);\n cohortIdsByFlag[key] = cohort_2.CohortUtils.mergeAllValues(cohortIdsByGroupOfFlag);\n }\n this.checkFlagsCohortsAvailable(cohortIdsByFlag);\n // Enrich cohorts with user group type.\n const userCohortIds = cohortIdsByGroup[cohort_1.USER_GROUP_TYPE];\n if (user.user_id && userCohortIds && userCohortIds.size != 0) {\n user.cohort_ids = Array.from(this.cohortStorage.getCohortsForUser(user.user_id, userCohortIds));\n }\n // Enrich other group types for this user.\n if (user.groups) {\n for (const groupType in user.groups) {\n const groupNames = user.groups[groupType];\n if (groupNames.length == 0) {\n continue;\n }\n const groupName = groupNames[0];\n const cohortIds = cohortIdsByGroup[groupType];\n if (!cohortIds || cohortIds.size == 0) {\n continue;\n }\n if (!user.group_cohort_ids) {\n user.group_cohort_ids = {};\n }\n if (!(groupType in user.group_cohort_ids)) {\n user.group_cohort_ids[groupType] = {};\n }\n user.group_cohort_ids[groupType][groupName] = Array.from(this.cohortStorage.getCohortsForGroup(groupType, groupName, cohortIds));\n }\n }\n }\n /**\n * Locally evaluates flag variants for a user.\n *\n * This function will only evaluate flags for the keys specified in the\n * {@link flagKeys} argument. If {@link flagKeys} is missing, all flags in the\n * {@link FlagConfigCache} will be evaluated.\n *\n * @param user The user to evaluate\n * @param flagKeys The flags to evaluate with the user. If empty, all flags\n * from the flag cache are evaluated.\n * @returns The evaluated variants\n * @deprecated use evaluateV2 instead\n */\n evaluate(user, flagKeys) {\n return __awaiter(this, void 0, void 0, function* () {\n const results = this.evaluateV2(user, flagKeys);\n return (0, variant_1.filterDefaultVariants)(results);\n });\n }\n /**\n * Fetch initial flag configurations and start polling for updates.\n *\n * You must call this function to begin polling for flag config updates.\n * The promise returned by this function is resolved when the initial call\n * to fetch the flag configuration completes.\n *\n * Calling this function while the poller is already running does nothing.\n */\n start() {\n var _a;\n return __awaiter(this, void 0, void 0, function* () {\n yield this.updater.start();\n yield ((_a = this.cohortUpdater) === null || _a === void 0 ? void 0 : _a.start());\n });\n }\n /**\n * Stop polling for flag configurations.\n *\n * Calling this function while the poller is not running will do nothing.\n */\n stop() {\n var _a;\n this.updater.stop();\n (_a = this.cohortUpdater) === null || _a === void 0 ? void 0 : _a.stop();\n }\n}\nexports.LocalEvaluationClient = LocalEvaluationClient;\n"],"names":["this","require$$2","require$$3","require$$4","require$$5","require$$6","require$$7","require$$8","require$$9","require$$10","require$$11","require$$12","require$$13","require$$14","require$$15","require$$16","require$$17","require$$18","require$$19","require$$20"],"mappings":"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","x_google_ignoreList":[0]}
1
+ {"version":3,"file":"client.js","sources":["../../../../../../../../../node_modules/@amplitude/experiment-node-server/dist/src/local/client.js"],"sourcesContent":["\"use strict\";\nvar __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {\n if (k2 === undefined) k2 = k;\n var desc = Object.getOwnPropertyDescriptor(m, k);\n if (!desc || (\"get\" in desc ? !m.__esModule : desc.writable || desc.configurable)) {\n desc = { enumerable: true, get: function() { return m[k]; } };\n }\n Object.defineProperty(o, k2, desc);\n}) : (function(o, m, k, k2) {\n if (k2 === undefined) k2 = k;\n o[k2] = m[k];\n}));\nvar __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {\n Object.defineProperty(o, \"default\", { enumerable: true, value: v });\n}) : function(o, v) {\n o[\"default\"] = v;\n});\nvar __importStar = (this && this.__importStar) || function (mod) {\n if (mod && mod.__esModule) return mod;\n var result = {};\n if (mod != null) for (var k in mod) if (k !== \"default\" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);\n __setModuleDefault(result, mod);\n return result;\n};\nvar __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {\n function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }\n return new (P || (P = Promise))(function (resolve, reject) {\n function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }\n function rejected(value) { try { step(generator[\"throw\"](value)); } catch (e) { reject(e); } }\n function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }\n step((generator = generator.apply(thisArg, _arguments || [])).next());\n });\n};\nvar __rest = (this && this.__rest) || function (s, e) {\n var t = {};\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p) && e.indexOf(p) < 0)\n t[p] = s[p];\n if (s != null && typeof Object.getOwnPropertySymbols === \"function\")\n for (var i = 0, p = Object.getOwnPropertySymbols(s); i < p.length; i++) {\n if (e.indexOf(p[i]) < 0 && Object.prototype.propertyIsEnumerable.call(s, p[i]))\n t[p[i]] = s[p[i]];\n }\n return t;\n};\nvar __importDefault = (this && this.__importDefault) || function (mod) {\n return (mod && mod.__esModule) ? mod : { \"default\": mod };\n};\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.LocalEvaluationClient = void 0;\nconst amplitude = __importStar(require(\"@amplitude/analytics-node\"));\nconst experiment_core_1 = require(\"@amplitude/experiment-core\");\nconst eventsource_1 = __importDefault(require(\"eventsource\"));\nconst assignment_1 = require(\"../assignment/assignment\");\nconst assignment_filter_1 = require(\"../assignment/assignment-filter\");\nconst assignment_service_1 = require(\"../assignment/assignment-service\");\nconst exposure_1 = require(\"../exposure/exposure\");\nconst exposure_filter_1 = require(\"../exposure/exposure-filter\");\nconst exposure_service_1 = require(\"../exposure/exposure-service\");\nconst http_1 = require(\"../transport/http\");\nconst cohort_1 = require(\"../types/cohort\");\nconst config_1 = require(\"../types/config\");\nconst cohort_2 = require(\"../util/cohort\");\nconst config_2 = require(\"../util/config\");\nconst logger_1 = require(\"../util/logger\");\nconst user_1 = require(\"../util/user\");\nconst variant_1 = require(\"../util/variant\");\nconst cache_1 = require(\"./cache\");\nconst fetcher_1 = require(\"./cohort/fetcher\");\nconst poller_1 = require(\"./cohort/poller\");\nconst storage_1 = require(\"./cohort/storage\");\nconst fetcher_2 = require(\"./fetcher\");\nconst poller_2 = require(\"./poller\");\nconst streamer_1 = require(\"./streamer\");\nconst STREAM_RETRY_DELAY_MILLIS = 15000; // The base delay to retry stream after fallback to poller.\nconst STREAM_RETRY_JITTER_MAX_MILLIS = 2000; // The jitter to add to delay after fallbacked to poller.\nconst STREAM_ATTEMPTS = 1; // Number of attempts before fallback to poller.\nconst STREAM_TRY_DELAY_MILLIS = 1000; // The delay between attempts.\nconst COHORT_POLLING_INTERVAL_MILLIS_MIN = 60000;\n/**\n * Experiment client for evaluating variants for a user locally.\n * @category Core Usage\n */\nclass LocalEvaluationClient {\n constructor(apiKey, config, flagConfigCache, httpClient = new http_1.FetchHttpClient(config === null || config === void 0 ? void 0 : config.httpAgent), streamEventSourceFactory = (url, params) => new eventsource_1.default(url, params)) {\n var _a, _b, _c;\n this.config = (0, config_2.populateLocalConfigDefaults)(config);\n const fetcher = new fetcher_2.FlagConfigFetcher(apiKey, httpClient, this.config.serverUrl, this.config.logLevel, this.config.loggerProvider);\n this.cache = new cache_1.InMemoryFlagConfigCache(flagConfigCache, this.config.bootstrap);\n this.logger = new logger_1.AmplitudeLogger(this.config.logLevel, this.config.loggerProvider);\n this.cohortStorage = new storage_1.InMemoryCohortStorage();\n let cohortFetcher = undefined;\n if (this.config.cohortSyncConfig) {\n cohortFetcher = new fetcher_1.CohortFetcher(this.config.cohortSyncConfig.apiKey, this.config.cohortSyncConfig.secretKey, httpClient, (_a = this.config.cohortSyncConfig) === null || _a === void 0 ? void 0 : _a.cohortServerUrl, (_b = this.config.cohortSyncConfig) === null || _b === void 0 ? void 0 : _b.maxCohortSize, undefined, this.config.logLevel, this.config.loggerProvider);\n this.cohortUpdater = new poller_1.CohortPoller(cohortFetcher, this.cohortStorage, this.cache, Math.max(COHORT_POLLING_INTERVAL_MILLIS_MIN, (_c = this.config.cohortSyncConfig) === null || _c === void 0 ? void 0 : _c.cohortPollingIntervalMillis), this.config.logLevel, this.config.loggerProvider);\n }\n const flagsPoller = new poller_2.FlagConfigPoller(fetcher, this.cache, this.cohortStorage, cohortFetcher, this.config.flagConfigPollingIntervalMillis, this.config.logLevel, this.config.loggerProvider);\n this.updater = this.config.streamUpdates\n ? new streamer_1.FlagConfigStreamer(apiKey, flagsPoller, this.cache, streamEventSourceFactory, this.config.streamFlagConnTimeoutMillis, STREAM_ATTEMPTS, STREAM_TRY_DELAY_MILLIS, STREAM_RETRY_DELAY_MILLIS +\n Math.floor(Math.random() * STREAM_RETRY_JITTER_MAX_MILLIS), this.config.streamServerUrl, this.cohortStorage, cohortFetcher, this.config.logLevel, this.config.loggerProvider)\n : flagsPoller;\n if (this.config.assignmentConfig) {\n this.config.assignmentConfig = Object.assign(Object.assign({}, config_1.AssignmentConfigDefaults), this.config.assignmentConfig);\n this.assignmentService = this.createAssignmentService(this.config.assignmentConfig);\n }\n if (this.config.exposureConfig) {\n const exposureConfig = Object.assign(Object.assign({}, config_1.ExposureConfigDefaults), this.config.exposureConfig);\n this.exposureService = this.createExposureService(exposureConfig);\n }\n this.evaluation = new experiment_core_1.EvaluationEngine();\n }\n createAssignmentService(assignmentConfig) {\n const instance = amplitude.createInstance();\n const { apiKey, cacheCapacity } = assignmentConfig, ampConfig = __rest(assignmentConfig, [\"apiKey\", \"cacheCapacity\"]);\n instance.init(apiKey, ampConfig);\n return new assignment_service_1.AmplitudeAssignmentService(instance, new assignment_filter_1.InMemoryAssignmentFilter(cacheCapacity));\n }\n createExposureService(exposureConfig) {\n const instance = amplitude.createInstance();\n const { apiKey, cacheCapacity } = exposureConfig, ampConfig = __rest(exposureConfig, [\"apiKey\", \"cacheCapacity\"]);\n instance.init(apiKey, ampConfig);\n return new exposure_service_1.AmplitudeExposureService(instance, new exposure_filter_1.InMemoryExposureFilter(cacheCapacity));\n }\n /**\n * Locally evaluate variants for a user.\n *\n * This function will only evaluate flags for the keys specified in the\n * {@link flagKeys} argument. If {@link flagKeys} is missing, all flags in the\n * {@link FlagConfigCache} will be evaluated.\n *\n * Unlike {@link evaluate}, this function returns a default variant object\n * if the flag or experiment was evaluated, but the user was not assigned a\n * variant (i.e. 'off').\n *\n * @param user The user to evaluate\n * @param flagKeys The flags to evaluate with the user. If empty, all flags\n * from the flag cache are evaluated.\n * @returns The evaluated variants\n */\n evaluateV2(user, flagKeys, options) {\n var _a, _b;\n const flags = this.cache.getAllCached();\n this.enrichUserWithCohorts(user, flags);\n this.logger.debug('[Experiment] evaluate - user:', user, 'flags:', flags);\n const context = (0, user_1.convertUserToEvaluationContext)(user);\n const sortedFlags = (0, experiment_core_1.topologicalSort)(flags, flagKeys);\n const results = this.evaluation.evaluate(context, sortedFlags);\n void ((_a = this.assignmentService) === null || _a === void 0 ? void 0 : _a.track(new assignment_1.Assignment(user, results)));\n if (options === null || options === void 0 ? void 0 : options.tracksExposure) {\n void ((_b = this.exposureService) === null || _b === void 0 ? void 0 : _b.track(new exposure_1.Exposure(user, results)));\n }\n this.logger.debug('[Experiment] evaluate - variants: ', results);\n return (0, variant_1.evaluationVariantsToVariants)(results);\n }\n checkFlagsCohortsAvailable(cohortIdsByFlag) {\n const availableCohortIds = this.cohortStorage.getAllCohortIds();\n for (const key in cohortIdsByFlag) {\n const flagCohortIds = cohortIdsByFlag[key];\n const unavailableCohortIds = cohort_2.CohortUtils.setSubtract(flagCohortIds, availableCohortIds);\n if (unavailableCohortIds.size > 0) {\n this.logger.error(`[Experiment] Flag ${key} has cohort ids ${[\n ...unavailableCohortIds,\n ]} unavailable, evaluation may be incorrect`);\n return false;\n }\n }\n return true;\n }\n enrichUserWithCohorts(user, flags) {\n const cohortIdsByFlag = {};\n const cohortIdsByGroup = {};\n for (const key in flags) {\n const cohortIdsByGroupOfFlag = cohort_2.CohortUtils.extractCohortIdsByGroupFromFlag(flags[key]);\n cohort_2.CohortUtils.mergeValuesOfBIntoValuesOfA(cohortIdsByGroup, cohortIdsByGroupOfFlag);\n cohortIdsByFlag[key] = cohort_2.CohortUtils.mergeAllValues(cohortIdsByGroupOfFlag);\n }\n this.checkFlagsCohortsAvailable(cohortIdsByFlag);\n // Enrich cohorts with user group type.\n const userCohortIds = cohortIdsByGroup[cohort_1.USER_GROUP_TYPE];\n if (user.user_id && userCohortIds && userCohortIds.size != 0) {\n user.cohort_ids = Array.from(this.cohortStorage.getCohortsForUser(user.user_id, userCohortIds));\n }\n // Enrich other group types for this user.\n if (user.groups) {\n for (const groupType in user.groups) {\n const groupNames = user.groups[groupType];\n if (groupNames.length == 0) {\n continue;\n }\n const groupName = groupNames[0];\n const cohortIds = cohortIdsByGroup[groupType];\n if (!cohortIds || cohortIds.size == 0) {\n continue;\n }\n if (!user.group_cohort_ids) {\n user.group_cohort_ids = {};\n }\n if (!(groupType in user.group_cohort_ids)) {\n user.group_cohort_ids[groupType] = {};\n }\n user.group_cohort_ids[groupType][groupName] = Array.from(this.cohortStorage.getCohortsForGroup(groupType, groupName, cohortIds));\n }\n }\n }\n /**\n * Locally evaluates flag variants for a user.\n *\n * This function will only evaluate flags for the keys specified in the\n * {@link flagKeys} argument. If {@link flagKeys} is missing, all flags in the\n * {@link FlagConfigCache} will be evaluated.\n *\n * @param user The user to evaluate\n * @param flagKeys The flags to evaluate with the user. If empty, all flags\n * from the flag cache are evaluated.\n * @returns The evaluated variants\n * @deprecated use evaluateV2 instead\n */\n evaluate(user, flagKeys, options) {\n return __awaiter(this, void 0, void 0, function* () {\n const results = this.evaluateV2(user, flagKeys, options);\n return (0, variant_1.filterDefaultVariants)(results);\n });\n }\n /**\n * Fetch initial flag configurations and start polling for updates.\n *\n * You must call this function to begin polling for flag config updates.\n * The promise returned by this function is resolved when the initial call\n * to fetch the flag configuration completes.\n *\n * Calling this function while the poller is already running does nothing.\n */\n start() {\n var _a;\n return __awaiter(this, void 0, void 0, function* () {\n yield this.updater.start();\n yield ((_a = this.cohortUpdater) === null || _a === void 0 ? void 0 : _a.start());\n });\n }\n /**\n * Stop polling for flag configurations.\n *\n * Calling this function while the poller is not running will do nothing.\n */\n stop() {\n var _a;\n this.updater.stop();\n (_a = this.cohortUpdater) === null || _a === void 0 ? void 0 : _a.stop();\n }\n}\nexports.LocalEvaluationClient = LocalEvaluationClient;\n"],"names":["this","require$$2","require$$3","require$$4","require$$5","require$$6","require$$7","require$$8","require$$9","require$$10","require$$11","require$$12","require$$13","require$$14","require$$15","require$$16","require$$17","require$$18","require$$19","require$$20","require$$21","require$$22","require$$23"],"mappings":"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","x_google_ignoreList":[0]}
@@ -118,10 +118,17 @@ function requireClient() {
118
118
  doFetch(user, timeoutMillis, options) {
119
119
  return __awaiter(this, void 0, void 0, function* () {
120
120
  const userContext = this.addContext(user || {});
121
- const results = yield this.evaluationApi.getVariants(userContext, {
121
+ const getVariantsOptions = {
122
122
  flagKeys: options === null || options === void 0 ? void 0 : options.flagKeys,
123
123
  timeoutMillis
124
- });
124
+ };
125
+ if (options === null || options === void 0 ? void 0 : options.tracksAssignment) {
126
+ getVariantsOptions.trackingOption = (options === null || options === void 0 ? void 0 : options.tracksAssignment) ? "track" : "no-track";
127
+ }
128
+ if (options === null || options === void 0 ? void 0 : options.tracksExposure) {
129
+ getVariantsOptions.exposureTrackingOption = (options === null || options === void 0 ? void 0 : options.tracksExposure) ? "track" : "no-track";
130
+ }
131
+ const results = yield this.evaluationApi.getVariants(userContext, getVariantsOptions);
125
132
  this.logger.debug("[Experiment] Fetched variants: ", results);
126
133
  return (0, variant_1.evaluationVariantsToVariants)(results);
127
134
  });
@@ -1 +1 @@
1
- {"version":3,"file":"client.js","sources":["../../../../../../../../../node_modules/@amplitude/experiment-node-server/dist/src/remote/client.js"],"sourcesContent":["\"use strict\";\nvar __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {\n function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }\n return new (P || (P = Promise))(function (resolve, reject) {\n function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }\n function rejected(value) { try { step(generator[\"throw\"](value)); } catch (e) { reject(e); } }\n function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }\n step((generator = generator.apply(thisArg, _arguments || [])).next());\n });\n};\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.ExperimentClient = exports.RemoteEvaluationClient = void 0;\nconst experiment_core_1 = require(\"@amplitude/experiment-core\");\nconst version_1 = require(\"../../gen/version\");\nconst http_1 = require(\"../transport/http\");\nconst config_1 = require(\"../util/config\");\nconst logger_1 = require(\"../util/logger\");\nconst time_1 = require(\"../util/time\");\nconst variant_1 = require(\"../util/variant\");\n/**\n * Experiment client for fetching variants for a user remotely.\n * @category Core Usage\n */\nclass RemoteEvaluationClient {\n /**\n * Creates a new RemoteEvaluationClient instance.\n *\n * @param apiKey The environment API Key\n * @param config See {@link ExperimentConfig} for config options\n */\n constructor(apiKey, config) {\n var _a;\n this.apiKey = apiKey;\n this.config = (0, config_1.populateRemoteConfigDefaults)(config);\n this.logger = new logger_1.AmplitudeLogger(this.config.logLevel, this.config.loggerProvider);\n this.evaluationApi = new experiment_core_1.SdkEvaluationApi(apiKey, this.config.serverUrl, new http_1.WrapperClient(new http_1.FetchHttpClient((_a = this.config) === null || _a === void 0 ? void 0 : _a.httpAgent)));\n }\n /**\n * Fetch remote evaluated variants for a user. This function can\n * automatically retry the request on failure (if configured), and will\n * throw the original error if all retries fail.\n *\n * Unlike {@link fetch}, this function returns a default variant object\n * if the flag or experiment was evaluated, but the user was not assigned a\n * variant (i.e. 'off').\n *\n * @param user The user to fetch variants for.\n * @param options Options to configure the fetch request.\n */\n fetchV2(user, options) {\n return __awaiter(this, void 0, void 0, function* () {\n if (!this.apiKey) {\n throw Error('Experiment API key is empty');\n }\n this.logger.debug('[Experiment] Fetching variants for user: ', user);\n try {\n return yield this.doFetch(user, this.config.fetchTimeoutMillis, options);\n }\n catch (e) {\n console.error('[Experiment] Fetch failed: ', e);\n if (this.shouldRetryFetch(e)) {\n try {\n return yield this.retryFetch(user, options, e);\n }\n catch (e) {\n console.error(e);\n }\n }\n throw e;\n }\n });\n }\n /**\n * Fetch all variants for a user.\n *\n * This method will automatically retry if configured (default).\n *\n * @param user The {@link ExperimentUser} context\n * @param options The {@link FetchOptions} for this specific fetch request.\n * @return The {@link Variants} for the user on success, empty\n * {@link Variants} on error.\n * @deprecated use fetchV2 instead\n */\n fetch(user, options) {\n return __awaiter(this, void 0, void 0, function* () {\n try {\n const results = yield this.fetchV2(user, options);\n return (0, variant_1.filterDefaultVariants)(results);\n }\n catch (e) {\n console.error('[Experiment] Failed to fetch variants: ', e);\n return {};\n }\n });\n }\n doFetch(user, timeoutMillis, options) {\n return __awaiter(this, void 0, void 0, function* () {\n const userContext = this.addContext(user || {});\n const results = yield this.evaluationApi.getVariants(userContext, {\n flagKeys: options === null || options === void 0 ? void 0 : options.flagKeys,\n timeoutMillis: timeoutMillis,\n });\n this.logger.debug('[Experiment] Fetched variants: ', results);\n return (0, variant_1.evaluationVariantsToVariants)(results);\n });\n }\n retryFetch(user, options, err) {\n return __awaiter(this, void 0, void 0, function* () {\n this.logger.debug('[Experiment] Retrying fetch');\n let delayMillis = this.config.fetchRetryBackoffMinMillis;\n for (let i = 0; i < this.config.fetchRetries; i++) {\n yield (0, time_1.sleep)(delayMillis);\n try {\n return yield this.doFetch(user, this.config.fetchRetryTimeoutMillis, options);\n }\n catch (e) {\n console.error('[Experiment] Retry falied: ', e);\n err = e;\n }\n delayMillis = Math.min(delayMillis * this.config.fetchRetryBackoffScalar, this.config.fetchRetryBackoffMaxMillis);\n }\n throw err;\n });\n }\n addContext(user) {\n return Object.assign({ library: `experiment-node-server/${version_1.version}` }, user);\n }\n shouldRetryFetch(e) {\n if (e instanceof experiment_core_1.FetchError) {\n return e.statusCode < 400 || e.statusCode >= 500 || e.statusCode === 429;\n }\n return true;\n }\n}\nexports.RemoteEvaluationClient = RemoteEvaluationClient;\n/**\n * @deprecated use {@link RemoteEvaluationClient}.\n */\nclass ExperimentClient extends RemoteEvaluationClient {\n constructor(apiKey, config) {\n super(apiKey, config);\n }\n}\nexports.ExperimentClient = ExperimentClient;\n"],"names":["this","require$$0","require$$1","require$$2","require$$3","require$$4","require$$5","require$$6","e"],"mappings":"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","x_google_ignoreList":[0]}
1
+ {"version":3,"file":"client.js","sources":["../../../../../../../../../node_modules/@amplitude/experiment-node-server/dist/src/remote/client.js"],"sourcesContent":["\"use strict\";\nvar __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {\n function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }\n return new (P || (P = Promise))(function (resolve, reject) {\n function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }\n function rejected(value) { try { step(generator[\"throw\"](value)); } catch (e) { reject(e); } }\n function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }\n step((generator = generator.apply(thisArg, _arguments || [])).next());\n });\n};\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.ExperimentClient = exports.RemoteEvaluationClient = void 0;\nconst experiment_core_1 = require(\"@amplitude/experiment-core\");\nconst version_1 = require(\"../../gen/version\");\nconst http_1 = require(\"../transport/http\");\nconst config_1 = require(\"../util/config\");\nconst logger_1 = require(\"../util/logger\");\nconst time_1 = require(\"../util/time\");\nconst variant_1 = require(\"../util/variant\");\n/**\n * Experiment client for fetching variants for a user remotely.\n * @category Core Usage\n */\nclass RemoteEvaluationClient {\n /**\n * Creates a new RemoteEvaluationClient instance.\n *\n * @param apiKey The environment API Key\n * @param config See {@link ExperimentConfig} for config options\n */\n constructor(apiKey, config) {\n var _a;\n this.apiKey = apiKey;\n this.config = (0, config_1.populateRemoteConfigDefaults)(config);\n this.logger = new logger_1.AmplitudeLogger(this.config.logLevel, this.config.loggerProvider);\n this.evaluationApi = new experiment_core_1.SdkEvaluationApi(apiKey, this.config.serverUrl, new http_1.WrapperClient(new http_1.FetchHttpClient((_a = this.config) === null || _a === void 0 ? void 0 : _a.httpAgent)));\n }\n /**\n * Fetch remote evaluated variants for a user. This function can\n * automatically retry the request on failure (if configured), and will\n * throw the original error if all retries fail.\n *\n * Unlike {@link fetch}, this function returns a default variant object\n * if the flag or experiment was evaluated, but the user was not assigned a\n * variant (i.e. 'off').\n *\n * @param user The user to fetch variants for.\n * @param options Options to configure the fetch request.\n */\n fetchV2(user, options) {\n return __awaiter(this, void 0, void 0, function* () {\n if (!this.apiKey) {\n throw Error('Experiment API key is empty');\n }\n this.logger.debug('[Experiment] Fetching variants for user: ', user);\n try {\n return yield this.doFetch(user, this.config.fetchTimeoutMillis, options);\n }\n catch (e) {\n console.error('[Experiment] Fetch failed: ', e);\n if (this.shouldRetryFetch(e)) {\n try {\n return yield this.retryFetch(user, options, e);\n }\n catch (e) {\n console.error(e);\n }\n }\n throw e;\n }\n });\n }\n /**\n * Fetch all variants for a user.\n *\n * This method will automatically retry if configured (default).\n *\n * @param user The {@link ExperimentUser} context\n * @param options The {@link FetchOptions} for this specific fetch request.\n * @return The {@link Variants} for the user on success, empty\n * {@link Variants} on error.\n * @deprecated use fetchV2 instead\n */\n fetch(user, options) {\n return __awaiter(this, void 0, void 0, function* () {\n try {\n const results = yield this.fetchV2(user, options);\n return (0, variant_1.filterDefaultVariants)(results);\n }\n catch (e) {\n console.error('[Experiment] Failed to fetch variants: ', e);\n return {};\n }\n });\n }\n doFetch(user, timeoutMillis, options) {\n return __awaiter(this, void 0, void 0, function* () {\n const userContext = this.addContext(user || {});\n const getVariantsOptions = {\n flagKeys: options === null || options === void 0 ? void 0 : options.flagKeys,\n timeoutMillis: timeoutMillis,\n };\n if (options === null || options === void 0 ? void 0 : options.tracksAssignment) {\n getVariantsOptions.trackingOption = (options === null || options === void 0 ? void 0 : options.tracksAssignment)\n ? 'track'\n : 'no-track';\n }\n if (options === null || options === void 0 ? void 0 : options.tracksExposure) {\n getVariantsOptions.exposureTrackingOption =\n (options === null || options === void 0 ? void 0 : options.tracksExposure) ? 'track' : 'no-track';\n }\n const results = yield this.evaluationApi.getVariants(userContext, getVariantsOptions);\n this.logger.debug('[Experiment] Fetched variants: ', results);\n return (0, variant_1.evaluationVariantsToVariants)(results);\n });\n }\n retryFetch(user, options, err) {\n return __awaiter(this, void 0, void 0, function* () {\n this.logger.debug('[Experiment] Retrying fetch');\n let delayMillis = this.config.fetchRetryBackoffMinMillis;\n for (let i = 0; i < this.config.fetchRetries; i++) {\n yield (0, time_1.sleep)(delayMillis);\n try {\n return yield this.doFetch(user, this.config.fetchRetryTimeoutMillis, options);\n }\n catch (e) {\n console.error('[Experiment] Retry falied: ', e);\n err = e;\n }\n delayMillis = Math.min(delayMillis * this.config.fetchRetryBackoffScalar, this.config.fetchRetryBackoffMaxMillis);\n }\n throw err;\n });\n }\n addContext(user) {\n return Object.assign({ library: `experiment-node-server/${version_1.version}` }, user);\n }\n shouldRetryFetch(e) {\n if (e instanceof experiment_core_1.FetchError) {\n return e.statusCode < 400 || e.statusCode >= 500 || e.statusCode === 429;\n }\n return true;\n }\n}\nexports.RemoteEvaluationClient = RemoteEvaluationClient;\n/**\n * @deprecated use {@link RemoteEvaluationClient}.\n */\nclass ExperimentClient extends RemoteEvaluationClient {\n constructor(apiKey, config) {\n super(apiKey, config);\n }\n}\nexports.ExperimentClient = ExperimentClient;\n"],"names":["this","require$$0","require$$1","require$$2","require$$3","require$$4","require$$5","require$$6","e"],"mappings":"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","x_google_ignoreList":[0]}
@@ -1,7 +1,6 @@
1
1
  import { __exports as http } from "../../../../../../_virtual/http.js";
2
2
  import require$$0__default from "http";
3
3
  import require$$1__default from "https";
4
- import require$$2 from "url";
5
4
  var hasRequiredHttp;
6
5
  function requireHttp() {
7
6
  if (hasRequiredHttp) return http;
@@ -40,7 +39,6 @@ function requireHttp() {
40
39
  http.WrapperClient = http.FetchHttpClient = void 0;
41
40
  const http_1 = __importDefault(require$$0__default);
42
41
  const https_1 = __importDefault(require$$1__default);
43
- const url_1 = __importDefault(require$$2);
44
42
  const defaultHttpAgent = new https_1.default.Agent({
45
43
  keepAlive: true
46
44
  });
@@ -61,13 +59,17 @@ function requireHttp() {
61
59
  reject(Error("Response timed out"));
62
60
  return;
63
61
  }
64
- const urlParams = url_1.default.parse(requestUrl);
65
- const options = Object.assign(Object.assign({}, urlParams), { method, headers, body, timeout: timeoutMillis });
66
- if (urlParams.protocol === "https:") {
62
+ const parsedUrl = new URL(requestUrl);
63
+ const options = {
64
+ method,
65
+ headers,
66
+ timeout: timeoutMillis
67
+ };
68
+ if (parsedUrl.protocol === "https:") {
67
69
  options["agent"] = this.httpAgent;
68
70
  }
69
- const protocol = urlParams.protocol === "http:" ? http_1.default : https_1.default;
70
- const req = protocol.request(options);
71
+ const protocol = parsedUrl.protocol === "http:" ? http_1.default : https_1.default;
72
+ const req = protocol.request(parsedUrl, options);
71
73
  req.on("response", (res) => {
72
74
  res.setEncoding("utf-8");
73
75
  let responseBody = "";
@@ -1 +1 @@
1
- {"version":3,"file":"http.js","sources":["../../../../../../../../../node_modules/@amplitude/experiment-node-server/dist/src/transport/http.js"],"sourcesContent":["\"use strict\";\nvar __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {\n function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }\n return new (P || (P = Promise))(function (resolve, reject) {\n function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }\n function rejected(value) { try { step(generator[\"throw\"](value)); } catch (e) { reject(e); } }\n function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }\n step((generator = generator.apply(thisArg, _arguments || [])).next());\n });\n};\nvar __importDefault = (this && this.__importDefault) || function (mod) {\n return (mod && mod.__esModule) ? mod : { \"default\": mod };\n};\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.WrapperClient = exports.FetchHttpClient = void 0;\nconst http_1 = __importDefault(require(\"http\"));\nconst https_1 = __importDefault(require(\"https\"));\nconst url_1 = __importDefault(require(\"url\"));\nconst defaultHttpAgent = new https_1.default.Agent({\n keepAlive: true,\n});\nclass FetchHttpClient {\n constructor(httpAgent) {\n this.httpAgent = httpAgent || defaultHttpAgent;\n }\n /**\n * Wraps the http and https libraries in a fetch()-like interface\n * @param requestUrl\n * @param method HTTP Method (GET, POST, etc.)\n * @param headers HTTP Headers\n * @param Request body\n */\n request(requestUrl, method, headers, body, timeoutMillis) {\n return new Promise((resolve, reject) => {\n if (timeoutMillis === 0) {\n reject(Error('Response timed out'));\n return;\n }\n const urlParams = url_1.default.parse(requestUrl);\n const options = Object.assign(Object.assign({}, urlParams), { method: method, headers: headers, body: body, timeout: timeoutMillis });\n if (urlParams.protocol === 'https:') {\n options['agent'] = this.httpAgent;\n }\n const protocol = urlParams.protocol === 'http:' ? http_1.default : https_1.default;\n const req = protocol.request(options);\n req.on('response', (res) => {\n res.setEncoding('utf-8');\n let responseBody = '';\n res.on('data', (chunk) => {\n responseBody += chunk;\n });\n res.on('end', () => {\n resolve({\n status: res.statusCode,\n body: responseBody,\n });\n });\n });\n req.on('timeout', () => {\n req.destroy(Error('Socket connection timed out'));\n });\n req.on('error', (e) => {\n reject(e);\n });\n if (method !== 'GET' && body) {\n req.write(body);\n }\n req.end();\n });\n }\n}\nexports.FetchHttpClient = FetchHttpClient;\n/**\n * Wrap the exposed HttpClient in a CoreClient implementation to work with\n * FlagApi and EvaluationApi.\n */\nclass WrapperClient {\n constructor(client) {\n this.client = client;\n }\n request(request) {\n return __awaiter(this, void 0, void 0, function* () {\n return yield this.client.request(request.requestUrl, request.method, request.headers, null, request.timeoutMillis);\n });\n }\n}\nexports.WrapperClient = WrapperClient;\n"],"names":["this","require$$0","require$$1"],"mappings":"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","x_google_ignoreList":[0]}
1
+ {"version":3,"file":"http.js","sources":["../../../../../../../../../node_modules/@amplitude/experiment-node-server/dist/src/transport/http.js"],"sourcesContent":["\"use strict\";\nvar __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {\n function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }\n return new (P || (P = Promise))(function (resolve, reject) {\n function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }\n function rejected(value) { try { step(generator[\"throw\"](value)); } catch (e) { reject(e); } }\n function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }\n step((generator = generator.apply(thisArg, _arguments || [])).next());\n });\n};\nvar __importDefault = (this && this.__importDefault) || function (mod) {\n return (mod && mod.__esModule) ? mod : { \"default\": mod };\n};\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.WrapperClient = exports.FetchHttpClient = void 0;\nconst http_1 = __importDefault(require(\"http\"));\nconst https_1 = __importDefault(require(\"https\"));\nconst defaultHttpAgent = new https_1.default.Agent({\n keepAlive: true,\n});\nclass FetchHttpClient {\n constructor(httpAgent) {\n this.httpAgent = httpAgent || defaultHttpAgent;\n }\n /**\n * Wraps the http and https libraries in a fetch()-like interface\n * @param requestUrl\n * @param method HTTP Method (GET, POST, etc.)\n * @param headers HTTP Headers\n * @param Request body\n */\n request(requestUrl, method, headers, body, timeoutMillis) {\n return new Promise((resolve, reject) => {\n if (timeoutMillis === 0) {\n reject(Error('Response timed out'));\n return;\n }\n const parsedUrl = new URL(requestUrl);\n const options = {\n method: method,\n headers: headers,\n timeout: timeoutMillis,\n };\n if (parsedUrl.protocol === 'https:') {\n options['agent'] = this.httpAgent;\n }\n const protocol = parsedUrl.protocol === 'http:' ? http_1.default : https_1.default;\n const req = protocol.request(parsedUrl, options);\n req.on('response', (res) => {\n res.setEncoding('utf-8');\n let responseBody = '';\n res.on('data', (chunk) => {\n responseBody += chunk;\n });\n res.on('end', () => {\n resolve({\n status: res.statusCode,\n body: responseBody,\n });\n });\n });\n req.on('timeout', () => {\n req.destroy(Error('Socket connection timed out'));\n });\n req.on('error', (e) => {\n reject(e);\n });\n if (method !== 'GET' && body) {\n req.write(body);\n }\n req.end();\n });\n }\n}\nexports.FetchHttpClient = FetchHttpClient;\n/**\n * Wrap the exposed HttpClient in a CoreClient implementation to work with\n * FlagApi and EvaluationApi.\n */\nclass WrapperClient {\n constructor(client) {\n this.client = client;\n }\n request(request) {\n return __awaiter(this, void 0, void 0, function* () {\n return yield this.client.request(request.requestUrl, request.method, request.headers, null, request.timeoutMillis);\n });\n }\n}\nexports.WrapperClient = WrapperClient;\n"],"names":["this","require$$0","require$$1"],"mappings":"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","x_google_ignoreList":[0]}
@@ -6,7 +6,7 @@ function requireConfig() {
6
6
  if (hasRequiredConfig) return config;
7
7
  hasRequiredConfig = 1;
8
8
  Object.defineProperty(config, "__esModule", { value: true });
9
- config.EU_SERVER_URLS = config.CohortSyncConfigDefaults = config.AssignmentConfigDefaults = config.LocalEvaluationDefaults = config.Defaults = config.RemoteEvaluationDefaults = void 0;
9
+ config.EU_SERVER_URLS = config.LocalEvaluationDefaults = config.CohortSyncConfigDefaults = config.ExposureConfigDefaults = config.AssignmentConfigDefaults = config.Defaults = config.RemoteEvaluationDefaults = void 0;
10
10
  const logger_1 = requireLogger();
11
11
  const loglevel_1 = requireLoglevel();
12
12
  config.RemoteEvaluationDefaults = {
@@ -39,6 +39,17 @@ function requireConfig() {
39
39
  fetchRetryTimeoutMillis: 1e4,
40
40
  httpAgent: null
41
41
  };
42
+ config.AssignmentConfigDefaults = {
43
+ cacheCapacity: 65536
44
+ };
45
+ config.ExposureConfigDefaults = {
46
+ cacheCapacity: 65536
47
+ };
48
+ config.CohortSyncConfigDefaults = {
49
+ cohortServerUrl: "https://cohort-v2.lab.amplitude.com",
50
+ maxCohortSize: 2147483647,
51
+ cohortPollingIntervalMillis: 6e4
52
+ };
42
53
  config.LocalEvaluationDefaults = {
43
54
  debug: false,
44
55
  logLevel: loglevel_1.LogLevel.Error,
@@ -52,14 +63,6 @@ function requireConfig() {
52
63
  streamServerUrl: "https://stream.lab.amplitude.com",
53
64
  streamFlagConnTimeoutMillis: 1500
54
65
  };
55
- config.AssignmentConfigDefaults = {
56
- cacheCapacity: 65536
57
- };
58
- config.CohortSyncConfigDefaults = {
59
- cohortServerUrl: "https://cohort-v2.lab.amplitude.com",
60
- maxCohortSize: 2147483647,
61
- cohortPollingIntervalMillis: 6e4
62
- };
63
66
  config.EU_SERVER_URLS = {
64
67
  name: "eu",
65
68
  remote: "https://api.lab.eu.amplitude.com",
@@ -1 +1 @@
1
- {"version":3,"file":"config.js","sources":["../../../../../../../../../node_modules/@amplitude/experiment-node-server/dist/src/types/config.js"],"sourcesContent":["\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.EU_SERVER_URLS = exports.CohortSyncConfigDefaults = exports.AssignmentConfigDefaults = exports.LocalEvaluationDefaults = exports.Defaults = exports.RemoteEvaluationDefaults = void 0;\nconst logger_1 = require(\"../util/logger\");\nconst loglevel_1 = require(\"./loglevel\");\n/**\n Defaults for Experiment Config options\n\n | **Option** | **Default** |\n |----------------|---------------------------------|\n | **debug** | false |\n | **serverUrl** | `\"https://api.lab.amplitude.com\"` |\n | **fetchTimeoutMillis** | `10000` |\n | **fetchRetries** | `8` |\n | **fetchRetryBackoffMinMillis** | `500` |\n | **fetchRetryBackoffMaxMillis** | `10000` |\n | **fetchRetryBackoffScalar** | `1.5` |\n | **fetchRetryTimeoutMillis** | `10000` |\n | **httpAgent** | null |\n\n *\n * @category Configuration\n */\nexports.RemoteEvaluationDefaults = {\n debug: false,\n logLevel: loglevel_1.LogLevel.Error,\n loggerProvider: new logger_1.ConsoleLogger(),\n instanceName: undefined,\n serverZone: 'us',\n serverUrl: 'https://api.lab.amplitude.com',\n fetchTimeoutMillis: 10000,\n fetchRetries: 8,\n fetchRetryBackoffMinMillis: 500,\n fetchRetryBackoffMaxMillis: 10000,\n fetchRetryBackoffScalar: 1.5,\n fetchRetryTimeoutMillis: 10000,\n httpAgent: null,\n};\n/**\n * @deprecated use {@link RemoteEvaluationDefaults}\n */\nexports.Defaults = {\n debug: false,\n logLevel: loglevel_1.LogLevel.Error,\n loggerProvider: new logger_1.ConsoleLogger(),\n instanceName: undefined,\n serverZone: 'us',\n serverUrl: 'https://api.lab.amplitude.com',\n fetchTimeoutMillis: 10000,\n fetchRetries: 8,\n fetchRetryBackoffMinMillis: 500,\n fetchRetryBackoffMaxMillis: 10000,\n fetchRetryBackoffScalar: 1.5,\n fetchRetryTimeoutMillis: 10000,\n httpAgent: null,\n};\n/**\n Defaults for {@link LocalEvaluationConfig} options.\n\n | **Option** | **Default** |\n |----------------|---------------------------------|\n | **debug** | false |\n | **serverUrl** | `\"https://api.lab.amplitude.com\"` |\n | **flagConfigPollingIntervalMillis** | `30000` |\n | **httpAgent** | null |\n\n * @category Configuration\n */\nexports.LocalEvaluationDefaults = {\n debug: false,\n logLevel: loglevel_1.LogLevel.Error,\n loggerProvider: new logger_1.ConsoleLogger(),\n serverZone: 'us',\n serverUrl: 'https://api.lab.amplitude.com',\n bootstrap: {},\n flagConfigPollingIntervalMillis: 30000,\n httpAgent: null,\n streamUpdates: false,\n streamServerUrl: 'https://stream.lab.amplitude.com',\n streamFlagConnTimeoutMillis: 1500,\n};\nexports.AssignmentConfigDefaults = {\n cacheCapacity: 65536,\n};\nexports.CohortSyncConfigDefaults = {\n cohortServerUrl: 'https://cohort-v2.lab.amplitude.com',\n maxCohortSize: 2147483647,\n cohortPollingIntervalMillis: 60000,\n};\nexports.EU_SERVER_URLS = {\n name: 'eu',\n remote: 'https://api.lab.eu.amplitude.com',\n flags: 'https://flag.lab.eu.amplitude.com',\n stream: 'https://stream.lab.eu.amplitude.com',\n cohort: 'https://cohort-v2.lab.eu.amplitude.com',\n};\n"],"names":["require$$0","require$$1"],"mappings":";;;;;;;AACA,SAAO,eAAe,QAAS,cAAc,EAAE,OAAO,MAAM;AAC5D,SAAA,iBAAyB,OAAA,2BAAmC,OAAA,2BAAmC,OAAA,0BAAkC,OAAA,WAAmB,OAAA,2BAAmC;AACvL,QAAM,WAAWA,cAAA;AACjB,QAAM,aAAaC,gBAAA;AAmBnB,SAAA,2BAAmC;AAAA,IAC/B,OAAO;AAAA,IACP,UAAU,WAAW,SAAS;AAAA,IAC9B,gBAAgB,IAAI,SAAS,cAAa;AAAA,IAC1C,cAAc;AAAA,IACd,YAAY;AAAA,IACZ,WAAW;AAAA,IACX,oBAAoB;AAAA,IACpB,cAAc;AAAA,IACd,4BAA4B;AAAA,IAC5B,4BAA4B;AAAA,IAC5B,yBAAyB;AAAA,IACzB,yBAAyB;AAAA,IACzB,WAAW;AAAA;AAKf,SAAA,WAAmB;AAAA,IACf,OAAO;AAAA,IACP,UAAU,WAAW,SAAS;AAAA,IAC9B,gBAAgB,IAAI,SAAS,cAAa;AAAA,IAC1C,cAAc;AAAA,IACd,YAAY;AAAA,IACZ,WAAW;AAAA,IACX,oBAAoB;AAAA,IACpB,cAAc;AAAA,IACd,4BAA4B;AAAA,IAC5B,4BAA4B;AAAA,IAC5B,yBAAyB;AAAA,IACzB,yBAAyB;AAAA,IACzB,WAAW;AAAA;AAcf,SAAA,0BAAkC;AAAA,IAC9B,OAAO;AAAA,IACP,UAAU,WAAW,SAAS;AAAA,IAC9B,gBAAgB,IAAI,SAAS,cAAa;AAAA,IAC1C,YAAY;AAAA,IACZ,WAAW;AAAA,IACX,WAAW,CAAA;AAAA,IACX,iCAAiC;AAAA,IACjC,WAAW;AAAA,IACX,eAAe;AAAA,IACf,iBAAiB;AAAA,IACjB,6BAA6B;AAAA;AAEjC,SAAA,2BAAmC;AAAA,IAC/B,eAAe;AAAA;AAEnB,SAAA,2BAAmC;AAAA,IAC/B,iBAAiB;AAAA,IACjB,eAAe;AAAA,IACf,6BAA6B;AAAA;AAEjC,SAAA,iBAAyB;AAAA,IACrB,MAAM;AAAA,IACN,QAAQ;AAAA,IACR,OAAO;AAAA,IACP,QAAQ;AAAA,IACR,QAAQ;AAAA;;;","x_google_ignoreList":[0]}
1
+ {"version":3,"file":"config.js","sources":["../../../../../../../../../node_modules/@amplitude/experiment-node-server/dist/src/types/config.js"],"sourcesContent":["\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.EU_SERVER_URLS = exports.LocalEvaluationDefaults = exports.CohortSyncConfigDefaults = exports.ExposureConfigDefaults = exports.AssignmentConfigDefaults = exports.Defaults = exports.RemoteEvaluationDefaults = void 0;\nconst logger_1 = require(\"../util/logger\");\nconst loglevel_1 = require(\"./loglevel\");\n/**\n Defaults for Experiment Config options\n\n | **Option** | **Default** |\n |----------------|---------------------------------|\n | **debug** | false |\n | **serverUrl** | `\"https://api.lab.amplitude.com\"` |\n | **fetchTimeoutMillis** | `10000` |\n | **fetchRetries** | `8` |\n | **fetchRetryBackoffMinMillis** | `500` |\n | **fetchRetryBackoffMaxMillis** | `10000` |\n | **fetchRetryBackoffScalar** | `1.5` |\n | **fetchRetryTimeoutMillis** | `10000` |\n | **httpAgent** | null |\n\n *\n * @category Configuration\n */\nexports.RemoteEvaluationDefaults = {\n debug: false,\n logLevel: loglevel_1.LogLevel.Error,\n loggerProvider: new logger_1.ConsoleLogger(),\n instanceName: undefined,\n serverZone: 'us',\n serverUrl: 'https://api.lab.amplitude.com',\n fetchTimeoutMillis: 10000,\n fetchRetries: 8,\n fetchRetryBackoffMinMillis: 500,\n fetchRetryBackoffMaxMillis: 10000,\n fetchRetryBackoffScalar: 1.5,\n fetchRetryTimeoutMillis: 10000,\n httpAgent: null,\n};\n/**\n * @deprecated use {@link RemoteEvaluationDefaults}\n */\nexports.Defaults = {\n debug: false,\n logLevel: loglevel_1.LogLevel.Error,\n loggerProvider: new logger_1.ConsoleLogger(),\n instanceName: undefined,\n serverZone: 'us',\n serverUrl: 'https://api.lab.amplitude.com',\n fetchTimeoutMillis: 10000,\n fetchRetries: 8,\n fetchRetryBackoffMinMillis: 500,\n fetchRetryBackoffMaxMillis: 10000,\n fetchRetryBackoffScalar: 1.5,\n fetchRetryTimeoutMillis: 10000,\n httpAgent: null,\n};\n/**\n * @deprecated use {@link ExposureConfigDefaults} with exposure service instead.\n */\nexports.AssignmentConfigDefaults = {\n cacheCapacity: 65536,\n};\nexports.ExposureConfigDefaults = {\n cacheCapacity: 65536,\n};\nexports.CohortSyncConfigDefaults = {\n cohortServerUrl: 'https://cohort-v2.lab.amplitude.com',\n maxCohortSize: 2147483647,\n cohortPollingIntervalMillis: 60000,\n};\n/**\n Defaults for {@link LocalEvaluationConfig} options.\n\n | **Option** | **Default** |\n |----------------|---------------------------------|\n | **debug** | false |\n | **serverUrl** | `\"https://api.lab.amplitude.com\"` |\n | **flagConfigPollingIntervalMillis** | `30000` |\n | **httpAgent** | null |\n\n * @category Configuration\n */\nexports.LocalEvaluationDefaults = {\n debug: false,\n logLevel: loglevel_1.LogLevel.Error,\n loggerProvider: new logger_1.ConsoleLogger(),\n serverZone: 'us',\n serverUrl: 'https://api.lab.amplitude.com',\n bootstrap: {},\n flagConfigPollingIntervalMillis: 30000,\n httpAgent: null,\n streamUpdates: false,\n streamServerUrl: 'https://stream.lab.amplitude.com',\n streamFlagConnTimeoutMillis: 1500,\n};\nexports.EU_SERVER_URLS = {\n name: 'eu',\n remote: 'https://api.lab.eu.amplitude.com',\n flags: 'https://flag.lab.eu.amplitude.com',\n stream: 'https://stream.lab.eu.amplitude.com',\n cohort: 'https://cohort-v2.lab.eu.amplitude.com',\n};\n"],"names":["require$$0","require$$1"],"mappings":";;;;;;;AACA,SAAO,eAAe,QAAS,cAAc,EAAE,OAAO,MAAM;AAC5D,SAAA,iBAAyB,OAAA,0BAAkC,OAAA,2BAAmC,OAAA,yBAAiC,OAAA,2BAAmC,OAAA,WAAmB,OAAA,2BAAmC;AACxN,QAAM,WAAWA,cAAA;AACjB,QAAM,aAAaC,gBAAA;AAmBnB,SAAA,2BAAmC;AAAA,IAC/B,OAAO;AAAA,IACP,UAAU,WAAW,SAAS;AAAA,IAC9B,gBAAgB,IAAI,SAAS,cAAa;AAAA,IAC1C,cAAc;AAAA,IACd,YAAY;AAAA,IACZ,WAAW;AAAA,IACX,oBAAoB;AAAA,IACpB,cAAc;AAAA,IACd,4BAA4B;AAAA,IAC5B,4BAA4B;AAAA,IAC5B,yBAAyB;AAAA,IACzB,yBAAyB;AAAA,IACzB,WAAW;AAAA;AAKf,SAAA,WAAmB;AAAA,IACf,OAAO;AAAA,IACP,UAAU,WAAW,SAAS;AAAA,IAC9B,gBAAgB,IAAI,SAAS,cAAa;AAAA,IAC1C,cAAc;AAAA,IACd,YAAY;AAAA,IACZ,WAAW;AAAA,IACX,oBAAoB;AAAA,IACpB,cAAc;AAAA,IACd,4BAA4B;AAAA,IAC5B,4BAA4B;AAAA,IAC5B,yBAAyB;AAAA,IACzB,yBAAyB;AAAA,IACzB,WAAW;AAAA;AAKf,SAAA,2BAAmC;AAAA,IAC/B,eAAe;AAAA;AAEnB,SAAA,yBAAiC;AAAA,IAC7B,eAAe;AAAA;AAEnB,SAAA,2BAAmC;AAAA,IAC/B,iBAAiB;AAAA,IACjB,eAAe;AAAA,IACf,6BAA6B;AAAA;AAcjC,SAAA,0BAAkC;AAAA,IAC9B,OAAO;AAAA,IACP,UAAU,WAAW,SAAS;AAAA,IAC9B,gBAAgB,IAAI,SAAS,cAAa;AAAA,IAC1C,YAAY;AAAA,IACZ,WAAW;AAAA,IACX,WAAW,CAAA;AAAA,IACX,iCAAiC;AAAA,IACjC,WAAW;AAAA,IACX,eAAe;AAAA,IACf,iBAAiB;AAAA,IACjB,6BAA6B;AAAA;AAEjC,SAAA,iBAAyB;AAAA,IACrB,MAAM;AAAA,IACN,QAAQ;AAAA,IACR,OAAO;AAAA,IACP,QAAQ;AAAA,IACR,QAAQ;AAAA;;;","x_google_ignoreList":[0]}