autotel-subscribers 15.0.0 → 16.0.1
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/amplitude.cjs +64 -64
- package/dist/amplitude.cjs.map +1 -1
- package/dist/amplitude.js +64 -64
- package/dist/amplitude.js.map +1 -1
- package/dist/factories.cjs +987 -347
- package/dist/factories.cjs.map +1 -1
- package/dist/factories.js +987 -347
- package/dist/factories.js.map +1 -1
- package/dist/index.cjs +987 -347
- package/dist/index.cjs.map +1 -1
- package/dist/index.js +987 -347
- package/dist/index.js.map +1 -1
- package/dist/mixpanel.cjs +686 -130
- package/dist/mixpanel.cjs.map +1 -1
- package/dist/mixpanel.js +686 -130
- package/dist/mixpanel.js.map +1 -1
- package/dist/posthog.cjs +234 -150
- package/dist/posthog.cjs.map +1 -1
- package/dist/posthog.js +234 -150
- package/dist/posthog.js.map +1 -1
- package/package.json +13 -13
package/dist/mixpanel.cjs.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../../node_modules/.pnpm/ms@2.1.3/node_modules/ms/index.js","../../../node_modules/.pnpm/debug@4.4.3_supports-color@10.2.2/node_modules/debug/src/common.js","../../../node_modules/.pnpm/debug@4.4.3_supports-color@10.2.2/node_modules/debug/src/browser.js","../../../node_modules/.pnpm/supports-color@10.2.2/node_modules/supports-color/index.js","../../../node_modules/.pnpm/debug@4.4.3_supports-color@10.2.2/node_modules/debug/src/node.js","../../../node_modules/.pnpm/debug@4.4.3_supports-color@10.2.2/node_modules/debug/src/index.js","../../../node_modules/.pnpm/agent-base@7.1.4/node_modules/agent-base/src/helpers.ts","../../../node_modules/.pnpm/agent-base@7.1.4/node_modules/agent-base/src/index.ts","../../../node_modules/.pnpm/https-proxy-agent@7.0.6_supports-color@10.2.2/node_modules/https-proxy-agent/src/parse-proxy-response.ts","../../../node_modules/.pnpm/https-proxy-agent@7.0.6_supports-color@10.2.2/node_modules/https-proxy-agent/src/index.ts","../../../node_modules/.pnpm/mixpanel@0.19.1/node_modules/mixpanel/package.json","../../../node_modules/.pnpm/mixpanel@0.19.1/node_modules/mixpanel/lib/utils.js","../../../node_modules/.pnpm/mixpanel@0.19.1/node_modules/mixpanel/lib/profile_helpers.js","../../../node_modules/.pnpm/mixpanel@0.19.1/node_modules/mixpanel/lib/groups.js","../../../node_modules/.pnpm/mixpanel@0.19.1/node_modules/mixpanel/lib/people.js","../../../node_modules/.pnpm/mixpanel@0.19.1/node_modules/mixpanel/lib/flags/utils.js","../../../node_modules/.pnpm/mixpanel@0.19.1/node_modules/mixpanel/lib/flags/flags.js","../../../node_modules/.pnpm/mixpanel@0.19.1/node_modules/mixpanel/lib/flags/local_flags.js","../../../node_modules/.pnpm/mixpanel@0.19.1/node_modules/mixpanel/lib/flags/remote_flags.js","../../../node_modules/.pnpm/mixpanel@0.19.1/node_modules/mixpanel/lib/flags/index.js","../../../node_modules/.pnpm/mixpanel@0.19.1/node_modules/mixpanel/lib/mixpanel-node.js","../src/mixpanel.ts"],"names":["exports","env","process","os","tty","supportsColor","useColors","req","require_utils","require_flags","Buffer","chunk","config"],"mappings":"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","file":"mixpanel.cjs","sourcesContent":["/**\n * Helpers.\n */\n\nvar s = 1000;\nvar m = s * 60;\nvar h = m * 60;\nvar d = h * 24;\nvar w = d * 7;\nvar y = d * 365.25;\n\n/**\n * Parse or format the given `val`.\n *\n * Options:\n *\n * - `long` verbose formatting [false]\n *\n * @param {String|Number} val\n * @param {Object} [options]\n * @throws {Error} throw an error if val is not a non-empty string or a number\n * @return {String|Number}\n * @api public\n */\n\nmodule.exports = function (val, options) {\n options = options || {};\n var type = typeof val;\n if (type === 'string' && val.length > 0) {\n return parse(val);\n } else if (type === 'number' && isFinite(val)) {\n return options.long ? fmtLong(val) : fmtShort(val);\n }\n throw new Error(\n 'val is not a non-empty string or a valid number. val=' +\n JSON.stringify(val)\n );\n};\n\n/**\n * Parse the given `str` and return milliseconds.\n *\n * @param {String} str\n * @return {Number}\n * @api private\n */\n\nfunction parse(str) {\n str = String(str);\n if (str.length > 100) {\n return;\n }\n var match = /^(-?(?:\\d+)?\\.?\\d+) *(milliseconds?|msecs?|ms|seconds?|secs?|s|minutes?|mins?|m|hours?|hrs?|h|days?|d|weeks?|w|years?|yrs?|y)?$/i.exec(\n str\n );\n if (!match) {\n return;\n }\n var n = parseFloat(match[1]);\n var type = (match[2] || 'ms').toLowerCase();\n switch (type) {\n case 'years':\n case 'year':\n case 'yrs':\n case 'yr':\n case 'y':\n return n * y;\n case 'weeks':\n case 'week':\n case 'w':\n return n * w;\n case 'days':\n case 'day':\n case 'd':\n return n * d;\n case 'hours':\n case 'hour':\n case 'hrs':\n case 'hr':\n case 'h':\n return n * h;\n case 'minutes':\n case 'minute':\n case 'mins':\n case 'min':\n case 'm':\n return n * m;\n case 'seconds':\n case 'second':\n case 'secs':\n case 'sec':\n case 's':\n return n * s;\n case 'milliseconds':\n case 'millisecond':\n case 'msecs':\n case 'msec':\n case 'ms':\n return n;\n default:\n return undefined;\n }\n}\n\n/**\n * Short format for `ms`.\n *\n * @param {Number} ms\n * @return {String}\n * @api private\n */\n\nfunction fmtShort(ms) {\n var msAbs = Math.abs(ms);\n if (msAbs >= d) {\n return Math.round(ms / d) + 'd';\n }\n if (msAbs >= h) {\n return Math.round(ms / h) + 'h';\n }\n if (msAbs >= m) {\n return Math.round(ms / m) + 'm';\n }\n if (msAbs >= s) {\n return Math.round(ms / s) + 's';\n }\n return ms + 'ms';\n}\n\n/**\n * Long format for `ms`.\n *\n * @param {Number} ms\n * @return {String}\n * @api private\n */\n\nfunction fmtLong(ms) {\n var msAbs = Math.abs(ms);\n if (msAbs >= d) {\n return plural(ms, msAbs, d, 'day');\n }\n if (msAbs >= h) {\n return plural(ms, msAbs, h, 'hour');\n }\n if (msAbs >= m) {\n return plural(ms, msAbs, m, 'minute');\n }\n if (msAbs >= s) {\n return plural(ms, msAbs, s, 'second');\n }\n return ms + ' ms';\n}\n\n/**\n * Pluralization helper.\n */\n\nfunction plural(ms, msAbs, n, name) {\n var isPlural = msAbs >= n * 1.5;\n return Math.round(ms / n) + ' ' + name + (isPlural ? 's' : '');\n}\n","\n/**\n * This is the common logic for both the Node.js and web browser\n * implementations of `debug()`.\n */\n\nfunction setup(env) {\n\tcreateDebug.debug = createDebug;\n\tcreateDebug.default = createDebug;\n\tcreateDebug.coerce = coerce;\n\tcreateDebug.disable = disable;\n\tcreateDebug.enable = enable;\n\tcreateDebug.enabled = enabled;\n\tcreateDebug.humanize = require('ms');\n\tcreateDebug.destroy = destroy;\n\n\tObject.keys(env).forEach(key => {\n\t\tcreateDebug[key] = env[key];\n\t});\n\n\t/**\n\t* The currently active debug mode names, and names to skip.\n\t*/\n\n\tcreateDebug.names = [];\n\tcreateDebug.skips = [];\n\n\t/**\n\t* Map of special \"%n\" handling functions, for the debug \"format\" argument.\n\t*\n\t* Valid key names are a single, lower or upper-case letter, i.e. \"n\" and \"N\".\n\t*/\n\tcreateDebug.formatters = {};\n\n\t/**\n\t* Selects a color for a debug namespace\n\t* @param {String} namespace The namespace string for the debug instance to be colored\n\t* @return {Number|String} An ANSI color code for the given namespace\n\t* @api private\n\t*/\n\tfunction selectColor(namespace) {\n\t\tlet hash = 0;\n\n\t\tfor (let i = 0; i < namespace.length; i++) {\n\t\t\thash = ((hash << 5) - hash) + namespace.charCodeAt(i);\n\t\t\thash |= 0; // Convert to 32bit integer\n\t\t}\n\n\t\treturn createDebug.colors[Math.abs(hash) % createDebug.colors.length];\n\t}\n\tcreateDebug.selectColor = selectColor;\n\n\t/**\n\t* Create a debugger with the given `namespace`.\n\t*\n\t* @param {String} namespace\n\t* @return {Function}\n\t* @api public\n\t*/\n\tfunction createDebug(namespace) {\n\t\tlet prevTime;\n\t\tlet enableOverride = null;\n\t\tlet namespacesCache;\n\t\tlet enabledCache;\n\n\t\tfunction debug(...args) {\n\t\t\t// Disabled?\n\t\t\tif (!debug.enabled) {\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tconst self = debug;\n\n\t\t\t// Set `diff` timestamp\n\t\t\tconst curr = Number(new Date());\n\t\t\tconst ms = curr - (prevTime || curr);\n\t\t\tself.diff = ms;\n\t\t\tself.prev = prevTime;\n\t\t\tself.curr = curr;\n\t\t\tprevTime = curr;\n\n\t\t\targs[0] = createDebug.coerce(args[0]);\n\n\t\t\tif (typeof args[0] !== 'string') {\n\t\t\t\t// Anything else let's inspect with %O\n\t\t\t\targs.unshift('%O');\n\t\t\t}\n\n\t\t\t// Apply any `formatters` transformations\n\t\t\tlet index = 0;\n\t\t\targs[0] = args[0].replace(/%([a-zA-Z%])/g, (match, format) => {\n\t\t\t\t// If we encounter an escaped % then don't increase the array index\n\t\t\t\tif (match === '%%') {\n\t\t\t\t\treturn '%';\n\t\t\t\t}\n\t\t\t\tindex++;\n\t\t\t\tconst formatter = createDebug.formatters[format];\n\t\t\t\tif (typeof formatter === 'function') {\n\t\t\t\t\tconst val = args[index];\n\t\t\t\t\tmatch = formatter.call(self, val);\n\n\t\t\t\t\t// Now we need to remove `args[index]` since it's inlined in the `format`\n\t\t\t\t\targs.splice(index, 1);\n\t\t\t\t\tindex--;\n\t\t\t\t}\n\t\t\t\treturn match;\n\t\t\t});\n\n\t\t\t// Apply env-specific formatting (colors, etc.)\n\t\t\tcreateDebug.formatArgs.call(self, args);\n\n\t\t\tconst logFn = self.log || createDebug.log;\n\t\t\tlogFn.apply(self, args);\n\t\t}\n\n\t\tdebug.namespace = namespace;\n\t\tdebug.useColors = createDebug.useColors();\n\t\tdebug.color = createDebug.selectColor(namespace);\n\t\tdebug.extend = extend;\n\t\tdebug.destroy = createDebug.destroy; // XXX Temporary. Will be removed in the next major release.\n\n\t\tObject.defineProperty(debug, 'enabled', {\n\t\t\tenumerable: true,\n\t\t\tconfigurable: false,\n\t\t\tget: () => {\n\t\t\t\tif (enableOverride !== null) {\n\t\t\t\t\treturn enableOverride;\n\t\t\t\t}\n\t\t\t\tif (namespacesCache !== createDebug.namespaces) {\n\t\t\t\t\tnamespacesCache = createDebug.namespaces;\n\t\t\t\t\tenabledCache = createDebug.enabled(namespace);\n\t\t\t\t}\n\n\t\t\t\treturn enabledCache;\n\t\t\t},\n\t\t\tset: v => {\n\t\t\t\tenableOverride = v;\n\t\t\t}\n\t\t});\n\n\t\t// Env-specific initialization logic for debug instances\n\t\tif (typeof createDebug.init === 'function') {\n\t\t\tcreateDebug.init(debug);\n\t\t}\n\n\t\treturn debug;\n\t}\n\n\tfunction extend(namespace, delimiter) {\n\t\tconst newDebug = createDebug(this.namespace + (typeof delimiter === 'undefined' ? ':' : delimiter) + namespace);\n\t\tnewDebug.log = this.log;\n\t\treturn newDebug;\n\t}\n\n\t/**\n\t* Enables a debug mode by namespaces. This can include modes\n\t* separated by a colon and wildcards.\n\t*\n\t* @param {String} namespaces\n\t* @api public\n\t*/\n\tfunction enable(namespaces) {\n\t\tcreateDebug.save(namespaces);\n\t\tcreateDebug.namespaces = namespaces;\n\n\t\tcreateDebug.names = [];\n\t\tcreateDebug.skips = [];\n\n\t\tconst split = (typeof namespaces === 'string' ? namespaces : '')\n\t\t\t.trim()\n\t\t\t.replace(/\\s+/g, ',')\n\t\t\t.split(',')\n\t\t\t.filter(Boolean);\n\n\t\tfor (const ns of split) {\n\t\t\tif (ns[0] === '-') {\n\t\t\t\tcreateDebug.skips.push(ns.slice(1));\n\t\t\t} else {\n\t\t\t\tcreateDebug.names.push(ns);\n\t\t\t}\n\t\t}\n\t}\n\n\t/**\n\t * Checks if the given string matches a namespace template, honoring\n\t * asterisks as wildcards.\n\t *\n\t * @param {String} search\n\t * @param {String} template\n\t * @return {Boolean}\n\t */\n\tfunction matchesTemplate(search, template) {\n\t\tlet searchIndex = 0;\n\t\tlet templateIndex = 0;\n\t\tlet starIndex = -1;\n\t\tlet matchIndex = 0;\n\n\t\twhile (searchIndex < search.length) {\n\t\t\tif (templateIndex < template.length && (template[templateIndex] === search[searchIndex] || template[templateIndex] === '*')) {\n\t\t\t\t// Match character or proceed with wildcard\n\t\t\t\tif (template[templateIndex] === '*') {\n\t\t\t\t\tstarIndex = templateIndex;\n\t\t\t\t\tmatchIndex = searchIndex;\n\t\t\t\t\ttemplateIndex++; // Skip the '*'\n\t\t\t\t} else {\n\t\t\t\t\tsearchIndex++;\n\t\t\t\t\ttemplateIndex++;\n\t\t\t\t}\n\t\t\t} else if (starIndex !== -1) { // eslint-disable-line no-negated-condition\n\t\t\t\t// Backtrack to the last '*' and try to match more characters\n\t\t\t\ttemplateIndex = starIndex + 1;\n\t\t\t\tmatchIndex++;\n\t\t\t\tsearchIndex = matchIndex;\n\t\t\t} else {\n\t\t\t\treturn false; // No match\n\t\t\t}\n\t\t}\n\n\t\t// Handle trailing '*' in template\n\t\twhile (templateIndex < template.length && template[templateIndex] === '*') {\n\t\t\ttemplateIndex++;\n\t\t}\n\n\t\treturn templateIndex === template.length;\n\t}\n\n\t/**\n\t* Disable debug output.\n\t*\n\t* @return {String} namespaces\n\t* @api public\n\t*/\n\tfunction disable() {\n\t\tconst namespaces = [\n\t\t\t...createDebug.names,\n\t\t\t...createDebug.skips.map(namespace => '-' + namespace)\n\t\t].join(',');\n\t\tcreateDebug.enable('');\n\t\treturn namespaces;\n\t}\n\n\t/**\n\t* Returns true if the given mode name is enabled, false otherwise.\n\t*\n\t* @param {String} name\n\t* @return {Boolean}\n\t* @api public\n\t*/\n\tfunction enabled(name) {\n\t\tfor (const skip of createDebug.skips) {\n\t\t\tif (matchesTemplate(name, skip)) {\n\t\t\t\treturn false;\n\t\t\t}\n\t\t}\n\n\t\tfor (const ns of createDebug.names) {\n\t\t\tif (matchesTemplate(name, ns)) {\n\t\t\t\treturn true;\n\t\t\t}\n\t\t}\n\n\t\treturn false;\n\t}\n\n\t/**\n\t* Coerce `val`.\n\t*\n\t* @param {Mixed} val\n\t* @return {Mixed}\n\t* @api private\n\t*/\n\tfunction coerce(val) {\n\t\tif (val instanceof Error) {\n\t\t\treturn val.stack || val.message;\n\t\t}\n\t\treturn val;\n\t}\n\n\t/**\n\t* XXX DO NOT USE. This is a temporary stub function.\n\t* XXX It WILL be removed in the next major release.\n\t*/\n\tfunction destroy() {\n\t\tconsole.warn('Instance method `debug.destroy()` is deprecated and no longer does anything. It will be removed in the next major version of `debug`.');\n\t}\n\n\tcreateDebug.enable(createDebug.load());\n\n\treturn createDebug;\n}\n\nmodule.exports = setup;\n","/* eslint-env browser */\n\n/**\n * This is the web browser implementation of `debug()`.\n */\n\nexports.formatArgs = formatArgs;\nexports.save = save;\nexports.load = load;\nexports.useColors = useColors;\nexports.storage = localstorage();\nexports.destroy = (() => {\n\tlet warned = false;\n\n\treturn () => {\n\t\tif (!warned) {\n\t\t\twarned = true;\n\t\t\tconsole.warn('Instance method `debug.destroy()` is deprecated and no longer does anything. It will be removed in the next major version of `debug`.');\n\t\t}\n\t};\n})();\n\n/**\n * Colors.\n */\n\nexports.colors = [\n\t'#0000CC',\n\t'#0000FF',\n\t'#0033CC',\n\t'#0033FF',\n\t'#0066CC',\n\t'#0066FF',\n\t'#0099CC',\n\t'#0099FF',\n\t'#00CC00',\n\t'#00CC33',\n\t'#00CC66',\n\t'#00CC99',\n\t'#00CCCC',\n\t'#00CCFF',\n\t'#3300CC',\n\t'#3300FF',\n\t'#3333CC',\n\t'#3333FF',\n\t'#3366CC',\n\t'#3366FF',\n\t'#3399CC',\n\t'#3399FF',\n\t'#33CC00',\n\t'#33CC33',\n\t'#33CC66',\n\t'#33CC99',\n\t'#33CCCC',\n\t'#33CCFF',\n\t'#6600CC',\n\t'#6600FF',\n\t'#6633CC',\n\t'#6633FF',\n\t'#66CC00',\n\t'#66CC33',\n\t'#9900CC',\n\t'#9900FF',\n\t'#9933CC',\n\t'#9933FF',\n\t'#99CC00',\n\t'#99CC33',\n\t'#CC0000',\n\t'#CC0033',\n\t'#CC0066',\n\t'#CC0099',\n\t'#CC00CC',\n\t'#CC00FF',\n\t'#CC3300',\n\t'#CC3333',\n\t'#CC3366',\n\t'#CC3399',\n\t'#CC33CC',\n\t'#CC33FF',\n\t'#CC6600',\n\t'#CC6633',\n\t'#CC9900',\n\t'#CC9933',\n\t'#CCCC00',\n\t'#CCCC33',\n\t'#FF0000',\n\t'#FF0033',\n\t'#FF0066',\n\t'#FF0099',\n\t'#FF00CC',\n\t'#FF00FF',\n\t'#FF3300',\n\t'#FF3333',\n\t'#FF3366',\n\t'#FF3399',\n\t'#FF33CC',\n\t'#FF33FF',\n\t'#FF6600',\n\t'#FF6633',\n\t'#FF9900',\n\t'#FF9933',\n\t'#FFCC00',\n\t'#FFCC33'\n];\n\n/**\n * Currently only WebKit-based Web Inspectors, Firefox >= v31,\n * and the Firebug extension (any Firefox version) are known\n * to support \"%c\" CSS customizations.\n *\n * TODO: add a `localStorage` variable to explicitly enable/disable colors\n */\n\n// eslint-disable-next-line complexity\nfunction useColors() {\n\t// NB: In an Electron preload script, document will be defined but not fully\n\t// initialized. Since we know we're in Chrome, we'll just detect this case\n\t// explicitly\n\tif (typeof window !== 'undefined' && window.process && (window.process.type === 'renderer' || window.process.__nwjs)) {\n\t\treturn true;\n\t}\n\n\t// Internet Explorer and Edge do not support colors.\n\tif (typeof navigator !== 'undefined' && navigator.userAgent && navigator.userAgent.toLowerCase().match(/(edge|trident)\\/(\\d+)/)) {\n\t\treturn false;\n\t}\n\n\tlet m;\n\n\t// Is webkit? http://stackoverflow.com/a/16459606/376773\n\t// document is undefined in react-native: https://github.com/facebook/react-native/pull/1632\n\t// eslint-disable-next-line no-return-assign\n\treturn (typeof document !== 'undefined' && document.documentElement && document.documentElement.style && document.documentElement.style.WebkitAppearance) ||\n\t\t// Is firebug? http://stackoverflow.com/a/398120/376773\n\t\t(typeof window !== 'undefined' && window.console && (window.console.firebug || (window.console.exception && window.console.table))) ||\n\t\t// Is firefox >= v31?\n\t\t// https://developer.mozilla.org/en-US/docs/Tools/Web_Console#Styling_messages\n\t\t(typeof navigator !== 'undefined' && navigator.userAgent && (m = navigator.userAgent.toLowerCase().match(/firefox\\/(\\d+)/)) && parseInt(m[1], 10) >= 31) ||\n\t\t// Double check webkit in userAgent just in case we are in a worker\n\t\t(typeof navigator !== 'undefined' && navigator.userAgent && navigator.userAgent.toLowerCase().match(/applewebkit\\/(\\d+)/));\n}\n\n/**\n * Colorize log arguments if enabled.\n *\n * @api public\n */\n\nfunction formatArgs(args) {\n\targs[0] = (this.useColors ? '%c' : '') +\n\t\tthis.namespace +\n\t\t(this.useColors ? ' %c' : ' ') +\n\t\targs[0] +\n\t\t(this.useColors ? '%c ' : ' ') +\n\t\t'+' + module.exports.humanize(this.diff);\n\n\tif (!this.useColors) {\n\t\treturn;\n\t}\n\n\tconst c = 'color: ' + this.color;\n\targs.splice(1, 0, c, 'color: inherit');\n\n\t// The final \"%c\" is somewhat tricky, because there could be other\n\t// arguments passed either before or after the %c, so we need to\n\t// figure out the correct index to insert the CSS into\n\tlet index = 0;\n\tlet lastC = 0;\n\targs[0].replace(/%[a-zA-Z%]/g, match => {\n\t\tif (match === '%%') {\n\t\t\treturn;\n\t\t}\n\t\tindex++;\n\t\tif (match === '%c') {\n\t\t\t// We only are interested in the *last* %c\n\t\t\t// (the user may have provided their own)\n\t\t\tlastC = index;\n\t\t}\n\t});\n\n\targs.splice(lastC, 0, c);\n}\n\n/**\n * Invokes `console.debug()` when available.\n * No-op when `console.debug` is not a \"function\".\n * If `console.debug` is not available, falls back\n * to `console.log`.\n *\n * @api public\n */\nexports.log = console.debug || console.log || (() => {});\n\n/**\n * Save `namespaces`.\n *\n * @param {String} namespaces\n * @api private\n */\nfunction save(namespaces) {\n\ttry {\n\t\tif (namespaces) {\n\t\t\texports.storage.setItem('debug', namespaces);\n\t\t} else {\n\t\t\texports.storage.removeItem('debug');\n\t\t}\n\t} catch (error) {\n\t\t// Swallow\n\t\t// XXX (@Qix-) should we be logging these?\n\t}\n}\n\n/**\n * Load `namespaces`.\n *\n * @return {String} returns the previously persisted debug modes\n * @api private\n */\nfunction load() {\n\tlet r;\n\ttry {\n\t\tr = exports.storage.getItem('debug') || exports.storage.getItem('DEBUG') ;\n\t} catch (error) {\n\t\t// Swallow\n\t\t// XXX (@Qix-) should we be logging these?\n\t}\n\n\t// If debug isn't set in LS, and we're in Electron, try to load $DEBUG\n\tif (!r && typeof process !== 'undefined' && 'env' in process) {\n\t\tr = process.env.DEBUG;\n\t}\n\n\treturn r;\n}\n\n/**\n * Localstorage attempts to return the localstorage.\n *\n * This is necessary because safari throws\n * when a user disables cookies/localstorage\n * and you attempt to access it.\n *\n * @return {LocalStorage}\n * @api private\n */\n\nfunction localstorage() {\n\ttry {\n\t\t// TVMLKit (Apple TV JS Runtime) does not have a window object, just localStorage in the global context\n\t\t// The Browser also has localStorage in the global context.\n\t\treturn localStorage;\n\t} catch (error) {\n\t\t// Swallow\n\t\t// XXX (@Qix-) should we be logging these?\n\t}\n}\n\nmodule.exports = require('./common')(exports);\n\nconst {formatters} = module.exports;\n\n/**\n * Map %j to `JSON.stringify()`, since no Web Inspectors do that by default.\n */\n\nformatters.j = function (v) {\n\ttry {\n\t\treturn JSON.stringify(v);\n\t} catch (error) {\n\t\treturn '[UnexpectedJSONParseError]: ' + error.message;\n\t}\n};\n","import process from 'node:process';\nimport os from 'node:os';\nimport tty from 'node:tty';\n\n// From: https://github.com/sindresorhus/has-flag/blob/main/index.js\n/// function hasFlag(flag, argv = globalThis.Deno?.args ?? process.argv) {\nfunction hasFlag(flag, argv = globalThis.Deno ? globalThis.Deno.args : process.argv) {\n\tconst prefix = flag.startsWith('-') ? '' : (flag.length === 1 ? '-' : '--');\n\tconst position = argv.indexOf(prefix + flag);\n\tconst terminatorPosition = argv.indexOf('--');\n\treturn position !== -1 && (terminatorPosition === -1 || position < terminatorPosition);\n}\n\nconst {env} = process;\n\nlet flagForceColor;\nif (\n\thasFlag('no-color')\n\t|| hasFlag('no-colors')\n\t|| hasFlag('color=false')\n\t|| hasFlag('color=never')\n) {\n\tflagForceColor = 0;\n} else if (\n\thasFlag('color')\n\t|| hasFlag('colors')\n\t|| hasFlag('color=true')\n\t|| hasFlag('color=always')\n) {\n\tflagForceColor = 1;\n}\n\nfunction envForceColor() {\n\tif (!('FORCE_COLOR' in env)) {\n\t\treturn;\n\t}\n\n\tif (env.FORCE_COLOR === 'true') {\n\t\treturn 1;\n\t}\n\n\tif (env.FORCE_COLOR === 'false') {\n\t\treturn 0;\n\t}\n\n\tif (env.FORCE_COLOR.length === 0) {\n\t\treturn 1;\n\t}\n\n\tconst level = Math.min(Number.parseInt(env.FORCE_COLOR, 10), 3);\n\n\tif (![0, 1, 2, 3].includes(level)) {\n\t\treturn;\n\t}\n\n\treturn level;\n}\n\nfunction translateLevel(level) {\n\tif (level === 0) {\n\t\treturn false;\n\t}\n\n\treturn {\n\t\tlevel,\n\t\thasBasic: true,\n\t\thas256: level >= 2,\n\t\thas16m: level >= 3,\n\t};\n}\n\nfunction _supportsColor(haveStream, {streamIsTTY, sniffFlags = true} = {}) {\n\tconst noFlagForceColor = envForceColor();\n\tif (noFlagForceColor !== undefined) {\n\t\tflagForceColor = noFlagForceColor;\n\t}\n\n\tconst forceColor = sniffFlags ? flagForceColor : noFlagForceColor;\n\n\tif (forceColor === 0) {\n\t\treturn 0;\n\t}\n\n\tif (sniffFlags) {\n\t\tif (hasFlag('color=16m')\n\t\t\t|| hasFlag('color=full')\n\t\t\t|| hasFlag('color=truecolor')) {\n\t\t\treturn 3;\n\t\t}\n\n\t\tif (hasFlag('color=256')) {\n\t\t\treturn 2;\n\t\t}\n\t}\n\n\t// Check for Azure DevOps pipelines.\n\t// Has to be above the `!streamIsTTY` check.\n\tif ('TF_BUILD' in env && 'AGENT_NAME' in env) {\n\t\treturn 1;\n\t}\n\n\tif (haveStream && !streamIsTTY && forceColor === undefined) {\n\t\treturn 0;\n\t}\n\n\tconst min = forceColor || 0;\n\n\tif (env.TERM === 'dumb') {\n\t\treturn min;\n\t}\n\n\tif (process.platform === 'win32') {\n\t\t// Windows 10 build 10586 is the first Windows release that supports 256 colors.\n\t\t// Windows 10 build 14931 is the first release that supports 16m/TrueColor.\n\t\tconst osRelease = os.release().split('.');\n\t\tif (\n\t\t\tNumber(osRelease[0]) >= 10\n\t\t\t&& Number(osRelease[2]) >= 10_586\n\t\t) {\n\t\t\treturn Number(osRelease[2]) >= 14_931 ? 3 : 2;\n\t\t}\n\n\t\treturn 1;\n\t}\n\n\tif ('CI' in env) {\n\t\tif (['GITHUB_ACTIONS', 'GITEA_ACTIONS', 'CIRCLECI'].some(key => key in env)) {\n\t\t\treturn 3;\n\t\t}\n\n\t\tif (['TRAVIS', 'APPVEYOR', 'GITLAB_CI', 'BUILDKITE', 'DRONE'].some(sign => sign in env) || env.CI_NAME === 'codeship') {\n\t\t\treturn 1;\n\t\t}\n\n\t\treturn min;\n\t}\n\n\tif ('TEAMCITY_VERSION' in env) {\n\t\treturn /^(9\\.(0*[1-9]\\d*)\\.|\\d{2,}\\.)/.test(env.TEAMCITY_VERSION) ? 1 : 0;\n\t}\n\n\tif (env.COLORTERM === 'truecolor') {\n\t\treturn 3;\n\t}\n\n\tif (env.TERM === 'xterm-kitty') {\n\t\treturn 3;\n\t}\n\n\tif (env.TERM === 'xterm-ghostty') {\n\t\treturn 3;\n\t}\n\n\tif (env.TERM === 'wezterm') {\n\t\treturn 3;\n\t}\n\n\tif ('TERM_PROGRAM' in env) {\n\t\tconst version = Number.parseInt((env.TERM_PROGRAM_VERSION || '').split('.')[0], 10);\n\n\t\tswitch (env.TERM_PROGRAM) {\n\t\t\tcase 'iTerm.app': {\n\t\t\t\treturn version >= 3 ? 3 : 2;\n\t\t\t}\n\n\t\t\tcase 'Apple_Terminal': {\n\t\t\t\treturn 2;\n\t\t\t}\n\t\t\t// No default\n\t\t}\n\t}\n\n\tif (/-256(color)?$/i.test(env.TERM)) {\n\t\treturn 2;\n\t}\n\n\tif (/^screen|^xterm|^vt100|^vt220|^rxvt|color|ansi|cygwin|linux/i.test(env.TERM)) {\n\t\treturn 1;\n\t}\n\n\tif ('COLORTERM' in env) {\n\t\treturn 1;\n\t}\n\n\treturn min;\n}\n\nexport function createSupportsColor(stream, options = {}) {\n\tconst level = _supportsColor(stream, {\n\t\tstreamIsTTY: stream && stream.isTTY,\n\t\t...options,\n\t});\n\n\treturn translateLevel(level);\n}\n\nconst supportsColor = {\n\tstdout: createSupportsColor({isTTY: tty.isatty(1)}),\n\tstderr: createSupportsColor({isTTY: tty.isatty(2)}),\n};\n\nexport default supportsColor;\n","/**\n * Module dependencies.\n */\n\nconst tty = require('tty');\nconst util = require('util');\n\n/**\n * This is the Node.js implementation of `debug()`.\n */\n\nexports.init = init;\nexports.log = log;\nexports.formatArgs = formatArgs;\nexports.save = save;\nexports.load = load;\nexports.useColors = useColors;\nexports.destroy = util.deprecate(\n\t() => {},\n\t'Instance method `debug.destroy()` is deprecated and no longer does anything. It will be removed in the next major version of `debug`.'\n);\n\n/**\n * Colors.\n */\n\nexports.colors = [6, 2, 3, 4, 5, 1];\n\ntry {\n\t// Optional dependency (as in, doesn't need to be installed, NOT like optionalDependencies in package.json)\n\t// eslint-disable-next-line import/no-extraneous-dependencies\n\tconst supportsColor = require('supports-color');\n\n\tif (supportsColor && (supportsColor.stderr || supportsColor).level >= 2) {\n\t\texports.colors = [\n\t\t\t20,\n\t\t\t21,\n\t\t\t26,\n\t\t\t27,\n\t\t\t32,\n\t\t\t33,\n\t\t\t38,\n\t\t\t39,\n\t\t\t40,\n\t\t\t41,\n\t\t\t42,\n\t\t\t43,\n\t\t\t44,\n\t\t\t45,\n\t\t\t56,\n\t\t\t57,\n\t\t\t62,\n\t\t\t63,\n\t\t\t68,\n\t\t\t69,\n\t\t\t74,\n\t\t\t75,\n\t\t\t76,\n\t\t\t77,\n\t\t\t78,\n\t\t\t79,\n\t\t\t80,\n\t\t\t81,\n\t\t\t92,\n\t\t\t93,\n\t\t\t98,\n\t\t\t99,\n\t\t\t112,\n\t\t\t113,\n\t\t\t128,\n\t\t\t129,\n\t\t\t134,\n\t\t\t135,\n\t\t\t148,\n\t\t\t149,\n\t\t\t160,\n\t\t\t161,\n\t\t\t162,\n\t\t\t163,\n\t\t\t164,\n\t\t\t165,\n\t\t\t166,\n\t\t\t167,\n\t\t\t168,\n\t\t\t169,\n\t\t\t170,\n\t\t\t171,\n\t\t\t172,\n\t\t\t173,\n\t\t\t178,\n\t\t\t179,\n\t\t\t184,\n\t\t\t185,\n\t\t\t196,\n\t\t\t197,\n\t\t\t198,\n\t\t\t199,\n\t\t\t200,\n\t\t\t201,\n\t\t\t202,\n\t\t\t203,\n\t\t\t204,\n\t\t\t205,\n\t\t\t206,\n\t\t\t207,\n\t\t\t208,\n\t\t\t209,\n\t\t\t214,\n\t\t\t215,\n\t\t\t220,\n\t\t\t221\n\t\t];\n\t}\n} catch (error) {\n\t// Swallow - we only care if `supports-color` is available; it doesn't have to be.\n}\n\n/**\n * Build up the default `inspectOpts` object from the environment variables.\n *\n * $ DEBUG_COLORS=no DEBUG_DEPTH=10 DEBUG_SHOW_HIDDEN=enabled node script.js\n */\n\nexports.inspectOpts = Object.keys(process.env).filter(key => {\n\treturn /^debug_/i.test(key);\n}).reduce((obj, key) => {\n\t// Camel-case\n\tconst prop = key\n\t\t.substring(6)\n\t\t.toLowerCase()\n\t\t.replace(/_([a-z])/g, (_, k) => {\n\t\t\treturn k.toUpperCase();\n\t\t});\n\n\t// Coerce string value into JS value\n\tlet val = process.env[key];\n\tif (/^(yes|on|true|enabled)$/i.test(val)) {\n\t\tval = true;\n\t} else if (/^(no|off|false|disabled)$/i.test(val)) {\n\t\tval = false;\n\t} else if (val === 'null') {\n\t\tval = null;\n\t} else {\n\t\tval = Number(val);\n\t}\n\n\tobj[prop] = val;\n\treturn obj;\n}, {});\n\n/**\n * Is stdout a TTY? Colored output is enabled when `true`.\n */\n\nfunction useColors() {\n\treturn 'colors' in exports.inspectOpts ?\n\t\tBoolean(exports.inspectOpts.colors) :\n\t\ttty.isatty(process.stderr.fd);\n}\n\n/**\n * Adds ANSI color escape codes if enabled.\n *\n * @api public\n */\n\nfunction formatArgs(args) {\n\tconst {namespace: name, useColors} = this;\n\n\tif (useColors) {\n\t\tconst c = this.color;\n\t\tconst colorCode = '\\u001B[3' + (c < 8 ? c : '8;5;' + c);\n\t\tconst prefix = ` ${colorCode};1m${name} \\u001B[0m`;\n\n\t\targs[0] = prefix + args[0].split('\\n').join('\\n' + prefix);\n\t\targs.push(colorCode + 'm+' + module.exports.humanize(this.diff) + '\\u001B[0m');\n\t} else {\n\t\targs[0] = getDate() + name + ' ' + args[0];\n\t}\n}\n\nfunction getDate() {\n\tif (exports.inspectOpts.hideDate) {\n\t\treturn '';\n\t}\n\treturn new Date().toISOString() + ' ';\n}\n\n/**\n * Invokes `util.formatWithOptions()` with the specified arguments and writes to stderr.\n */\n\nfunction log(...args) {\n\treturn process.stderr.write(util.formatWithOptions(exports.inspectOpts, ...args) + '\\n');\n}\n\n/**\n * Save `namespaces`.\n *\n * @param {String} namespaces\n * @api private\n */\nfunction save(namespaces) {\n\tif (namespaces) {\n\t\tprocess.env.DEBUG = namespaces;\n\t} else {\n\t\t// If you set a process.env field to null or undefined, it gets cast to the\n\t\t// string 'null' or 'undefined'. Just delete instead.\n\t\tdelete process.env.DEBUG;\n\t}\n}\n\n/**\n * Load `namespaces`.\n *\n * @return {String} returns the previously persisted debug modes\n * @api private\n */\n\nfunction load() {\n\treturn process.env.DEBUG;\n}\n\n/**\n * Init logic for `debug` instances.\n *\n * Create a new `inspectOpts` object in case `useColors` is set\n * differently for a particular `debug` instance.\n */\n\nfunction init(debug) {\n\tdebug.inspectOpts = {};\n\n\tconst keys = Object.keys(exports.inspectOpts);\n\tfor (let i = 0; i < keys.length; i++) {\n\t\tdebug.inspectOpts[keys[i]] = exports.inspectOpts[keys[i]];\n\t}\n}\n\nmodule.exports = require('./common')(exports);\n\nconst {formatters} = module.exports;\n\n/**\n * Map %o to `util.inspect()`, all on a single line.\n */\n\nformatters.o = function (v) {\n\tthis.inspectOpts.colors = this.useColors;\n\treturn util.inspect(v, this.inspectOpts)\n\t\t.split('\\n')\n\t\t.map(str => str.trim())\n\t\t.join(' ');\n};\n\n/**\n * Map %O to `util.inspect()`, allowing multiple lines if needed.\n */\n\nformatters.O = function (v) {\n\tthis.inspectOpts.colors = this.useColors;\n\treturn util.inspect(v, this.inspectOpts);\n};\n","/**\n * Detect Electron renderer / nwjs process, which is node, but we should\n * treat as a browser.\n */\n\nif (typeof process === 'undefined' || process.type === 'renderer' || process.browser === true || process.__nwjs) {\n\tmodule.exports = require('./browser.js');\n} else {\n\tmodule.exports = require('./node.js');\n}\n",null,null,null,null,"{\n \"name\": \"mixpanel\",\n \"description\": \"A simple server-side API for mixpanel\",\n \"keywords\": [\n \"mixpanel\",\n \"analytics\",\n \"api\",\n \"stats\"\n ],\n \"version\": \"0.19.1\",\n \"homepage\": \"https://github.com/mixpanel/mixpanel-node\",\n \"author\": \"Carl Sverre\",\n \"license\": \"MIT\",\n \"main\": \"lib/mixpanel-node\",\n \"directories\": {\n \"lib\": \"lib\"\n },\n \"repository\": {\n \"type\": \"git\",\n \"url\": \"git+ssh://git@github.com/mixpanel/mixpanel-node.git\"\n },\n \"engines\": {\n \"node\": \">=10.0\"\n },\n \"scripts\": {\n \"test\": \"vitest\"\n },\n \"types\": \"./lib/mixpanel-node.d.ts\",\n \"devDependencies\": {\n \"@types/node\": \"^24.10.1\",\n \"@vitest/coverage-v8\": \"^4.0.8\",\n \"nock\": \"^14.0.10\",\n \"proxyquire\": \"^2.1.3\",\n \"typescript\": \"^5.9.3\",\n \"vitest\": \"^4.0.8\"\n },\n \"dependencies\": {\n \"https-proxy-agent\": \"7.0.6\"\n }\n}\n","/**\n * helper to wait for all callbacks to complete; similar to `Promise.all`\n * exposed to metrics object for unit tests\n * @param {Array} requests\n * @param {Function} handler\n * @param {Function} callback\n */\nexports.async_all = function(requests, handler, callback) {\n var total = requests.length,\n errors = null,\n results = [],\n done = function (err, result) {\n if (err) {\n // errors are `null` unless there is an error, which allows for promisification\n errors = errors || [];\n errors.push(err);\n }\n results.push(result);\n if (--total === 0) {\n callback(errors, results)\n }\n };\n\n if (total === 0) {\n callback(errors, results);\n } else {\n for(var i = 0, l = requests.length; i < l; i++) {\n handler(requests[i], done);\n }\n }\n};\n\n/**\n * Validate type of time property, and convert to Unix timestamp if necessary\n * @param {Date|number} time - value to check\n * @returns {number} Unix timestamp\n */\nexports.ensure_timestamp = function(time) {\n if (!(time instanceof Date || typeof time === \"number\")) {\n throw new Error(\"`time` property must be a Date or Unix timestamp and is only required for `import` endpoint\");\n }\n return time instanceof Date ? time.getTime() : time;\n};\n\n/**\n* Asserts that the provided logger object is valid\n* @param {CustomLogger} logger - The logger object to be validated\n* @throws {TypeError} If the logger object is not a valid Logger object or\n* if it is missing any of the required methods\n*/\nexports.assert_logger = function(logger) {\n if (typeof logger !== 'object') {\n throw new TypeError(`\"logger\" must be a valid Logger object`);\n }\n \n ['trace', 'debug', 'info', 'warn', 'error'].forEach((method) => {\n if (typeof logger[method] !== 'function') {\n throw new TypeError(`Logger object missing \"${method}\" method`);\n }\n });\n};\n","/**\n * Mixin with profile-related helpers (for people and groups)\n */\n\nconst {ensure_timestamp} = require('./utils');\n\nfunction merge_modifiers(data, modifiers) {\n if (modifiers) {\n if (modifiers.$ignore_alias) {\n data.$ignore_alias = modifiers.$ignore_alias;\n }\n if (modifiers.$ignore_time) {\n data.$ignore_time = modifiers.$ignore_time;\n }\n if (modifiers.hasOwnProperty(\"$ip\")) {\n data.$ip = modifiers.$ip;\n }\n if (modifiers.hasOwnProperty(\"$time\")) {\n data.$time = ensure_timestamp(modifiers.$time);\n }\n if (modifiers.hasOwnProperty(\"$latitude\") && modifiers.hasOwnProperty('$longitude')) {\n data.$latitude = modifiers.$latitude;\n data.$longitude = modifiers.$longitude;\n }\n }\n return data;\n};\nexports.merge_modifiers = merge_modifiers;\n\nexports.ProfileHelpers = (Base = Object) => class extends Base {\n get token() {\n return this.mixpanel.token;\n }\n\n get config() {\n return this.mixpanel.config;\n }\n\n _set(prop, to, modifiers, callback, {identifiers, set_once = false}) {\n let $set = {};\n\n if (typeof(prop) === 'object') {\n if (typeof(to) === 'object') {\n callback = modifiers;\n modifiers = to;\n } else {\n callback = to;\n }\n $set = prop;\n } else {\n $set[prop] = to;\n if (typeof(modifiers) === 'function' || !modifiers) {\n callback = modifiers;\n }\n }\n\n let data = {\n '$token': this.token,\n ...identifiers,\n };\n\n const set_key = set_once ? \"$set_once\" : \"$set\";\n data[set_key] = $set;\n\n if ('ip' in $set) {\n data.$ip = $set.ip;\n delete $set.ip;\n }\n\n if ($set.$ignore_time) {\n data.$ignore_time = $set.$ignore_time;\n delete $set.$ignore_time;\n }\n\n data = merge_modifiers(data, modifiers);\n\n if (this.config.debug) {\n this.mixpanel.config.logger.debug(`Sending the following data to Mixpanel (${this.endpoint})`, { data });\n }\n\n this.mixpanel.send_request({ method: \"GET\", endpoint: this.endpoint, data }, callback);\n }\n\n _delete_profile({identifiers, modifiers, callback}){\n let data = {\n '$delete': '',\n '$token': this.token,\n ...identifiers,\n };\n\n if (typeof(modifiers) === 'function') { callback = modifiers; }\n\n data = merge_modifiers(data, modifiers);\n\n if (this.config.debug) {\n this.mixpanel.config.logger.debug('Deleting profile', { identifiers });\n }\n\n this.mixpanel.send_request({ method: \"GET\", endpoint: this.endpoint, data }, callback);\n }\n\n _remove({identifiers, data, modifiers, callback}) {\n let $remove = {};\n\n if (typeof(data) !== 'object' || Array.isArray(data)) {\n if (this.config.debug) {\n this.mixpanel.config.logger.error(\"Invalid value passed to #remove - data must be an object with scalar values\");\n }\n return;\n }\n\n for (const [key, val] of Object.entries(data)) {\n if (typeof(val) === 'string' || typeof(val) === 'number') {\n $remove[key] = val;\n } else {\n if (this.config.debug) {\n this.mixpanel.config.logger.error(\n \"Invalid argument passed to #remove - values must be scalar\",\n { key, value: val }\n );\n }\n return;\n }\n }\n\n if (Object.keys($remove).length === 0) {\n return;\n }\n\n data = {\n '$remove': $remove,\n '$token': this.token,\n ...identifiers\n };\n\n if (typeof(modifiers) === 'function') {\n callback = modifiers;\n }\n\n data = merge_modifiers(data, modifiers);\n\n if (this.config.debug) {\n this.mixpanel.config.logger.debug(\n `Sending the following data to Mixpanel (${this.endpoint})`,\n { data }\n );\n }\n\n this.mixpanel.send_request({ method: \"GET\", endpoint: this.endpoint, data }, callback);\n }\n\n _union({identifiers, data, modifiers, callback}) {\n let $union = {};\n\n if (typeof(data) !== 'object' || Array.isArray(data)) {\n if (this.config.debug) {\n this.mixpanel.config.logger.error(\"Invalid value passed to #union - data must be an object with scalar or array values\");\n }\n return;\n }\n\n for (const [key, val] of Object.entries(data)) {\n if (Array.isArray(val)) {\n var merge_values = val.filter(function(v) {\n return typeof(v) === 'string' || typeof(v) === 'number';\n });\n if (merge_values.length > 0) {\n $union[key] = merge_values;\n }\n } else if (typeof(val) === 'string' || typeof(val) === 'number') {\n $union[key] = [val];\n } else {\n if (this.config.debug) {\n this.mixpanel.config.logger.error(\n \"Invalid argument passed to #union - values must be a scalar value or array\",\n { key, value: val }\n );\n }\n }\n }\n\n if (Object.keys($union).length === 0) {\n return;\n }\n\n data = {\n '$union': $union,\n '$token': this.token,\n ...identifiers,\n };\n\n if (typeof(modifiers) === 'function') {\n callback = modifiers;\n }\n\n data = merge_modifiers(data, modifiers);\n\n if (this.config.debug) {\n this.mixpanel.config.logger.debug(\n `Sending the following data to Mixpanel (${this.endpoint})`,\n { data }\n );\n }\n\n this.mixpanel.send_request({ method: \"GET\", endpoint: this.endpoint, data }, callback);\n }\n\n _unset({identifiers, prop, modifiers, callback}){\n let $unset = [];\n\n if (Array.isArray(prop)) {\n $unset = prop;\n } else if (typeof(prop) === 'string') {\n $unset = [prop];\n } else {\n if (this.config.debug) {\n this.mixpanel.config.logger.error(\n \"Invalid argument passed to #unset - must be a string or array\",\n { prop }\n );\n }\n return;\n }\n\n let data = {\n '$unset': $unset,\n '$token': this.token,\n ...identifiers,\n };\n\n if (typeof(modifiers) === 'function') {\n callback = modifiers;\n }\n\n data = merge_modifiers(data, modifiers);\n\n if (this.config.debug) {\n this.mixpanel.config.logger.debug(\n `Sending the following data to Mixpanel (${this.endpoint})`,\n { data }\n );\n }\n\n this.mixpanel.send_request({ method: \"GET\", endpoint: this.endpoint, data }, callback);\n }\n};\n","/**\n * Group profile methods. Learn more: https://help.mixpanel.com/hc/en-us/articles/360025333632\n */\n\nconst {ProfileHelpers} = require('./profile_helpers');\n\nclass MixpanelGroups extends ProfileHelpers() {\n constructor(mp_instance) {\n super();\n this.mixpanel = mp_instance;\n this.endpoint = '/groups';\n }\n\n /** groups.set_once(group_key, group_id, prop, to, modifiers, callback)\n ---\n The same as groups.set, but adds a property value to a group only if it has not been set before.\n */\n set_once(group_key, group_id, prop, to, modifiers, callback) {\n const identifiers = {$group_key: group_key, $group_id: group_id};\n this._set(prop, to, modifiers, callback, {identifiers, set_once: true});\n }\n\n /**\n groups.set(group_key, group_id, prop, to, modifiers, callback)\n ---\n set properties on a group profile\n\n usage:\n\n mixpanel.groups.set('company', 'Acme Inc.', '$name', 'Acme Inc.');\n\n mixpanel.groups.set('company', 'Acme Inc.', {\n 'Industry': 'widgets',\n '$name': 'Acme Inc.',\n });\n */\n set(group_key, group_id, prop, to, modifiers, callback) {\n const identifiers = {$group_key: group_key, $group_id: group_id};\n this._set(prop, to, modifiers, callback, {identifiers});\n }\n\n /**\n groups.delete_group(group_key, group_id, modifiers, callback)\n ---\n delete a group profile permanently\n\n usage:\n\n mixpanel.groups.delete_group('company', 'Acme Inc.');\n */\n delete_group(group_key, group_id, modifiers, callback) {\n const identifiers = {$group_key: group_key, $group_id: group_id};\n this._delete_profile({identifiers, modifiers, callback});\n }\n\n /**\n groups.remove(group_key, group_id, data, modifiers, callback)\n ---\n remove a value from a list-valued group profile property.\n\n usage:\n\n mixpanel.groups.remove('company', 'Acme Inc.', {'products': 'anvil'});\n\n mixpanel.groups.remove('company', 'Acme Inc.', {\n 'products': 'anvil',\n 'customer segments': 'coyotes'\n });\n */\n remove(group_key, group_id, data, modifiers, callback) {\n const identifiers = {$group_key: group_key, $group_id: group_id};\n this._remove({identifiers, data, modifiers, callback});\n }\n\n /**\n groups.union(group_key, group_id, data, modifiers, callback)\n ---\n merge value(s) into a list-valued group profile property.\n\n usage:\n\n mixpanel.groups.union('company', 'Acme Inc.', {'products': 'anvil'});\n\n mixpanel.groups.union('company', 'Acme Inc.', {'products': ['anvil'], 'customer segments': ['coyotes']});\n */\n union(group_key, group_id, data, modifiers, callback) {\n const identifiers = {$group_key: group_key, $group_id: group_id};\n this._union({identifiers, data, modifiers, callback})\n }\n\n /**\n groups.unset(group_key, group_id, prop, modifiers, callback)\n ---\n delete a property on a group profile\n\n usage:\n\n mixpanel.groups.unset('company', 'Acme Inc.', 'products');\n\n mixpanel.groups.unset('company', 'Acme Inc.', ['products', 'customer segments']);\n */\n unset(group_key, group_id, prop, modifiers, callback) {\n const identifiers = {$group_key: group_key, $group_id: group_id};\n this._unset({identifiers, prop, modifiers, callback})\n }\n}\n\nexports.MixpanelGroups = MixpanelGroups;\n","const {merge_modifiers, ProfileHelpers} = require('./profile_helpers');\n\nclass MixpanelPeople extends ProfileHelpers() {\n constructor(mp_instance) {\n super();\n this.mixpanel = mp_instance;\n this.endpoint = '/engage';\n }\n\n /** people.set_once(distinct_id, prop, to, modifiers, callback)\n ---\n The same as people.set but in the words of mixpanel:\n mixpanel.people.set_once\n\n \" This method allows you to set a user attribute, only if\n it is not currently set. It can be called multiple times\n safely, so is perfect for storing things like the first date\n you saw a user, or the referrer that brought them to your\n website for the first time. \"\n\n */\n set_once(distinct_id, prop, to, modifiers, callback) {\n const identifiers = {$distinct_id: distinct_id};\n this._set(prop, to, modifiers, callback, {identifiers, set_once: true});\n }\n\n /**\n people.set(distinct_id, prop, to, modifiers, callback)\n ---\n set properties on an user record in engage\n\n usage:\n\n mixpanel.people.set('bob', 'gender', 'm');\n\n mixpanel.people.set('joe', {\n 'company': 'acme',\n 'plan': 'premium'\n });\n */\n set(distinct_id, prop, to, modifiers, callback) {\n const identifiers = {$distinct_id: distinct_id};\n this._set(prop, to, modifiers, callback, {identifiers});\n }\n\n /**\n people.increment(distinct_id, prop, by, modifiers, callback)\n ---\n increment/decrement properties on an user record in engage\n\n usage:\n\n mixpanel.people.increment('bob', 'page_views', 1);\n\n // or, for convenience, if you're just incrementing a counter by 1, you can\n // simply do\n mixpanel.people.increment('bob', 'page_views');\n\n // to decrement a counter, pass a negative number\n mixpanel.people.increment('bob', 'credits_left', -1);\n\n // like mixpanel.people.set(), you can increment multiple properties at once:\n mixpanel.people.increment('bob', {\n counter1: 1,\n counter2: 3,\n counter3: -2\n });\n */\n increment(distinct_id, prop, by, modifiers, callback) {\n // TODO extract to ProfileHelpers\n\n var $add = {};\n\n if (typeof(prop) === 'object') {\n if (typeof(by) === 'object') {\n callback = modifiers;\n modifiers = by;\n } else {\n callback = by;\n }\n for (const [key, val] of Object.entries(prop)) {\n if (isNaN(parseFloat(val))) {\n if (this.mixpanel.config.debug) {\n this.mixpanel.config.logger.error(\n \"Invalid increment value passed to mixpanel.people.increment - must be a number\",\n {key, value: val}\n );\n }\n } else {\n $add[key] = val;\n }\n };\n } else {\n if (typeof(by) === 'number' || !by) {\n by = by || 1;\n $add[prop] = by;\n if (typeof(modifiers) === 'function') {\n callback = modifiers;\n }\n } else if (typeof(by) === 'function') {\n callback = by;\n $add[prop] = 1;\n } else {\n callback = modifiers;\n modifiers = (typeof(by) === 'object') ? by : {};\n $add[prop] = 1;\n }\n }\n\n var data = {\n '$add': $add,\n '$token': this.mixpanel.token,\n '$distinct_id': distinct_id\n };\n\n data = merge_modifiers(data, modifiers);\n\n if (this.mixpanel.config.debug) {\n this.mixpanel.config.logger.debug(\"Sending the following data to Mixpanel (Engage)\", { data });\n }\n\n this.mixpanel.send_request({ method: \"GET\", endpoint: \"/engage\", data: data }, callback);\n }\n\n /**\n people.append(distinct_id, prop, value, modifiers, callback)\n ---\n Append a value to a list-valued people analytics property.\n\n usage:\n\n // append a value to a list, creating it if needed\n mixpanel.people.append('bob', 'pages_visited', 'homepage');\n\n // like mixpanel.people.set(), you can append multiple properties at once:\n mixpanel.people.append('bob', {\n list1: 'bob',\n list2: 123\n });\n */\n append(distinct_id, prop, value, modifiers, callback) {\n // TODO extract to ProfileHelpers\n\n var $append = {};\n\n if (typeof(prop) === 'object') {\n if (typeof(value) === 'object') {\n callback = modifiers;\n modifiers = value;\n } else {\n callback = value;\n }\n Object.keys(prop).forEach(function(key) {\n $append[key] = prop[key];\n });\n } else {\n $append[prop] = value;\n if (typeof(modifiers) === 'function') {\n callback = modifiers;\n }\n }\n\n var data = {\n '$append': $append,\n '$token': this.mixpanel.token,\n '$distinct_id': distinct_id\n };\n\n data = merge_modifiers(data, modifiers);\n\n if (this.mixpanel.config.debug) {\n this.mixpanel.config.logger.debug(\"Sending the following data to Mixpanel (Engage)\", { data });\n }\n\n this.mixpanel.send_request({ method: \"GET\", endpoint: \"/engage\", data: data }, callback);\n }\n\n /**\n people.track_charge(distinct_id, amount, properties, modifiers, callback)\n ---\n Record that you have charged the current user a certain\n amount of money.\n\n usage:\n\n // charge a user $29.99\n mixpanel.people.track_charge('bob', 29.99);\n\n // charge a user $19 on the 1st of february\n mixpanel.people.track_charge('bob', 19, { '$time': new Date('feb 1 2012') });\n */\n track_charge(distinct_id, amount, properties, modifiers, callback) {\n if (typeof(properties) === 'function' || !properties) {\n callback = properties || undefined;\n properties = {};\n } else {\n if (typeof(modifiers) === 'function' || !modifiers) {\n callback = modifiers || undefined;\n if (properties.$ignore_time || properties.hasOwnProperty(\"$ip\")) {\n modifiers = {};\n Object.keys(properties).forEach(function(key) {\n modifiers[key] = properties[key];\n delete properties[key];\n });\n }\n }\n }\n\n if (typeof(amount) !== 'number') {\n amount = parseFloat(amount);\n if (isNaN(amount)) {\n this.mixpanel.config.logger.error(\"Invalid value passed to mixpanel.people.track_charge - must be a number\");\n return;\n }\n }\n\n properties.$amount = amount;\n\n if (properties.hasOwnProperty('$time')) {\n var time = properties.$time;\n if (Object.prototype.toString.call(time) === '[object Date]') {\n properties.$time = time.toISOString();\n }\n }\n\n var data = {\n '$append': { '$transactions': properties },\n '$token': this.mixpanel.token,\n '$distinct_id': distinct_id\n };\n\n data = merge_modifiers(data, modifiers);\n\n if (this.mixpanel.config.debug) {\n this.mixpanel.config.logger.debug(\"Sending the following data to Mixpanel (Engage)\", { data });\n }\n\n this.mixpanel.send_request({ method: \"GET\", endpoint: \"/engage\", data: data }, callback);\n }\n\n /**\n people.clear_charges(distinct_id, modifiers, callback)\n ---\n Clear all the current user's transactions.\n\n usage:\n\n mixpanel.people.clear_charges('bob');\n */\n clear_charges(distinct_id, modifiers, callback) {\n var data = {\n '$set': { '$transactions': [] },\n '$token': this.mixpanel.token,\n '$distinct_id': distinct_id\n };\n\n if (typeof(modifiers) === 'function') { callback = modifiers; }\n\n data = merge_modifiers(data, modifiers);\n\n if (this.mixpanel.config.debug) {\n this.mixpanel.config.logger.debug(\"Clearing this user's charges\", { '$distinct_id': distinct_id });\n }\n\n this.mixpanel.send_request({ method: \"GET\", endpoint: \"/engage\", data: data }, callback);\n }\n\n /**\n people.delete_user(distinct_id, modifiers, callback)\n ---\n delete an user record in engage\n\n usage:\n\n mixpanel.people.delete_user('bob');\n */\n delete_user(distinct_id, modifiers, callback) {\n const identifiers = {$distinct_id: distinct_id};\n this._delete_profile({identifiers, modifiers, callback});\n }\n\n /**\n people.remove(distinct_id, data, modifiers, callback)\n ---\n remove a value from a list-valued user profile property.\n\n usage:\n\n mixpanel.people.remove('bob', {'browsers': 'firefox'});\n\n mixpanel.people.remove('bob', {'browsers': 'chrome', 'os': 'linux'});\n */\n remove(distinct_id, data, modifiers, callback) {\n const identifiers = {'$distinct_id': distinct_id};\n this._remove({identifiers, data, modifiers, callback})\n }\n\n /**\n people.union(distinct_id, data, modifiers, callback)\n ---\n merge value(s) into a list-valued people analytics property.\n\n usage:\n\n mixpanel.people.union('bob', {'browsers': 'firefox'});\n\n mixpanel.people.union('bob', {'browsers': ['chrome'], os: ['linux']});\n */\n union(distinct_id, data, modifiers, callback) {\n const identifiers = {$distinct_id: distinct_id};\n this._union({identifiers, data, modifiers, callback});\n }\n\n /**\n people.unset(distinct_id, prop, modifiers, callback)\n ---\n delete a property on an user record in engage\n\n usage:\n\n mixpanel.people.unset('bob', 'page_views');\n\n mixpanel.people.unset('bob', ['page_views', 'last_login']);\n */\n unset(distinct_id, prop, modifiers, callback) {\n const identifiers = {$distinct_id: distinct_id};\n this._unset({identifiers, prop, modifiers, callback});\n }\n};\n\nexports.MixpanelPeople = MixpanelPeople;\n","/**\n * Utility functions for Mixpanel feature flags\n */\nconst crypto = require('crypto');\n\n// Constants\nconst EXPOSURE_EVENT = '$experiment_started';\n\nconst REQUEST_HEADERS = {\n 'Content-Type': 'application/json',\n};\n\n/**\n * FNV-1a 64-bit hash function used for consistent variant assignment\n * https://www.ietf.org/archive/id/draft-eastlake-fnv-21.html#section-6.1.2 \n * @param {Buffer} data - Data to hash\n * @returns {BigInt} - Hash value as BigInt\n */\nfunction _fnv1a64(data) {\n const FNV_PRIME = BigInt('0x100000001B3');\n let hash = BigInt('0xCBF29CE484222325');\n\n for (let i = 0; i < data.length; i++) {\n hash ^= BigInt(data[i]);\n hash *= FNV_PRIME;\n hash &= BigInt('0xFFFFFFFFFFFFFFFF');\n }\n\n return hash;\n}\n\n/**\n * Normalized hash function that returns a value between 0.0 and 1.0\n * Used for variant assignment based on rollout percentages\n * @param {string} key - The key to hash (usually distinct_id or other identifier)\n * @param {string} salt - Salt value (usually flag-specific hash_salt)\n * @returns {number} - Hash value normalized to the non-inclusive range, [0.0, 1.0)\n */\nfunction normalizedHash(key, salt) {\n const combined = Buffer.from(key + salt, 'utf-8');\n const hashValue = _fnv1a64(combined);\n return Number(hashValue % BigInt(100)) / 100.0;\n}\n\n/**\n * Prepare common query parameters for feature flags API requests\n * @param {string} token - Mixpanel project token\n * @param {string} sdkVersion - SDK version string\n * @returns {Object} - Query parameters object\n */\nfunction prepareCommonQueryParams(token, sdkVersion) {\n return {\n mp_lib: 'node',\n $lib_version: sdkVersion,\n token: token,\n };\n}\n\n/**\n * Generate W3C traceparent header for distributed tracing\n * Format: 00-{trace-id}-{parent-id}-{trace-flags}\n * @returns {string} - traceparent header value\n */\nfunction generateTraceparent() {\n const version = '00';\n const traceId = crypto.randomBytes(16).toString('hex');\n const parentId = crypto.randomBytes(8).toString('hex');\n const traceFlags = '01'; // sampled\n\n return `${version}-${traceId}-${parentId}-${traceFlags}`;\n}\n\nmodule.exports = {\n EXPOSURE_EVENT,\n REQUEST_HEADERS,\n normalizedHash,\n prepareCommonQueryParams,\n generateTraceparent,\n};\n","/**\n * Base Feature Flags Provider\n * Contains common methods for feature flag evaluation\n */\n\nconst https = require('https');\nconst packageInfo = require('../../package.json');\nconst { prepareCommonQueryParams, generateTraceparent, EXPOSURE_EVENT, REQUEST_HEADERS } = require('./utils');\n\n/**\n * @typedef {import('./types').SelectedVariant} SelectedVariant\n * @typedef {import('./types').FlagContext} FlagContext\n */\nclass FeatureFlagsProvider {\n /**\n * @param {Object} providerConfig - Configuration object with token, api_host, request_timeout_in_seconds\n * @param {string} endpoint - API endpoint path (e.g., '/flags' or '/flags/definitions')\n * @param {Function} tracker - Function to track events (signature: track(distinct_id, event, properties, callback))\n * @param {string} evaluationMode - The feature flag evaluation mode\n * @param {CustomLogger} logger - Logger instance\n */\n constructor(providerConfig, endpoint, tracker, evaluationMode, logger) {\n this.providerConfig = providerConfig;\n this.endpoint = endpoint;\n this.tracker = tracker;\n this.evaluationMode = evaluationMode;\n this.logger = logger;\n }\n\n /**\n * Common HTTP request handler for flags API endpoints\n * @param {Object} additionalParams - Additional query parameters to append\n * @returns {Promise<Object>} - Parsed JSON response\n */\n async callFlagsEndpoint(additionalParams = null) {\n return new Promise((resolve, reject) => {\n const commonParams = prepareCommonQueryParams(this.providerConfig.token, packageInfo.version);\n const params = new URLSearchParams(commonParams);\n\n if (additionalParams) {\n for (const [key, value] of Object.entries(additionalParams)) {\n params.append(key, value);\n }\n }\n\n const path = `${this.endpoint}?${params.toString()}`;\n\n const requestOptions = {\n host: this.providerConfig.api_host,\n port: 443,\n path: path,\n method: 'GET',\n headers: {\n ...REQUEST_HEADERS,\n 'Authorization': 'Basic ' + Buffer.from(this.providerConfig.token + ':').toString('base64'),\n 'traceparent': generateTraceparent(),\n },\n timeout: this.providerConfig.request_timeout_in_seconds * 1000,\n };\n\n const request = https.request(requestOptions, (res) => {\n let data = '';\n\n res.on('data', (chunk) => {\n data += chunk;\n });\n\n res.on('end', () => {\n if (res.statusCode !== 200) {\n this.logger?.error(`HTTP ${res.statusCode} error calling flags endpoint: ${data}`);\n return reject(new Error(`HTTP ${res.statusCode}: ${data}`));\n }\n\n try {\n const result = JSON.parse(data);\n resolve(result);\n } catch (parseErr) {\n this.logger?.error(`Failed to parse JSON response: ${parseErr.message}`);\n reject(parseErr);\n }\n });\n });\n\n request.on('error', (err) => {\n this.logger?.error(`Network error calling flags endpoint: ${err.message}`);\n reject(err);\n });\n\n request.on('timeout', () => {\n this.logger?.error(`Request timeout calling flags endpoint`);\n request.destroy();\n reject(new Error('Request timeout'));\n });\n\n request.end();\n });\n }\n\n /**\n * Manually tracks a feature flag exposure event to Mixpanel\n * This provides flexibility for reporting individual exposure events when using getAllVariants\n * If using getVariantValue or getVariant, exposure events are tracked automatically by default.\n * @param {string} flagKey - The key of the feature flag\n * @param {SelectedVariant} variant - The selected variant for the feature flag\n * @param {FlagContext} context - The user context used to evaluate the feature flag\n * @param {number|null} latencyMs - Optionally included latency in milliseconds that assignment took.\n */\n trackExposureEvent(flagKey, selectedVariant, context, latencyMs=null) {\n if (!context.distinct_id) {\n this.logger?.error('Cannot track exposure event without a distinct_id in the context');\n return;\n }\n\n const properties = {\n 'distinct_id': context.distinct_id,\n 'Experiment name': flagKey,\n 'Variant name': selectedVariant.variant_key,\n '$experiment_type': 'feature_flag',\n 'Flag evaluation mode': this.evaluationMode\n };\n\n if (latencyMs !== null && latencyMs !== undefined) {\n properties['Variant fetch latency (ms)'] = latencyMs;\n }\n\n if (selectedVariant.experiment_id !== undefined) {\n properties['$experiment_id'] = selectedVariant.experiment_id;\n }\n\n if (selectedVariant.is_experiment_active !== undefined) {\n properties['$is_experiment_active'] = selectedVariant.is_experiment_active;\n }\n\n if (selectedVariant.is_qa_tester !== undefined) {\n properties['$is_qa_tester'] = selectedVariant.is_qa_tester;\n }\n\n // Use the tracker function provided (bound to the main mixpanel instance)\n this.tracker(EXPOSURE_EVENT, properties, (err) => {\n if (err) {\n this.logger?.error(`[flags]Failed to track exposure event for flag '${flagKey}': ${err.message}`);\n }\n });\n }\n}\n\nmodule.exports = FeatureFlagsProvider;\n","/**\n * Local Feature Flags Provider\n * Evaluates feature flags client-side using locally cached definitions\n */\n\n/**\n * @typedef {import('./types').SelectedVariant} SelectedVariant\n * @typedef {import('./types').FlagContext} FlagContext\n * @typedef {import('./types').LocalFlagsConfig} LocalFlagsConfig\n * @typedef {import('./types').ExperimentationFlag} ExperimentationFlag\n * @typedef {import('./types').LocalFlagsResponse} LocalFlagsResponse\n * */\n\nconst FeatureFlagsProvider = require('./flags');\nconst { normalizedHash } = require('./utils');\n\nclass LocalFeatureFlagsProvider extends FeatureFlagsProvider {\n /**\n * @param {string} token - Mixpanel project token\n * @param {LocalFlagsConfig} config - Local flags configuration\n * @param {Function} tracker - Function to track events (signature: track(distinct_id, event, properties, callback))\n * @param {CustomLogger} logger - Logger\n */\n constructor(token, config, tracker, logger) {\n const mergedConfig = {\n api_host: 'api.mixpanel.com',\n request_timeout_in_seconds: 10,\n enable_polling: true,\n polling_interval_in_seconds: 60,\n ...config,\n };\n\n const providerConfig = {\n token: token,\n api_host: mergedConfig.api_host,\n request_timeout_in_seconds: mergedConfig.request_timeout_in_seconds,\n };\n\n super(providerConfig, '/flags/definitions', tracker, 'local', logger);\n\n this.config = mergedConfig;\n this.flagDefinitions = new Map();\n this.pollingInterval = null;\n }\n\n /**\n * Start polling for flag definitions.\n * Fetches immediately and then at regular intervals if polling is enabled\n * @returns {Promise<void>}\n */\n async startPollingForDefinitions() {\n try {\n await this._fetchFlagDefinitions();\n\n if (this.config.enable_polling && !this.pollingInterval) {\n this.pollingInterval = setInterval(async () => {\n try {\n await this._fetchFlagDefinitions();\n } catch (err) {\n this.logger?.error(`Error polling for flag definition: ${err.message}`);\n }\n }, this.config.polling_interval_in_seconds * 1000);\n }\n } catch (err) {\n this.logger?.error(`Initial flag definitions fetch failed: ${err.message}`);\n }\n }\n\n /**\n * Stop polling for flag definitions\n */\n stopPollingForDefinitions() {\n if (this.pollingInterval) {\n clearInterval(this.pollingInterval);\n this.pollingInterval = null;\n } else {\n this.logger?.warn('stopPollingForDefinitions called but polling was not active');\n }\n }\n\n /**\n * Check if a feature flag is enabled\n * This method is intended only for flags defined as Mixpanel Feature Gates (boolean flags)\n * This checks that the variant value of a selected variant is concretely the boolean 'true'\n * It does not coerce other truthy values.\n * @param {string} flagKey - Feature flag key\n * @param {FlagContext} context - Evaluation context (must include distinct_id)\n * @returns {boolean}\n */\n isEnabled(flagKey, context) {\n const value = this.getVariantValue(flagKey, false, context);\n return value === true;\n }\n\n /**\n * Get the variant value for a feature flag\n * @param {string} flagKey - Feature flag key\n * @param {*} fallbackValue - Value to return if the user context is not in the rollout for a flag or if evaluation fails\n * @param {FlagContext} context - Evaluation context\n * @param {boolean} [reportExposure=true] - Whether to track exposure event\n * @returns {*} The variant value\n */\n getVariantValue(flagKey, fallbackValue, context, reportExposure = true) {\n const result = this.getVariant(flagKey, { variant_value: fallbackValue }, context, reportExposure);\n return result.variant_value;\n }\n\n /**\n * Get the complete variant information for a feature flag\n * @param {string} flagKey - Feature flag key\n * @param {SelectedVariant} fallbackVariant - Variant to return if flag evaluation fails\n * @param {FlagContext} context - Evaluation context (must include distinct_id)\n * @param {boolean} [reportExposure=true] - Whether to track exposure event\n * @returns {SelectedVariant}\n */\n getVariant(flagKey, fallbackVariant, context, reportExposure = true) {\n const flag = this.flagDefinitions.get(flagKey);\n\n if (!flag) {\n this.logger?.warn(`Cannot find flag definition for key: '${flagKey}`);\n return fallbackVariant;\n }\n\n if (!Object.hasOwn(context, flag.context)) {\n this.logger?.warn(\n `The variant assignment key, '${flag.context}' for flag, '${flagKey}' is not present in the supplied user context dictionary`\n );\n return fallbackVariant;\n }\n\n const contextValue = context[flag.context];\n\n let selectedVariant = null;\n\n const testUserVariant = this._getVariantOverrideForTestUser(flag, context);\n if (testUserVariant) {\n selectedVariant = testUserVariant;\n } else {\n const rollout = this._getAssignedRollout(flag, contextValue, context);\n if (rollout) {\n selectedVariant = this._getAssignedVariant(flag, contextValue, flagKey, rollout);\n }\n }\n\n if (selectedVariant) {\n if (reportExposure) {\n this.trackExposureEvent(flagKey, selectedVariant, context);\n }\n return selectedVariant;\n }\n\n return fallbackVariant;\n }\n\n /**\n * Get all feature flag variants for the current user context\n * Exposure events are not automatically tracked when this method is used\n * @param {FlagContext} context - Evaluation context (must include distinct_id)\n * @returns {{[key: string]: SelectedVariant}}\n */\n getAllVariants(context) {\n const variants = {};\n\n for (const flagKey of this.flagDefinitions.keys()) {\n const variant = this.getVariant(flagKey, null, context, false);\n if (variant !== null) {\n variants[flagKey] = variant;\n }\n }\n\n return variants;\n }\n\n /**\n * Fetch flag definitions from API.\n * @returns {Promise<LocalFlagsResponse>}\n */\n async _fetchFlagDefinitions() {\n const response = await this.callFlagsEndpoint();\n\n const newDefinitions = new Map();\n response.flags.forEach(flag => {\n newDefinitions.set(flag.key, flag);\n });\n\n this.flagDefinitions = newDefinitions;\n\n return response;\n }\n\n /**\n * Find a variant by key (case-insensitive) and return complete SelectedVariant\n * @param {string} variantKey - Variant key to find\n * @param {ExperimentationFlag} flag - Flag definition\n * @returns {SelectedVariant|null}\n */\n _getMatchingVariant(variantKey, flag) {\n for (const variant of flag.ruleset.variants) {\n if (variantKey.toLowerCase() === variant.key.toLowerCase()) {\n return {\n variant_key: variant.key,\n variant_value: variant.value,\n experiment_id: flag.experiment_id,\n is_experiment_active: flag.is_experiment_active,\n };\n }\n }\n return null;\n }\n\n _getVariantOverrideForTestUser(flag, context) {\n if (!flag.ruleset.test?.users) {\n return null;\n }\n\n const distinctId = context.distinct_id;\n if (!distinctId) {\n return null;\n }\n\n const variantKey = flag.ruleset.test.users[distinctId];\n if (!variantKey) {\n return null;\n }\n\n let selected_variant = this._getMatchingVariant(variantKey, flag);\n if (selected_variant) {\n selected_variant.is_qa_tester = true;\n }\n return selected_variant;\n }\n\n _getAssignedRollout(flag, contextValue, context) {\n for (let index = 0; index < flag.ruleset.rollout.length; index++) {\n const rollout = flag.ruleset.rollout[index];\n\n let salt;\n if (flag.hash_salt !== null && flag.hash_salt !== undefined) {\n salt = flag.key + flag.hash_salt + index.toString();\n } else {\n salt = flag.key + \"rollout\";\n }\n\n const rolloutHash = normalizedHash(String(contextValue), salt);\n\n if (rolloutHash < rollout.rollout_percentage &&\n this._isRuntimeEvaluationSatisfied(rollout, context)) {\n return rollout;\n }\n }\n\n return null;\n }\n\n _getAssignedVariant(flag, contextValue, flagKey, rollout) {\n if (rollout.variant_override) {\n const variant = this._getMatchingVariant(rollout.variant_override.key, flag);\n if (variant) {\n return { ...variant, is_qa_tester: false };\n }\n }\n\n const storedSalt = flag.hash_salt !== null && flag.hash_salt !== undefined ? flag.hash_salt : \"\";\n const salt = flagKey + storedSalt + \"variant\";\n const variantHash = normalizedHash(String(contextValue), salt);\n\n const variants = flag.ruleset.variants.map(v => ({ ...v }));\n if (rollout.variant_splits) {\n for (const variant of variants) {\n if (variant.key in rollout.variant_splits) {\n variant.split = rollout.variant_splits[variant.key];\n }\n }\n }\n\n let selected = variants[0];\n let cumulative = 0.0;\n for (const variant of variants) {\n selected = variant;\n cumulative += variant.split || 0.0;\n if (variantHash < cumulative) {\n break;\n }\n }\n\n return {\n variant_key: selected.key,\n variant_value: selected.value,\n experiment_id: flag.experiment_id,\n is_experiment_active: flag.is_experiment_active,\n is_qa_tester: false,\n };\n }\n\n _isRuntimeEvaluationSatisfied(rollout, context) {\n if (!rollout.runtime_evaluation_definition) {\n return true;\n }\n\n const customProperties = context.custom_properties;\n if (!customProperties || typeof customProperties !== 'object') {\n return false;\n }\n\n for (const [key, expectedValue] of Object.entries(rollout.runtime_evaluation_definition)) {\n if (!(key in customProperties)) {\n return false;\n }\n\n const actualValue = customProperties[key];\n if (String(actualValue).toLowerCase() !== String(expectedValue).toLowerCase()) {\n return false;\n }\n }\n return true;\n }\n}\n\nmodule.exports = LocalFeatureFlagsProvider;\n","/**\n * Remote Feature Flags Provider\n * Evaluates feature flags via server-side API requests\n */\n\n/**\n * @typedef {import('./types').SelectedVariant} SelectedVariant\n * @typedef {import('./types').FlagContext} FlagContext\n * @typedef {import('./types').RemoteFlagsConfig} RemoteFlagsConfig\n * @typedef {import('./types').RemoteFlagsResponse} RemoteFlagsResponse\n */\n\nconst FeatureFlagsProvider = require('./flags');\n\nclass RemoteFeatureFlagsProvider extends FeatureFlagsProvider {\n /**\n * @param {string} token - Mixpanel project token\n * @param {RemoteFlagsConfig} config - Remote flags configuration\n * @param {Function} tracker - Function to track events (signature: track(distinct_id, event, properties, callback))\n * @param {CustomLogger} logger - Logger instance\n */\n constructor(token, config, tracker, logger) {\n const mergedConfig = {\n api_host: 'api.mixpanel.com',\n request_timeout_in_seconds: 10,\n ...config,\n };\n\n const providerConfig = {\n token: token,\n api_host: mergedConfig.api_host,\n request_timeout_in_seconds: mergedConfig.request_timeout_in_seconds,\n };\n\n super(providerConfig, '/flags', tracker, 'remote', logger);\n }\n\n /**\n * Get the variant value for a feature flag\n * If the user context is eligible for the rollout, one of the flag variants will be selected and an exposure event will be tracked to Mixpanel.\n * If the user context is not eligible, the fallback value is returned.\n * @param {string} flagKey - Feature flag key\n * @param {*} fallbackValue - Value to return if flag evaluation fails\n * @param {FlagContext} context - Evaluation context\n * @param {boolean} reportExposure - Whether to track exposure event\n * @returns {Promise<*>} - Variant value\n */\n async getVariantValue(flagKey, fallbackValue, context, reportExposure = true) {\n try {\n const selectedVariant = await this.getVariant(flagKey, { variant_value: fallbackValue }, context, reportExposure);\n return selectedVariant.variant_value;\n } catch (err) {\n this.logger?.error(`Failed to get variant value for flag '${flagKey}': ${err.message}`);\n return fallbackValue;\n }\n }\n\n /**\n * Get the complete variant information for a feature flag\n * If the user context is eligible for the rollout, one of the flag variants will be selected and an exposure event will be tracked to Mixpanel.\n * If the user context is not eligible, the fallback value is returned.\n * @param {string} flagKey - Feature flag key\n * @param {SelectedVariant} fallbackVariant - Variant to return if flag evaluation fails\n * @param {FlagContext} context - Evaluation context\n * @param {boolean} reportExposure - Whether to track exposure event in the event that the user context is eligible for the rollout.\n * @returns {Promise<SelectedVariant>} - Selected variant\n */\n async getVariant(flagKey, fallbackVariant, context, reportExposure = true) {\n try {\n const startTime = Date.now();\n const response = await this._fetchFlags(context, flagKey);\n const latencyMs = Date.now() - startTime;\n\n const flags = response.flags || {};\n const selectedVariant = flags[flagKey];\n if (!selectedVariant) {\n return fallbackVariant;\n }\n\n if (reportExposure) {\n this.trackExposureEvent(flagKey, selectedVariant, context, latencyMs);\n }\n\n return selectedVariant;\n } catch (err) {\n this.logger?.error(`Failed to get variant for flag '${flagKey}': ${err.message}`);\n return fallbackVariant;\n }\n }\n\n /**\n * This method is intended only for flags defined as Mixpanel Feature Gates (boolean flags)\n * This checks that the variant value of a selected variant is concretely the boolean 'true'\n * It does not coerce other truthy values.\n * @param {string} flagKey - Feature flag key\n * @param {FlagContext} context - User's evaluation context\n * @returns {Promise<boolean>} - Whether the flag is enabled\n */\n async isEnabled(flagKey, context) {\n try {\n const value = await this.getVariantValue(flagKey, false, context);\n return value === true;\n } catch (err) {\n this.logger?.error(`Failed to check if flag '${flagKey}' is enabled: ${err.message}`);\n return false;\n }\n }\n\n /**\n * Get all feature flag variants for the current user context from remote server\n * Exposure events are not automatically tracked when this method is used\n * @param {FlagContext} context - User's evaluation context\n * @returns {Promise<{[key: string]: SelectedVariant}|null>} - Dictionary mapping flag keys to variants, or null if the call fails\n */\n async getAllVariants(context) {\n try {\n const response = await this._fetchFlags(context);\n return response.flags || {};\n } catch (err) {\n this.logger?.error(`Failed to get all remote variants: ${err.message}`);\n return null;\n }\n }\n\n /**\n * Fetch flags from remote flags evaluation API\n * @param {FlagContext} context - Evaluation context\n * @param {string} [flagKey] - Optional flag key (if omitted, fetches all flags)\n * @returns {Promise<RemoteFlagsResponse>} - API response containing flags dictionary\n */\n _fetchFlags(context, flagKey = null) {\n const additionalParams = {\n context: JSON.stringify(context),\n };\n\n if (flagKey !== null) {\n additionalParams.flag_key = flagKey;\n }\n\n return this.callFlagsEndpoint(additionalParams);\n }\n}\n\nmodule.exports = RemoteFeatureFlagsProvider;\n","/**\n * Mixpanel Feature Flags\n * Exports for local and remote feature flag evaluation\n */\n\nconst LocalFeatureFlagsProvider = require('./local_flags');\nconst RemoteFeatureFlagsProvider = require('./remote_flags');\n\nmodule.exports = {\n LocalFeatureFlagsProvider,\n RemoteFeatureFlagsProvider,\n};\n","/*\n Heavily inspired by the original js library copyright Mixpanel, Inc.\n (http://mixpanel.com/)\n\n Copyright (c) 2012 Carl Sverre\n\n Released under the MIT license.\n*/\n\nconst querystring = require('querystring');\nconst Buffer = require('buffer').Buffer;\nconst http = require('http');\nconst https = require('https');\nconst HttpsProxyAgent = require('https-proxy-agent');\nconst url = require('url');\nconst packageInfo = require('../package.json')\n\nconst {async_all, ensure_timestamp, assert_logger} = require('./utils');\nconst {MixpanelGroups} = require('./groups');\nconst {MixpanelPeople} = require('./people');\nconst {LocalFeatureFlagsProvider, RemoteFeatureFlagsProvider} = require('./flags');\n\nconst DEFAULT_CONFIG = {\n test: false,\n debug: false,\n verbose: false,\n host: 'api.mixpanel.com',\n protocol: 'https',\n path: '',\n keepAlive: true,\n // set this to true to automatically geolocate based on the client's ip.\n // e.g., when running under electron\n geolocate: false,\n logger: console,\n};\n\nvar create_client = function(token, config) {\n if (!token) {\n throw new Error(\"The Mixpanel Client needs a Mixpanel token: `init(token)`\");\n }\n\n const metrics = {\n token,\n config: {...DEFAULT_CONFIG},\n };\n const {keepAlive} = metrics.config;\n\n // mixpanel constants\n const MAX_BATCH_SIZE = 50;\n const REQUEST_LIBS = {http, https};\n const REQUEST_AGENTS = {\n http: new http.Agent({keepAlive}),\n https: new https.Agent({keepAlive}),\n };\n const proxyPath = process.env.HTTPS_PROXY || process.env.HTTP_PROXY;\n const proxyAgent = proxyPath ? new HttpsProxyAgent(Object.assign(url.parse(proxyPath), {\n keepAlive,\n })) : null;\n\n /**\n * sends an async GET or POST request to mixpanel\n * for batch processes data must be send in the body of a POST\n * @param {object} options\n * @param {string} options.endpoint\n * @param {object} options.data the data to send in the request\n * @param {string} [options.method] e.g. `get` or `post`, defaults to `get`\n * @param {function} callback called on request completion or error\n */\n metrics.send_request = function(options, callback) {\n callback = callback || function() {};\n\n let content = Buffer.from(JSON.stringify(options.data)).toString('base64');\n const endpoint = options.endpoint;\n const method = (options.method || 'GET').toUpperCase();\n let query_params = {\n 'ip': metrics.config.geolocate ? 1 : 0,\n 'verbose': metrics.config.verbose ? 1 : 0\n };\n const key = metrics.config.key;\n const secret = metrics.config.secret;\n const request_lib = REQUEST_LIBS[metrics.config.protocol];\n let request_options = {\n host: metrics.config.host,\n port: metrics.config.port,\n headers: {},\n method: method\n };\n let request;\n\n if (!request_lib) {\n throw new Error(\n \"Mixpanel Initialization Error: Unsupported protocol \" + metrics.config.protocol + \". \" +\n \"Supported protocols are: \" + Object.keys(REQUEST_LIBS)\n );\n }\n\n\n if (method === 'POST') {\n content = 'data=' + content;\n request_options.headers['Content-Type'] = 'application/x-www-form-urlencoded';\n request_options.headers['Content-Length'] = Buffer.byteLength(content);\n } else if (method === 'GET') {\n query_params.data = content;\n }\n\n\n // add auth params\n if (secret) {\n if (request_lib !== https) {\n throw new Error(\"Must use HTTPS if authenticating with API Secret\");\n }\n const encoded = Buffer.from(secret + ':').toString('base64');\n request_options.headers['Authorization'] = 'Basic ' + encoded;\n } else if (key) {\n query_params.api_key = key;\n } else if (endpoint === '/import') {\n throw new Error(\"The Mixpanel Client needs a Mixpanel API Secret when importing old events: `init(token, { secret: ... })`\");\n }\n\n request_options.agent = proxyAgent || REQUEST_AGENTS[metrics.config.protocol];\n\n if (metrics.config.test) {\n query_params.test = 1;\n }\n\n request_options.path = metrics.config.path + endpoint + \"?\" + querystring.stringify(query_params);\n\n request = request_lib.request(request_options, function(res) {\n var data = \"\";\n res.on('data', function(chunk) {\n data += chunk;\n });\n\n res.on('end', function() {\n var e;\n if (metrics.config.verbose) {\n try {\n var result = JSON.parse(data);\n if(result.status != 1) {\n e = new Error(\"Mixpanel Server Error: \" + result.error);\n }\n }\n catch(ex) {\n e = new Error(\"Could not parse response from Mixpanel\");\n }\n }\n else {\n e = (data !== '1') ? new Error(\"Mixpanel Server Error: \" + data) : undefined;\n }\n\n callback(e);\n });\n });\n\n request.on('error', function(e) {\n if (metrics.config.debug) {\n metrics.config.logger.error(\"Got Error: \" + e.message);\n }\n callback(e);\n });\n\n if (method === 'POST') {\n request.write(content);\n }\n request.end();\n };\n\n /**\n * Send an event to Mixpanel, using the specified endpoint (e.g., track/import)\n * @param {string} endpoint - API endpoint name\n * @param {string} event - event name\n * @param {object} properties - event properties\n * @param {Function} [callback] - callback for request completion/error\n */\n metrics.send_event_request = function(endpoint, event, properties, callback) {\n properties.token = metrics.token;\n properties.mp_lib = \"node\";\n properties.$lib_version = packageInfo.version;\n\n var data = {\n event: event,\n properties: properties\n };\n\n if (metrics.config.debug) {\n metrics.config.logger.debug(\"Sending the following event to Mixpanel\", { data });\n }\n\n metrics.send_request({ method: \"GET\", endpoint: endpoint, data: data }, callback);\n };\n\n /**\n * breaks array into equal-sized chunks, with the last chunk being the remainder\n * @param {Array} arr\n * @param {number} size\n * @returns {Array}\n */\n var chunk = function(arr, size) {\n var chunks = [],\n i = 0,\n total = arr.length;\n\n while (i < total) {\n chunks.push(arr.slice(i, i += size));\n }\n return chunks;\n };\n\n /**\n * sends events in batches\n * @param {object} options\n * @param {[{}]} options.event_list array of event objects\n * @param {string} options.endpoint e.g. `/track` or `/import`\n * @param {number} [options.max_concurrent_requests] limits concurrent async requests over the network\n * @param {number} [options.max_batch_size] limits number of events sent to mixpanel per request\n * @param {Function} [callback] callback receives array of errors if any\n *\n */\n var send_batch_requests = function(options, callback) {\n var event_list = options.event_list,\n endpoint = options.endpoint,\n max_batch_size = options.max_batch_size ? Math.min(MAX_BATCH_SIZE, options.max_batch_size) : MAX_BATCH_SIZE,\n // to maintain original intention of max_batch_size; if max_batch_size is greater than 50, we assume the user is trying to set max_concurrent_requests\n max_concurrent_requests = options.max_concurrent_requests || (options.max_batch_size > MAX_BATCH_SIZE && Math.ceil(options.max_batch_size / MAX_BATCH_SIZE)),\n event_batches = chunk(event_list, max_batch_size),\n request_batches = max_concurrent_requests ? chunk(event_batches, max_concurrent_requests) : [event_batches],\n total_event_batches = event_batches.length,\n total_request_batches = request_batches.length;\n\n /**\n * sends a batch of events to mixpanel through http api\n * @param {Array} batch\n * @param {Function} cb\n */\n function send_event_batch(batch, cb) {\n if (batch.length > 0) {\n batch = batch.map(function (event) {\n var properties = event.properties;\n if (endpoint === '/import' || event.properties.time) {\n // usually there will be a time property, but not required for `/track` endpoint\n event.properties.time = ensure_timestamp(event.properties.time);\n }\n event.properties.token = event.properties.token || metrics.token;\n return event;\n });\n\n // must be a POST\n metrics.send_request({ method: \"POST\", endpoint: endpoint, data: batch }, cb);\n }\n }\n\n /**\n * Asynchronously sends batches of requests\n * @param {number} index\n */\n function send_next_request_batch(index) {\n var request_batch = request_batches[index],\n cb = function (errors, results) {\n index += 1;\n if (index === total_request_batches) {\n callback && callback(errors, results);\n } else {\n send_next_request_batch(index);\n }\n };\n\n async_all(request_batch, send_event_batch, cb);\n }\n\n // init recursive function\n send_next_request_batch(0);\n\n if (metrics.config.debug) {\n metrics.config.logger.debug(\n \"Sending \" + event_list.length + \" events to Mixpanel in \" +\n total_event_batches + \" batches of events and \" +\n total_request_batches + \" batches of requests\"\n );\n }\n };\n\n /**\n track(event, properties, callback)\n ---\n this function sends an event to mixpanel.\n\n event:string the event name\n properties:object additional event properties to send\n callback:function(err:Error) callback is called when the request is\n finished or an error occurs\n */\n metrics.track = function(event, properties, callback) {\n if (!properties || typeof properties === \"function\") {\n callback = properties;\n properties = {};\n }\n\n // time is optional for `track`\n if (properties.time) {\n properties.time = ensure_timestamp(properties.time);\n }\n\n metrics.send_event_request(\"/track\", event, properties, callback);\n };\n\n /**\n * send a batch of events to mixpanel `track` endpoint: this should only be used if events are less than 5 days old\n * @param {Array} event_list array of event objects to track\n * @param {object} [options]\n * @param {number} [options.max_concurrent_requests] number of concurrent http requests that can be made to mixpanel\n * @param {number} [options.max_batch_size] number of events that can be sent to mixpanel per request\n * @param {Function} [callback] callback receives array of errors if any\n */\n metrics.track_batch = function(event_list, options, callback) {\n options = options || {};\n if (typeof options === 'function') {\n callback = options;\n options = {};\n }\n var batch_options = {\n event_list: event_list,\n endpoint: \"/track\",\n max_concurrent_requests: options.max_concurrent_requests,\n max_batch_size: options.max_batch_size\n };\n\n send_batch_requests(batch_options, callback);\n };\n\n /**\n import(event, time, properties, callback)\n ---\n This function sends an event to mixpanel using the import\n endpoint. The time argument should be either a Date or Number,\n and should signify the time the event occurred.\n\n It is highly recommended that you specify the distinct_id\n property for each event you import, otherwise the events will be\n tied to the IP address of the sending machine.\n\n For more information look at:\n https://mixpanel.com/docs/api-documentation/importing-events-older-than-31-days\n\n event:string the event name\n time:date|number the time of the event\n properties:object additional event properties to send\n callback:function(err:Error) callback is called when the request is\n finished or an error occurs\n */\n metrics.import = function(event, time, properties, callback) {\n if (!properties || typeof properties === \"function\") {\n callback = properties;\n properties = {};\n }\n\n properties.time = ensure_timestamp(time);\n\n metrics.send_event_request(\"/import\", event, properties, callback);\n };\n\n /**\n import_batch(event_list, options, callback)\n ---\n This function sends a list of events to mixpanel using the import\n endpoint. The format of the event array should be:\n\n [\n {\n \"event\": \"event name\",\n \"properties\": {\n \"time\": new Date(), // Number or Date; required for each event\n \"key\": \"val\",\n ...\n }\n },\n {\n \"event\": \"event name\",\n \"properties\": {\n \"time\": new Date() // Number or Date; required for each event\n }\n },\n ...\n ]\n\n See import() for further information about the import endpoint.\n\n Options:\n max_batch_size: the maximum number of events to be transmitted over\n the network simultaneously. useful for capping bandwidth\n usage.\n max_concurrent_requests: the maximum number of concurrent http requests that\n can be made to mixpanel; also useful for capping bandwidth.\n\n N.B.: the Mixpanel API only accepts 50 events per request, so regardless\n of max_batch_size, larger lists of events will be chunked further into\n groups of 50.\n\n event_list:array list of event names and properties\n options:object optional batch configuration\n callback:function(error_list:array) callback is called when the request is\n finished or an error occurs\n */\n metrics.import_batch = function(event_list, options, callback) {\n var batch_options;\n\n if (typeof(options) === \"function\" || !options) {\n callback = options;\n options = {};\n }\n batch_options = {\n event_list: event_list,\n endpoint: \"/import\",\n max_concurrent_requests: options.max_concurrent_requests,\n max_batch_size: options.max_batch_size\n };\n send_batch_requests(batch_options, callback);\n };\n\n /**\n alias(distinct_id, alias)\n ---\n This function creates an alias for distinct_id\n\n For more information look at:\n https://mixpanel.com/docs/integration-libraries/using-mixpanel-alias\n\n distinct_id:string the current identifier\n alias:string the future alias\n */\n metrics.alias = function(distinct_id, alias, callback) {\n var properties = {\n distinct_id: distinct_id,\n alias: alias\n };\n\n metrics.track('$create_alias', properties, callback);\n };\n\n metrics.groups = new MixpanelGroups(metrics);\n metrics.people = new MixpanelPeople(metrics);\n\n /**\n set_config(config)\n ---\n Modifies the mixpanel config\n\n config:object an object with properties to override in the\n mixpanel client config\n */\n metrics.set_config = function(config) {\n if (config && config.logger !== undefined) {\n assert_logger(config.logger);\n }\n Object.assign(metrics.config, config);\n if (config.host) {\n // Split host into host and port\n const [host, port] = config.host.split(':');\n metrics.config.host = host;\n if (port) {\n metrics.config.port = Number(port);\n }\n }\n };\n\n if (config) {\n metrics.set_config(config);\n }\n\n // Initialize feature flags providers if configs are provided\n if (config && config.local_flags_config) {\n metrics.local_flags = new LocalFeatureFlagsProvider(\n token,\n config.local_flags_config,\n metrics.track.bind(metrics),\n config.logger\n );\n }\n\n if (config && config.remote_flags_config) {\n metrics.remote_flags = new RemoteFeatureFlagsProvider(\n token,\n config.remote_flags_config,\n metrics.track.bind(metrics),\n config.logger\n );\n }\n\n return metrics;\n};\n\n// module exporting\nmodule.exports = {\n init: create_client,\n};\n","/**\n * Mixpanel Subscriber for autotel\n *\n * Send events to Mixpanel for product events.\n *\n * @example\n * ```typescript\n * import { Events } from 'autotel/events';\n * import { MixpanelSubscriber } from 'autotel-subscribers/mixpanel';\n *\n * const events = new Events('checkout', {\n * subscribers: [\n * new MixpanelSubscriber({\n * token: process.env.MIXPANEL_TOKEN!\n * })\n * ]\n * });\n *\n * events.trackEvent('order.completed', { userId: '123', amount: 99.99 });\n * ```\n */\n\nimport type {\n EventSubscriber,\n EventAttributes,\n FunnelStatus,\n OutcomeStatus,\n} from 'autotel/event-subscriber';\n\nexport interface MixpanelConfig {\n /** Mixpanel project token */\n token: string;\n /** Enable/disable the subscriber */\n enabled?: boolean;\n}\n\nexport class MixpanelSubscriber implements EventSubscriber {\n readonly name = 'MixpanelSubscriber';\n readonly version = '1.0.0';\n\n private mixpanel: any;\n private enabled: boolean;\n private config: MixpanelConfig;\n private initPromise: Promise<void> | null = null;\n\n constructor(config: MixpanelConfig) {\n this.enabled = config.enabled ?? true;\n this.config = config;\n\n if (this.enabled) {\n // Start initialization immediately but don't block constructor\n this.initPromise = this.initialize();\n }\n }\n\n private async initialize(): Promise<void> {\n try {\n // Dynamic import to avoid adding mixpanel as a hard dependency\n const Mixpanel = await import('mixpanel');\n this.mixpanel = Mixpanel.default.init(this.config.token);\n } catch (error) {\n console.error(\n 'Mixpanel subscriber failed to initialize. Install mixpanel: pnpm add mixpanel',\n error,\n );\n this.enabled = false;\n }\n }\n\n private async ensureInitialized(): Promise<void> {\n if (this.initPromise) {\n await this.initPromise;\n this.initPromise = null;\n }\n }\n\n async trackEvent(name: string, attributes?: EventAttributes): Promise<void> {\n if (!this.enabled) return;\n\n await this.ensureInitialized();\n const distinctId = attributes?.userId || attributes?.user_id || 'anonymous';\n this.mixpanel?.track(name, {\n distinct_id: distinctId,\n ...attributes,\n });\n }\n\n async trackFunnelStep(\n funnelName: string,\n step: FunnelStatus,\n attributes?: EventAttributes,\n ): Promise<void> {\n if (!this.enabled) return;\n\n await this.ensureInitialized();\n const distinctId = attributes?.userId || attributes?.user_id || 'anonymous';\n this.mixpanel?.track(`${funnelName}.${step}`, {\n distinct_id: distinctId,\n funnel: funnelName,\n step,\n ...attributes,\n });\n }\n\n async trackOutcome(\n operationName: string,\n outcome: OutcomeStatus,\n attributes?: EventAttributes,\n ): Promise<void> {\n if (!this.enabled) return;\n\n await this.ensureInitialized();\n const distinctId = attributes?.userId || attributes?.user_id || 'anonymous';\n this.mixpanel?.track(`${operationName}.${outcome}`, {\n distinct_id: distinctId,\n operation: operationName,\n outcome,\n ...attributes,\n });\n }\n\n async trackValue(name: string, value: number, attributes?: EventAttributes): Promise<void> {\n if (!this.enabled) return;\n\n await this.ensureInitialized();\n const distinctId = attributes?.userId || attributes?.user_id || 'anonymous';\n this.mixpanel?.track(name, {\n distinct_id: distinctId,\n value,\n ...attributes,\n });\n }\n}\n\n"]}
|
|
1
|
+
{"version":3,"sources":["../../../node_modules/.pnpm/ms@2.1.3/node_modules/ms/index.js","../../../node_modules/.pnpm/debug@4.4.3_supports-color@10.2.2/node_modules/debug/src/common.js","../../../node_modules/.pnpm/debug@4.4.3_supports-color@10.2.2/node_modules/debug/src/browser.js","../../../node_modules/.pnpm/supports-color@10.2.2/node_modules/supports-color/index.js","../../../node_modules/.pnpm/debug@4.4.3_supports-color@10.2.2/node_modules/debug/src/node.js","../../../node_modules/.pnpm/debug@4.4.3_supports-color@10.2.2/node_modules/debug/src/index.js","../../../node_modules/.pnpm/agent-base@7.1.4/node_modules/agent-base/src/helpers.ts","../../../node_modules/.pnpm/agent-base@7.1.4/node_modules/agent-base/src/index.ts","../../../node_modules/.pnpm/https-proxy-agent@7.0.6_supports-color@10.2.2/node_modules/https-proxy-agent/src/parse-proxy-response.ts","../../../node_modules/.pnpm/https-proxy-agent@7.0.6_supports-color@10.2.2/node_modules/https-proxy-agent/src/index.ts","../../../node_modules/.pnpm/mixpanel@0.20.0/node_modules/mixpanel/package.json","../../../node_modules/.pnpm/mixpanel@0.20.0/node_modules/mixpanel/lib/utils.js","../../../node_modules/.pnpm/mixpanel@0.20.0/node_modules/mixpanel/lib/profile_helpers.js","../../../node_modules/.pnpm/mixpanel@0.20.0/node_modules/mixpanel/lib/groups.js","../../../node_modules/.pnpm/mixpanel@0.20.0/node_modules/mixpanel/lib/people.js","../../../node_modules/.pnpm/mixpanel@0.20.0/node_modules/mixpanel/lib/flags/utils.js","../../../node_modules/.pnpm/mixpanel@0.20.0/node_modules/mixpanel/lib/flags/flags.js","../../../node_modules/.pnpm/json-logic-js@2.0.5/node_modules/json-logic-js/logic.js","../../../node_modules/.pnpm/mixpanel@0.20.0/node_modules/mixpanel/lib/flags/local_flags.js","../../../node_modules/.pnpm/mixpanel@0.20.0/node_modules/mixpanel/lib/flags/remote_flags.js","../../../node_modules/.pnpm/mixpanel@0.20.0/node_modules/mixpanel/lib/flags/index.js","../../../node_modules/.pnpm/mixpanel@0.20.0/node_modules/mixpanel/lib/mixpanel-node.js","../src/mixpanel.ts"],"names":["exports","env","process","os","tty","supportsColor","useColors","req","require_utils","current","require_flags","Buffer","chunk","config"],"mappings":"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","file":"mixpanel.cjs","sourcesContent":["/**\n * Helpers.\n */\n\nvar s = 1000;\nvar m = s * 60;\nvar h = m * 60;\nvar d = h * 24;\nvar w = d * 7;\nvar y = d * 365.25;\n\n/**\n * Parse or format the given `val`.\n *\n * Options:\n *\n * - `long` verbose formatting [false]\n *\n * @param {String|Number} val\n * @param {Object} [options]\n * @throws {Error} throw an error if val is not a non-empty string or a number\n * @return {String|Number}\n * @api public\n */\n\nmodule.exports = function (val, options) {\n options = options || {};\n var type = typeof val;\n if (type === 'string' && val.length > 0) {\n return parse(val);\n } else if (type === 'number' && isFinite(val)) {\n return options.long ? fmtLong(val) : fmtShort(val);\n }\n throw new Error(\n 'val is not a non-empty string or a valid number. val=' +\n JSON.stringify(val)\n );\n};\n\n/**\n * Parse the given `str` and return milliseconds.\n *\n * @param {String} str\n * @return {Number}\n * @api private\n */\n\nfunction parse(str) {\n str = String(str);\n if (str.length > 100) {\n return;\n }\n var match = /^(-?(?:\\d+)?\\.?\\d+) *(milliseconds?|msecs?|ms|seconds?|secs?|s|minutes?|mins?|m|hours?|hrs?|h|days?|d|weeks?|w|years?|yrs?|y)?$/i.exec(\n str\n );\n if (!match) {\n return;\n }\n var n = parseFloat(match[1]);\n var type = (match[2] || 'ms').toLowerCase();\n switch (type) {\n case 'years':\n case 'year':\n case 'yrs':\n case 'yr':\n case 'y':\n return n * y;\n case 'weeks':\n case 'week':\n case 'w':\n return n * w;\n case 'days':\n case 'day':\n case 'd':\n return n * d;\n case 'hours':\n case 'hour':\n case 'hrs':\n case 'hr':\n case 'h':\n return n * h;\n case 'minutes':\n case 'minute':\n case 'mins':\n case 'min':\n case 'm':\n return n * m;\n case 'seconds':\n case 'second':\n case 'secs':\n case 'sec':\n case 's':\n return n * s;\n case 'milliseconds':\n case 'millisecond':\n case 'msecs':\n case 'msec':\n case 'ms':\n return n;\n default:\n return undefined;\n }\n}\n\n/**\n * Short format for `ms`.\n *\n * @param {Number} ms\n * @return {String}\n * @api private\n */\n\nfunction fmtShort(ms) {\n var msAbs = Math.abs(ms);\n if (msAbs >= d) {\n return Math.round(ms / d) + 'd';\n }\n if (msAbs >= h) {\n return Math.round(ms / h) + 'h';\n }\n if (msAbs >= m) {\n return Math.round(ms / m) + 'm';\n }\n if (msAbs >= s) {\n return Math.round(ms / s) + 's';\n }\n return ms + 'ms';\n}\n\n/**\n * Long format for `ms`.\n *\n * @param {Number} ms\n * @return {String}\n * @api private\n */\n\nfunction fmtLong(ms) {\n var msAbs = Math.abs(ms);\n if (msAbs >= d) {\n return plural(ms, msAbs, d, 'day');\n }\n if (msAbs >= h) {\n return plural(ms, msAbs, h, 'hour');\n }\n if (msAbs >= m) {\n return plural(ms, msAbs, m, 'minute');\n }\n if (msAbs >= s) {\n return plural(ms, msAbs, s, 'second');\n }\n return ms + ' ms';\n}\n\n/**\n * Pluralization helper.\n */\n\nfunction plural(ms, msAbs, n, name) {\n var isPlural = msAbs >= n * 1.5;\n return Math.round(ms / n) + ' ' + name + (isPlural ? 's' : '');\n}\n","\n/**\n * This is the common logic for both the Node.js and web browser\n * implementations of `debug()`.\n */\n\nfunction setup(env) {\n\tcreateDebug.debug = createDebug;\n\tcreateDebug.default = createDebug;\n\tcreateDebug.coerce = coerce;\n\tcreateDebug.disable = disable;\n\tcreateDebug.enable = enable;\n\tcreateDebug.enabled = enabled;\n\tcreateDebug.humanize = require('ms');\n\tcreateDebug.destroy = destroy;\n\n\tObject.keys(env).forEach(key => {\n\t\tcreateDebug[key] = env[key];\n\t});\n\n\t/**\n\t* The currently active debug mode names, and names to skip.\n\t*/\n\n\tcreateDebug.names = [];\n\tcreateDebug.skips = [];\n\n\t/**\n\t* Map of special \"%n\" handling functions, for the debug \"format\" argument.\n\t*\n\t* Valid key names are a single, lower or upper-case letter, i.e. \"n\" and \"N\".\n\t*/\n\tcreateDebug.formatters = {};\n\n\t/**\n\t* Selects a color for a debug namespace\n\t* @param {String} namespace The namespace string for the debug instance to be colored\n\t* @return {Number|String} An ANSI color code for the given namespace\n\t* @api private\n\t*/\n\tfunction selectColor(namespace) {\n\t\tlet hash = 0;\n\n\t\tfor (let i = 0; i < namespace.length; i++) {\n\t\t\thash = ((hash << 5) - hash) + namespace.charCodeAt(i);\n\t\t\thash |= 0; // Convert to 32bit integer\n\t\t}\n\n\t\treturn createDebug.colors[Math.abs(hash) % createDebug.colors.length];\n\t}\n\tcreateDebug.selectColor = selectColor;\n\n\t/**\n\t* Create a debugger with the given `namespace`.\n\t*\n\t* @param {String} namespace\n\t* @return {Function}\n\t* @api public\n\t*/\n\tfunction createDebug(namespace) {\n\t\tlet prevTime;\n\t\tlet enableOverride = null;\n\t\tlet namespacesCache;\n\t\tlet enabledCache;\n\n\t\tfunction debug(...args) {\n\t\t\t// Disabled?\n\t\t\tif (!debug.enabled) {\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tconst self = debug;\n\n\t\t\t// Set `diff` timestamp\n\t\t\tconst curr = Number(new Date());\n\t\t\tconst ms = curr - (prevTime || curr);\n\t\t\tself.diff = ms;\n\t\t\tself.prev = prevTime;\n\t\t\tself.curr = curr;\n\t\t\tprevTime = curr;\n\n\t\t\targs[0] = createDebug.coerce(args[0]);\n\n\t\t\tif (typeof args[0] !== 'string') {\n\t\t\t\t// Anything else let's inspect with %O\n\t\t\t\targs.unshift('%O');\n\t\t\t}\n\n\t\t\t// Apply any `formatters` transformations\n\t\t\tlet index = 0;\n\t\t\targs[0] = args[0].replace(/%([a-zA-Z%])/g, (match, format) => {\n\t\t\t\t// If we encounter an escaped % then don't increase the array index\n\t\t\t\tif (match === '%%') {\n\t\t\t\t\treturn '%';\n\t\t\t\t}\n\t\t\t\tindex++;\n\t\t\t\tconst formatter = createDebug.formatters[format];\n\t\t\t\tif (typeof formatter === 'function') {\n\t\t\t\t\tconst val = args[index];\n\t\t\t\t\tmatch = formatter.call(self, val);\n\n\t\t\t\t\t// Now we need to remove `args[index]` since it's inlined in the `format`\n\t\t\t\t\targs.splice(index, 1);\n\t\t\t\t\tindex--;\n\t\t\t\t}\n\t\t\t\treturn match;\n\t\t\t});\n\n\t\t\t// Apply env-specific formatting (colors, etc.)\n\t\t\tcreateDebug.formatArgs.call(self, args);\n\n\t\t\tconst logFn = self.log || createDebug.log;\n\t\t\tlogFn.apply(self, args);\n\t\t}\n\n\t\tdebug.namespace = namespace;\n\t\tdebug.useColors = createDebug.useColors();\n\t\tdebug.color = createDebug.selectColor(namespace);\n\t\tdebug.extend = extend;\n\t\tdebug.destroy = createDebug.destroy; // XXX Temporary. Will be removed in the next major release.\n\n\t\tObject.defineProperty(debug, 'enabled', {\n\t\t\tenumerable: true,\n\t\t\tconfigurable: false,\n\t\t\tget: () => {\n\t\t\t\tif (enableOverride !== null) {\n\t\t\t\t\treturn enableOverride;\n\t\t\t\t}\n\t\t\t\tif (namespacesCache !== createDebug.namespaces) {\n\t\t\t\t\tnamespacesCache = createDebug.namespaces;\n\t\t\t\t\tenabledCache = createDebug.enabled(namespace);\n\t\t\t\t}\n\n\t\t\t\treturn enabledCache;\n\t\t\t},\n\t\t\tset: v => {\n\t\t\t\tenableOverride = v;\n\t\t\t}\n\t\t});\n\n\t\t// Env-specific initialization logic for debug instances\n\t\tif (typeof createDebug.init === 'function') {\n\t\t\tcreateDebug.init(debug);\n\t\t}\n\n\t\treturn debug;\n\t}\n\n\tfunction extend(namespace, delimiter) {\n\t\tconst newDebug = createDebug(this.namespace + (typeof delimiter === 'undefined' ? ':' : delimiter) + namespace);\n\t\tnewDebug.log = this.log;\n\t\treturn newDebug;\n\t}\n\n\t/**\n\t* Enables a debug mode by namespaces. This can include modes\n\t* separated by a colon and wildcards.\n\t*\n\t* @param {String} namespaces\n\t* @api public\n\t*/\n\tfunction enable(namespaces) {\n\t\tcreateDebug.save(namespaces);\n\t\tcreateDebug.namespaces = namespaces;\n\n\t\tcreateDebug.names = [];\n\t\tcreateDebug.skips = [];\n\n\t\tconst split = (typeof namespaces === 'string' ? namespaces : '')\n\t\t\t.trim()\n\t\t\t.replace(/\\s+/g, ',')\n\t\t\t.split(',')\n\t\t\t.filter(Boolean);\n\n\t\tfor (const ns of split) {\n\t\t\tif (ns[0] === '-') {\n\t\t\t\tcreateDebug.skips.push(ns.slice(1));\n\t\t\t} else {\n\t\t\t\tcreateDebug.names.push(ns);\n\t\t\t}\n\t\t}\n\t}\n\n\t/**\n\t * Checks if the given string matches a namespace template, honoring\n\t * asterisks as wildcards.\n\t *\n\t * @param {String} search\n\t * @param {String} template\n\t * @return {Boolean}\n\t */\n\tfunction matchesTemplate(search, template) {\n\t\tlet searchIndex = 0;\n\t\tlet templateIndex = 0;\n\t\tlet starIndex = -1;\n\t\tlet matchIndex = 0;\n\n\t\twhile (searchIndex < search.length) {\n\t\t\tif (templateIndex < template.length && (template[templateIndex] === search[searchIndex] || template[templateIndex] === '*')) {\n\t\t\t\t// Match character or proceed with wildcard\n\t\t\t\tif (template[templateIndex] === '*') {\n\t\t\t\t\tstarIndex = templateIndex;\n\t\t\t\t\tmatchIndex = searchIndex;\n\t\t\t\t\ttemplateIndex++; // Skip the '*'\n\t\t\t\t} else {\n\t\t\t\t\tsearchIndex++;\n\t\t\t\t\ttemplateIndex++;\n\t\t\t\t}\n\t\t\t} else if (starIndex !== -1) { // eslint-disable-line no-negated-condition\n\t\t\t\t// Backtrack to the last '*' and try to match more characters\n\t\t\t\ttemplateIndex = starIndex + 1;\n\t\t\t\tmatchIndex++;\n\t\t\t\tsearchIndex = matchIndex;\n\t\t\t} else {\n\t\t\t\treturn false; // No match\n\t\t\t}\n\t\t}\n\n\t\t// Handle trailing '*' in template\n\t\twhile (templateIndex < template.length && template[templateIndex] === '*') {\n\t\t\ttemplateIndex++;\n\t\t}\n\n\t\treturn templateIndex === template.length;\n\t}\n\n\t/**\n\t* Disable debug output.\n\t*\n\t* @return {String} namespaces\n\t* @api public\n\t*/\n\tfunction disable() {\n\t\tconst namespaces = [\n\t\t\t...createDebug.names,\n\t\t\t...createDebug.skips.map(namespace => '-' + namespace)\n\t\t].join(',');\n\t\tcreateDebug.enable('');\n\t\treturn namespaces;\n\t}\n\n\t/**\n\t* Returns true if the given mode name is enabled, false otherwise.\n\t*\n\t* @param {String} name\n\t* @return {Boolean}\n\t* @api public\n\t*/\n\tfunction enabled(name) {\n\t\tfor (const skip of createDebug.skips) {\n\t\t\tif (matchesTemplate(name, skip)) {\n\t\t\t\treturn false;\n\t\t\t}\n\t\t}\n\n\t\tfor (const ns of createDebug.names) {\n\t\t\tif (matchesTemplate(name, ns)) {\n\t\t\t\treturn true;\n\t\t\t}\n\t\t}\n\n\t\treturn false;\n\t}\n\n\t/**\n\t* Coerce `val`.\n\t*\n\t* @param {Mixed} val\n\t* @return {Mixed}\n\t* @api private\n\t*/\n\tfunction coerce(val) {\n\t\tif (val instanceof Error) {\n\t\t\treturn val.stack || val.message;\n\t\t}\n\t\treturn val;\n\t}\n\n\t/**\n\t* XXX DO NOT USE. This is a temporary stub function.\n\t* XXX It WILL be removed in the next major release.\n\t*/\n\tfunction destroy() {\n\t\tconsole.warn('Instance method `debug.destroy()` is deprecated and no longer does anything. It will be removed in the next major version of `debug`.');\n\t}\n\n\tcreateDebug.enable(createDebug.load());\n\n\treturn createDebug;\n}\n\nmodule.exports = setup;\n","/* eslint-env browser */\n\n/**\n * This is the web browser implementation of `debug()`.\n */\n\nexports.formatArgs = formatArgs;\nexports.save = save;\nexports.load = load;\nexports.useColors = useColors;\nexports.storage = localstorage();\nexports.destroy = (() => {\n\tlet warned = false;\n\n\treturn () => {\n\t\tif (!warned) {\n\t\t\twarned = true;\n\t\t\tconsole.warn('Instance method `debug.destroy()` is deprecated and no longer does anything. It will be removed in the next major version of `debug`.');\n\t\t}\n\t};\n})();\n\n/**\n * Colors.\n */\n\nexports.colors = [\n\t'#0000CC',\n\t'#0000FF',\n\t'#0033CC',\n\t'#0033FF',\n\t'#0066CC',\n\t'#0066FF',\n\t'#0099CC',\n\t'#0099FF',\n\t'#00CC00',\n\t'#00CC33',\n\t'#00CC66',\n\t'#00CC99',\n\t'#00CCCC',\n\t'#00CCFF',\n\t'#3300CC',\n\t'#3300FF',\n\t'#3333CC',\n\t'#3333FF',\n\t'#3366CC',\n\t'#3366FF',\n\t'#3399CC',\n\t'#3399FF',\n\t'#33CC00',\n\t'#33CC33',\n\t'#33CC66',\n\t'#33CC99',\n\t'#33CCCC',\n\t'#33CCFF',\n\t'#6600CC',\n\t'#6600FF',\n\t'#6633CC',\n\t'#6633FF',\n\t'#66CC00',\n\t'#66CC33',\n\t'#9900CC',\n\t'#9900FF',\n\t'#9933CC',\n\t'#9933FF',\n\t'#99CC00',\n\t'#99CC33',\n\t'#CC0000',\n\t'#CC0033',\n\t'#CC0066',\n\t'#CC0099',\n\t'#CC00CC',\n\t'#CC00FF',\n\t'#CC3300',\n\t'#CC3333',\n\t'#CC3366',\n\t'#CC3399',\n\t'#CC33CC',\n\t'#CC33FF',\n\t'#CC6600',\n\t'#CC6633',\n\t'#CC9900',\n\t'#CC9933',\n\t'#CCCC00',\n\t'#CCCC33',\n\t'#FF0000',\n\t'#FF0033',\n\t'#FF0066',\n\t'#FF0099',\n\t'#FF00CC',\n\t'#FF00FF',\n\t'#FF3300',\n\t'#FF3333',\n\t'#FF3366',\n\t'#FF3399',\n\t'#FF33CC',\n\t'#FF33FF',\n\t'#FF6600',\n\t'#FF6633',\n\t'#FF9900',\n\t'#FF9933',\n\t'#FFCC00',\n\t'#FFCC33'\n];\n\n/**\n * Currently only WebKit-based Web Inspectors, Firefox >= v31,\n * and the Firebug extension (any Firefox version) are known\n * to support \"%c\" CSS customizations.\n *\n * TODO: add a `localStorage` variable to explicitly enable/disable colors\n */\n\n// eslint-disable-next-line complexity\nfunction useColors() {\n\t// NB: In an Electron preload script, document will be defined but not fully\n\t// initialized. Since we know we're in Chrome, we'll just detect this case\n\t// explicitly\n\tif (typeof window !== 'undefined' && window.process && (window.process.type === 'renderer' || window.process.__nwjs)) {\n\t\treturn true;\n\t}\n\n\t// Internet Explorer and Edge do not support colors.\n\tif (typeof navigator !== 'undefined' && navigator.userAgent && navigator.userAgent.toLowerCase().match(/(edge|trident)\\/(\\d+)/)) {\n\t\treturn false;\n\t}\n\n\tlet m;\n\n\t// Is webkit? http://stackoverflow.com/a/16459606/376773\n\t// document is undefined in react-native: https://github.com/facebook/react-native/pull/1632\n\t// eslint-disable-next-line no-return-assign\n\treturn (typeof document !== 'undefined' && document.documentElement && document.documentElement.style && document.documentElement.style.WebkitAppearance) ||\n\t\t// Is firebug? http://stackoverflow.com/a/398120/376773\n\t\t(typeof window !== 'undefined' && window.console && (window.console.firebug || (window.console.exception && window.console.table))) ||\n\t\t// Is firefox >= v31?\n\t\t// https://developer.mozilla.org/en-US/docs/Tools/Web_Console#Styling_messages\n\t\t(typeof navigator !== 'undefined' && navigator.userAgent && (m = navigator.userAgent.toLowerCase().match(/firefox\\/(\\d+)/)) && parseInt(m[1], 10) >= 31) ||\n\t\t// Double check webkit in userAgent just in case we are in a worker\n\t\t(typeof navigator !== 'undefined' && navigator.userAgent && navigator.userAgent.toLowerCase().match(/applewebkit\\/(\\d+)/));\n}\n\n/**\n * Colorize log arguments if enabled.\n *\n * @api public\n */\n\nfunction formatArgs(args) {\n\targs[0] = (this.useColors ? '%c' : '') +\n\t\tthis.namespace +\n\t\t(this.useColors ? ' %c' : ' ') +\n\t\targs[0] +\n\t\t(this.useColors ? '%c ' : ' ') +\n\t\t'+' + module.exports.humanize(this.diff);\n\n\tif (!this.useColors) {\n\t\treturn;\n\t}\n\n\tconst c = 'color: ' + this.color;\n\targs.splice(1, 0, c, 'color: inherit');\n\n\t// The final \"%c\" is somewhat tricky, because there could be other\n\t// arguments passed either before or after the %c, so we need to\n\t// figure out the correct index to insert the CSS into\n\tlet index = 0;\n\tlet lastC = 0;\n\targs[0].replace(/%[a-zA-Z%]/g, match => {\n\t\tif (match === '%%') {\n\t\t\treturn;\n\t\t}\n\t\tindex++;\n\t\tif (match === '%c') {\n\t\t\t// We only are interested in the *last* %c\n\t\t\t// (the user may have provided their own)\n\t\t\tlastC = index;\n\t\t}\n\t});\n\n\targs.splice(lastC, 0, c);\n}\n\n/**\n * Invokes `console.debug()` when available.\n * No-op when `console.debug` is not a \"function\".\n * If `console.debug` is not available, falls back\n * to `console.log`.\n *\n * @api public\n */\nexports.log = console.debug || console.log || (() => {});\n\n/**\n * Save `namespaces`.\n *\n * @param {String} namespaces\n * @api private\n */\nfunction save(namespaces) {\n\ttry {\n\t\tif (namespaces) {\n\t\t\texports.storage.setItem('debug', namespaces);\n\t\t} else {\n\t\t\texports.storage.removeItem('debug');\n\t\t}\n\t} catch (error) {\n\t\t// Swallow\n\t\t// XXX (@Qix-) should we be logging these?\n\t}\n}\n\n/**\n * Load `namespaces`.\n *\n * @return {String} returns the previously persisted debug modes\n * @api private\n */\nfunction load() {\n\tlet r;\n\ttry {\n\t\tr = exports.storage.getItem('debug') || exports.storage.getItem('DEBUG') ;\n\t} catch (error) {\n\t\t// Swallow\n\t\t// XXX (@Qix-) should we be logging these?\n\t}\n\n\t// If debug isn't set in LS, and we're in Electron, try to load $DEBUG\n\tif (!r && typeof process !== 'undefined' && 'env' in process) {\n\t\tr = process.env.DEBUG;\n\t}\n\n\treturn r;\n}\n\n/**\n * Localstorage attempts to return the localstorage.\n *\n * This is necessary because safari throws\n * when a user disables cookies/localstorage\n * and you attempt to access it.\n *\n * @return {LocalStorage}\n * @api private\n */\n\nfunction localstorage() {\n\ttry {\n\t\t// TVMLKit (Apple TV JS Runtime) does not have a window object, just localStorage in the global context\n\t\t// The Browser also has localStorage in the global context.\n\t\treturn localStorage;\n\t} catch (error) {\n\t\t// Swallow\n\t\t// XXX (@Qix-) should we be logging these?\n\t}\n}\n\nmodule.exports = require('./common')(exports);\n\nconst {formatters} = module.exports;\n\n/**\n * Map %j to `JSON.stringify()`, since no Web Inspectors do that by default.\n */\n\nformatters.j = function (v) {\n\ttry {\n\t\treturn JSON.stringify(v);\n\t} catch (error) {\n\t\treturn '[UnexpectedJSONParseError]: ' + error.message;\n\t}\n};\n","import process from 'node:process';\nimport os from 'node:os';\nimport tty from 'node:tty';\n\n// From: https://github.com/sindresorhus/has-flag/blob/main/index.js\n/// function hasFlag(flag, argv = globalThis.Deno?.args ?? process.argv) {\nfunction hasFlag(flag, argv = globalThis.Deno ? globalThis.Deno.args : process.argv) {\n\tconst prefix = flag.startsWith('-') ? '' : (flag.length === 1 ? '-' : '--');\n\tconst position = argv.indexOf(prefix + flag);\n\tconst terminatorPosition = argv.indexOf('--');\n\treturn position !== -1 && (terminatorPosition === -1 || position < terminatorPosition);\n}\n\nconst {env} = process;\n\nlet flagForceColor;\nif (\n\thasFlag('no-color')\n\t|| hasFlag('no-colors')\n\t|| hasFlag('color=false')\n\t|| hasFlag('color=never')\n) {\n\tflagForceColor = 0;\n} else if (\n\thasFlag('color')\n\t|| hasFlag('colors')\n\t|| hasFlag('color=true')\n\t|| hasFlag('color=always')\n) {\n\tflagForceColor = 1;\n}\n\nfunction envForceColor() {\n\tif (!('FORCE_COLOR' in env)) {\n\t\treturn;\n\t}\n\n\tif (env.FORCE_COLOR === 'true') {\n\t\treturn 1;\n\t}\n\n\tif (env.FORCE_COLOR === 'false') {\n\t\treturn 0;\n\t}\n\n\tif (env.FORCE_COLOR.length === 0) {\n\t\treturn 1;\n\t}\n\n\tconst level = Math.min(Number.parseInt(env.FORCE_COLOR, 10), 3);\n\n\tif (![0, 1, 2, 3].includes(level)) {\n\t\treturn;\n\t}\n\n\treturn level;\n}\n\nfunction translateLevel(level) {\n\tif (level === 0) {\n\t\treturn false;\n\t}\n\n\treturn {\n\t\tlevel,\n\t\thasBasic: true,\n\t\thas256: level >= 2,\n\t\thas16m: level >= 3,\n\t};\n}\n\nfunction _supportsColor(haveStream, {streamIsTTY, sniffFlags = true} = {}) {\n\tconst noFlagForceColor = envForceColor();\n\tif (noFlagForceColor !== undefined) {\n\t\tflagForceColor = noFlagForceColor;\n\t}\n\n\tconst forceColor = sniffFlags ? flagForceColor : noFlagForceColor;\n\n\tif (forceColor === 0) {\n\t\treturn 0;\n\t}\n\n\tif (sniffFlags) {\n\t\tif (hasFlag('color=16m')\n\t\t\t|| hasFlag('color=full')\n\t\t\t|| hasFlag('color=truecolor')) {\n\t\t\treturn 3;\n\t\t}\n\n\t\tif (hasFlag('color=256')) {\n\t\t\treturn 2;\n\t\t}\n\t}\n\n\t// Check for Azure DevOps pipelines.\n\t// Has to be above the `!streamIsTTY` check.\n\tif ('TF_BUILD' in env && 'AGENT_NAME' in env) {\n\t\treturn 1;\n\t}\n\n\tif (haveStream && !streamIsTTY && forceColor === undefined) {\n\t\treturn 0;\n\t}\n\n\tconst min = forceColor || 0;\n\n\tif (env.TERM === 'dumb') {\n\t\treturn min;\n\t}\n\n\tif (process.platform === 'win32') {\n\t\t// Windows 10 build 10586 is the first Windows release that supports 256 colors.\n\t\t// Windows 10 build 14931 is the first release that supports 16m/TrueColor.\n\t\tconst osRelease = os.release().split('.');\n\t\tif (\n\t\t\tNumber(osRelease[0]) >= 10\n\t\t\t&& Number(osRelease[2]) >= 10_586\n\t\t) {\n\t\t\treturn Number(osRelease[2]) >= 14_931 ? 3 : 2;\n\t\t}\n\n\t\treturn 1;\n\t}\n\n\tif ('CI' in env) {\n\t\tif (['GITHUB_ACTIONS', 'GITEA_ACTIONS', 'CIRCLECI'].some(key => key in env)) {\n\t\t\treturn 3;\n\t\t}\n\n\t\tif (['TRAVIS', 'APPVEYOR', 'GITLAB_CI', 'BUILDKITE', 'DRONE'].some(sign => sign in env) || env.CI_NAME === 'codeship') {\n\t\t\treturn 1;\n\t\t}\n\n\t\treturn min;\n\t}\n\n\tif ('TEAMCITY_VERSION' in env) {\n\t\treturn /^(9\\.(0*[1-9]\\d*)\\.|\\d{2,}\\.)/.test(env.TEAMCITY_VERSION) ? 1 : 0;\n\t}\n\n\tif (env.COLORTERM === 'truecolor') {\n\t\treturn 3;\n\t}\n\n\tif (env.TERM === 'xterm-kitty') {\n\t\treturn 3;\n\t}\n\n\tif (env.TERM === 'xterm-ghostty') {\n\t\treturn 3;\n\t}\n\n\tif (env.TERM === 'wezterm') {\n\t\treturn 3;\n\t}\n\n\tif ('TERM_PROGRAM' in env) {\n\t\tconst version = Number.parseInt((env.TERM_PROGRAM_VERSION || '').split('.')[0], 10);\n\n\t\tswitch (env.TERM_PROGRAM) {\n\t\t\tcase 'iTerm.app': {\n\t\t\t\treturn version >= 3 ? 3 : 2;\n\t\t\t}\n\n\t\t\tcase 'Apple_Terminal': {\n\t\t\t\treturn 2;\n\t\t\t}\n\t\t\t// No default\n\t\t}\n\t}\n\n\tif (/-256(color)?$/i.test(env.TERM)) {\n\t\treturn 2;\n\t}\n\n\tif (/^screen|^xterm|^vt100|^vt220|^rxvt|color|ansi|cygwin|linux/i.test(env.TERM)) {\n\t\treturn 1;\n\t}\n\n\tif ('COLORTERM' in env) {\n\t\treturn 1;\n\t}\n\n\treturn min;\n}\n\nexport function createSupportsColor(stream, options = {}) {\n\tconst level = _supportsColor(stream, {\n\t\tstreamIsTTY: stream && stream.isTTY,\n\t\t...options,\n\t});\n\n\treturn translateLevel(level);\n}\n\nconst supportsColor = {\n\tstdout: createSupportsColor({isTTY: tty.isatty(1)}),\n\tstderr: createSupportsColor({isTTY: tty.isatty(2)}),\n};\n\nexport default supportsColor;\n","/**\n * Module dependencies.\n */\n\nconst tty = require('tty');\nconst util = require('util');\n\n/**\n * This is the Node.js implementation of `debug()`.\n */\n\nexports.init = init;\nexports.log = log;\nexports.formatArgs = formatArgs;\nexports.save = save;\nexports.load = load;\nexports.useColors = useColors;\nexports.destroy = util.deprecate(\n\t() => {},\n\t'Instance method `debug.destroy()` is deprecated and no longer does anything. It will be removed in the next major version of `debug`.'\n);\n\n/**\n * Colors.\n */\n\nexports.colors = [6, 2, 3, 4, 5, 1];\n\ntry {\n\t// Optional dependency (as in, doesn't need to be installed, NOT like optionalDependencies in package.json)\n\t// eslint-disable-next-line import/no-extraneous-dependencies\n\tconst supportsColor = require('supports-color');\n\n\tif (supportsColor && (supportsColor.stderr || supportsColor).level >= 2) {\n\t\texports.colors = [\n\t\t\t20,\n\t\t\t21,\n\t\t\t26,\n\t\t\t27,\n\t\t\t32,\n\t\t\t33,\n\t\t\t38,\n\t\t\t39,\n\t\t\t40,\n\t\t\t41,\n\t\t\t42,\n\t\t\t43,\n\t\t\t44,\n\t\t\t45,\n\t\t\t56,\n\t\t\t57,\n\t\t\t62,\n\t\t\t63,\n\t\t\t68,\n\t\t\t69,\n\t\t\t74,\n\t\t\t75,\n\t\t\t76,\n\t\t\t77,\n\t\t\t78,\n\t\t\t79,\n\t\t\t80,\n\t\t\t81,\n\t\t\t92,\n\t\t\t93,\n\t\t\t98,\n\t\t\t99,\n\t\t\t112,\n\t\t\t113,\n\t\t\t128,\n\t\t\t129,\n\t\t\t134,\n\t\t\t135,\n\t\t\t148,\n\t\t\t149,\n\t\t\t160,\n\t\t\t161,\n\t\t\t162,\n\t\t\t163,\n\t\t\t164,\n\t\t\t165,\n\t\t\t166,\n\t\t\t167,\n\t\t\t168,\n\t\t\t169,\n\t\t\t170,\n\t\t\t171,\n\t\t\t172,\n\t\t\t173,\n\t\t\t178,\n\t\t\t179,\n\t\t\t184,\n\t\t\t185,\n\t\t\t196,\n\t\t\t197,\n\t\t\t198,\n\t\t\t199,\n\t\t\t200,\n\t\t\t201,\n\t\t\t202,\n\t\t\t203,\n\t\t\t204,\n\t\t\t205,\n\t\t\t206,\n\t\t\t207,\n\t\t\t208,\n\t\t\t209,\n\t\t\t214,\n\t\t\t215,\n\t\t\t220,\n\t\t\t221\n\t\t];\n\t}\n} catch (error) {\n\t// Swallow - we only care if `supports-color` is available; it doesn't have to be.\n}\n\n/**\n * Build up the default `inspectOpts` object from the environment variables.\n *\n * $ DEBUG_COLORS=no DEBUG_DEPTH=10 DEBUG_SHOW_HIDDEN=enabled node script.js\n */\n\nexports.inspectOpts = Object.keys(process.env).filter(key => {\n\treturn /^debug_/i.test(key);\n}).reduce((obj, key) => {\n\t// Camel-case\n\tconst prop = key\n\t\t.substring(6)\n\t\t.toLowerCase()\n\t\t.replace(/_([a-z])/g, (_, k) => {\n\t\t\treturn k.toUpperCase();\n\t\t});\n\n\t// Coerce string value into JS value\n\tlet val = process.env[key];\n\tif (/^(yes|on|true|enabled)$/i.test(val)) {\n\t\tval = true;\n\t} else if (/^(no|off|false|disabled)$/i.test(val)) {\n\t\tval = false;\n\t} else if (val === 'null') {\n\t\tval = null;\n\t} else {\n\t\tval = Number(val);\n\t}\n\n\tobj[prop] = val;\n\treturn obj;\n}, {});\n\n/**\n * Is stdout a TTY? Colored output is enabled when `true`.\n */\n\nfunction useColors() {\n\treturn 'colors' in exports.inspectOpts ?\n\t\tBoolean(exports.inspectOpts.colors) :\n\t\ttty.isatty(process.stderr.fd);\n}\n\n/**\n * Adds ANSI color escape codes if enabled.\n *\n * @api public\n */\n\nfunction formatArgs(args) {\n\tconst {namespace: name, useColors} = this;\n\n\tif (useColors) {\n\t\tconst c = this.color;\n\t\tconst colorCode = '\\u001B[3' + (c < 8 ? c : '8;5;' + c);\n\t\tconst prefix = ` ${colorCode};1m${name} \\u001B[0m`;\n\n\t\targs[0] = prefix + args[0].split('\\n').join('\\n' + prefix);\n\t\targs.push(colorCode + 'm+' + module.exports.humanize(this.diff) + '\\u001B[0m');\n\t} else {\n\t\targs[0] = getDate() + name + ' ' + args[0];\n\t}\n}\n\nfunction getDate() {\n\tif (exports.inspectOpts.hideDate) {\n\t\treturn '';\n\t}\n\treturn new Date().toISOString() + ' ';\n}\n\n/**\n * Invokes `util.formatWithOptions()` with the specified arguments and writes to stderr.\n */\n\nfunction log(...args) {\n\treturn process.stderr.write(util.formatWithOptions(exports.inspectOpts, ...args) + '\\n');\n}\n\n/**\n * Save `namespaces`.\n *\n * @param {String} namespaces\n * @api private\n */\nfunction save(namespaces) {\n\tif (namespaces) {\n\t\tprocess.env.DEBUG = namespaces;\n\t} else {\n\t\t// If you set a process.env field to null or undefined, it gets cast to the\n\t\t// string 'null' or 'undefined'. Just delete instead.\n\t\tdelete process.env.DEBUG;\n\t}\n}\n\n/**\n * Load `namespaces`.\n *\n * @return {String} returns the previously persisted debug modes\n * @api private\n */\n\nfunction load() {\n\treturn process.env.DEBUG;\n}\n\n/**\n * Init logic for `debug` instances.\n *\n * Create a new `inspectOpts` object in case `useColors` is set\n * differently for a particular `debug` instance.\n */\n\nfunction init(debug) {\n\tdebug.inspectOpts = {};\n\n\tconst keys = Object.keys(exports.inspectOpts);\n\tfor (let i = 0; i < keys.length; i++) {\n\t\tdebug.inspectOpts[keys[i]] = exports.inspectOpts[keys[i]];\n\t}\n}\n\nmodule.exports = require('./common')(exports);\n\nconst {formatters} = module.exports;\n\n/**\n * Map %o to `util.inspect()`, all on a single line.\n */\n\nformatters.o = function (v) {\n\tthis.inspectOpts.colors = this.useColors;\n\treturn util.inspect(v, this.inspectOpts)\n\t\t.split('\\n')\n\t\t.map(str => str.trim())\n\t\t.join(' ');\n};\n\n/**\n * Map %O to `util.inspect()`, allowing multiple lines if needed.\n */\n\nformatters.O = function (v) {\n\tthis.inspectOpts.colors = this.useColors;\n\treturn util.inspect(v, this.inspectOpts);\n};\n","/**\n * Detect Electron renderer / nwjs process, which is node, but we should\n * treat as a browser.\n */\n\nif (typeof process === 'undefined' || process.type === 'renderer' || process.browser === true || process.__nwjs) {\n\tmodule.exports = require('./browser.js');\n} else {\n\tmodule.exports = require('./node.js');\n}\n",null,null,null,null,"{\n \"name\": \"mixpanel\",\n \"description\": \"A simple server-side API for mixpanel\",\n \"keywords\": [\n \"mixpanel\",\n \"analytics\",\n \"api\",\n \"stats\"\n ],\n \"version\": \"0.20.0\",\n \"homepage\": \"https://github.com/mixpanel/mixpanel-node\",\n \"author\": \"Carl Sverre\",\n \"license\": \"MIT\",\n \"main\": \"lib/mixpanel-node\",\n \"directories\": {\n \"lib\": \"lib\"\n },\n \"repository\": {\n \"type\": \"git\",\n \"url\": \"git+ssh://git@github.com/mixpanel/mixpanel-node.git\"\n },\n \"engines\": {\n \"node\": \">=10.0\"\n },\n \"scripts\": {\n \"test\": \"vitest\",\n \"format\": \"prettier --write .\",\n \"check-format\": \"prettier --check .\",\n \"lint\": \"oxlint .\"\n },\n \"types\": \"./lib/mixpanel-node.d.ts\",\n \"devDependencies\": {\n \"@types/node\": \"^24.10.1\",\n \"@vitest/coverage-v8\": \"^4.0.8\",\n \"nock\": \"^14.0.10\",\n \"oxlint\": \"^1.16.0\",\n \"prettier\": \"^3.6.2\",\n \"proxyquire\": \"^2.1.3\",\n \"typescript\": \"^5.9.3\",\n \"vitest\": \"^4.0.8\"\n },\n \"dependencies\": {\n \"https-proxy-agent\": \"7.0.6\",\n \"json-logic-js\": \"2.0.5\"\n }\n}\n","/**\n * helper to wait for all callbacks to complete; similar to `Promise.all`\n * exposed to metrics object for unit tests\n * @param {Array} requests\n * @param {Function} handler\n * @param {Function} callback\n */\nexports.async_all = function (requests, handler, callback) {\n let total = requests.length,\n errors = null,\n results = [],\n done = function (err, result) {\n if (err) {\n // errors are `null` unless there is an error, which allows for promisification\n errors = errors || [];\n errors.push(err);\n }\n results.push(result);\n if (--total === 0) {\n callback(errors, results);\n }\n };\n\n if (total === 0) {\n callback(errors, results);\n } else {\n for (let i = 0, l = requests.length; i < l; i++) {\n handler(requests[i], done);\n }\n }\n};\n\n/**\n * Validate type of time property, and convert to Unix timestamp if necessary\n * @param {Date|number} time - value to check\n * @returns {number} Unix timestamp\n */\nexports.ensure_timestamp = function (time) {\n if (!(time instanceof Date || typeof time === \"number\")) {\n throw new Error(\n \"`time` property must be a Date or Unix timestamp and is only required for `import` endpoint\",\n );\n }\n return time instanceof Date ? time.getTime() : time;\n};\n\n/**\n * Asserts that the provided logger object is valid\n * @param {CustomLogger} logger - The logger object to be validated\n * @throws {TypeError} If the logger object is not a valid Logger object or\n * if it is missing any of the required methods\n */\nexports.assert_logger = function (logger) {\n if (typeof logger !== \"object\") {\n throw new TypeError(`\"logger\" must be a valid Logger object`);\n }\n\n [\"trace\", \"debug\", \"info\", \"warn\", \"error\"].forEach((method) => {\n if (typeof logger[method] !== \"function\") {\n throw new TypeError(`Logger object missing \"${method}\" method`);\n }\n });\n};\n","/**\n * Mixin with profile-related helpers (for people and groups)\n */\n\nconst { ensure_timestamp } = require(\"./utils\");\n\nfunction merge_modifiers(data, modifiers) {\n if (modifiers) {\n if (modifiers.$ignore_alias) {\n data.$ignore_alias = modifiers.$ignore_alias;\n }\n if (modifiers.$ignore_time) {\n data.$ignore_time = modifiers.$ignore_time;\n }\n if (modifiers.hasOwnProperty(\"$ip\")) {\n data.$ip = modifiers.$ip;\n }\n if (modifiers.hasOwnProperty(\"$time\")) {\n data.$time = ensure_timestamp(modifiers.$time);\n }\n if (\n modifiers.hasOwnProperty(\"$latitude\") &&\n modifiers.hasOwnProperty(\"$longitude\")\n ) {\n data.$latitude = modifiers.$latitude;\n data.$longitude = modifiers.$longitude;\n }\n }\n return data;\n}\nexports.merge_modifiers = merge_modifiers;\n\nexports.ProfileHelpers = (Base = Object) =>\n class extends Base {\n get token() {\n return this.mixpanel.token;\n }\n\n get config() {\n return this.mixpanel.config;\n }\n\n _set(prop, to, modifiers, callback, { identifiers, set_once = false }) {\n let $set = {};\n\n if (typeof prop === \"object\") {\n if (typeof to === \"object\") {\n callback = modifiers;\n modifiers = to;\n } else {\n callback = to;\n }\n $set = prop;\n } else {\n $set[prop] = to;\n if (typeof modifiers === \"function\" || !modifiers) {\n callback = modifiers;\n }\n }\n\n let data = {\n $token: this.token,\n ...identifiers,\n };\n\n const set_key = set_once ? \"$set_once\" : \"$set\";\n data[set_key] = $set;\n\n if (\"ip\" in $set) {\n data.$ip = $set.ip;\n delete $set.ip;\n }\n\n if ($set.$ignore_time) {\n data.$ignore_time = $set.$ignore_time;\n delete $set.$ignore_time;\n }\n\n data = merge_modifiers(data, modifiers);\n\n if (this.config.debug) {\n this.mixpanel.config.logger.debug(\n `Sending the following data to Mixpanel (${this.endpoint})`,\n { data },\n );\n }\n\n this.mixpanel.send_request(\n { method: \"GET\", endpoint: this.endpoint, data },\n callback,\n );\n }\n\n _delete_profile({ identifiers, modifiers, callback }) {\n let data = {\n $delete: \"\",\n $token: this.token,\n ...identifiers,\n };\n\n if (typeof modifiers === \"function\") {\n callback = modifiers;\n }\n\n data = merge_modifiers(data, modifiers);\n\n if (this.config.debug) {\n this.mixpanel.config.logger.debug(\"Deleting profile\", { identifiers });\n }\n\n this.mixpanel.send_request(\n { method: \"GET\", endpoint: this.endpoint, data },\n callback,\n );\n }\n\n _remove({ identifiers, data, modifiers, callback }) {\n let $remove = {};\n\n if (typeof data !== \"object\" || Array.isArray(data)) {\n if (this.config.debug) {\n this.mixpanel.config.logger.error(\n \"Invalid value passed to #remove - data must be an object with scalar values\",\n );\n }\n return;\n }\n\n for (const [key, val] of Object.entries(data)) {\n if (typeof val === \"string\" || typeof val === \"number\") {\n $remove[key] = val;\n } else {\n if (this.config.debug) {\n this.mixpanel.config.logger.error(\n \"Invalid argument passed to #remove - values must be scalar\",\n { key, value: val },\n );\n }\n return;\n }\n }\n\n if (Object.keys($remove).length === 0) {\n return;\n }\n\n data = {\n $remove: $remove,\n $token: this.token,\n ...identifiers,\n };\n\n if (typeof modifiers === \"function\") {\n callback = modifiers;\n }\n\n data = merge_modifiers(data, modifiers);\n\n if (this.config.debug) {\n this.mixpanel.config.logger.debug(\n `Sending the following data to Mixpanel (${this.endpoint})`,\n { data },\n );\n }\n\n this.mixpanel.send_request(\n { method: \"GET\", endpoint: this.endpoint, data },\n callback,\n );\n }\n\n _union({ identifiers, data, modifiers, callback }) {\n let $union = {};\n\n if (typeof data !== \"object\" || Array.isArray(data)) {\n if (this.config.debug) {\n this.mixpanel.config.logger.error(\n \"Invalid value passed to #union - data must be an object with scalar or array values\",\n );\n }\n return;\n }\n\n for (const [key, val] of Object.entries(data)) {\n if (Array.isArray(val)) {\n const merge_values = val.filter(function (v) {\n return typeof v === \"string\" || typeof v === \"number\";\n });\n if (merge_values.length > 0) {\n $union[key] = merge_values;\n }\n } else if (typeof val === \"string\" || typeof val === \"number\") {\n $union[key] = [val];\n } else {\n if (this.config.debug) {\n this.mixpanel.config.logger.error(\n \"Invalid argument passed to #union - values must be a scalar value or array\",\n { key, value: val },\n );\n }\n }\n }\n\n if (Object.keys($union).length === 0) {\n return;\n }\n\n data = {\n $union: $union,\n $token: this.token,\n ...identifiers,\n };\n\n if (typeof modifiers === \"function\") {\n callback = modifiers;\n }\n\n data = merge_modifiers(data, modifiers);\n\n if (this.config.debug) {\n this.mixpanel.config.logger.debug(\n `Sending the following data to Mixpanel (${this.endpoint})`,\n { data },\n );\n }\n\n this.mixpanel.send_request(\n { method: \"GET\", endpoint: this.endpoint, data },\n callback,\n );\n }\n\n _unset({ identifiers, prop, modifiers, callback }) {\n let $unset = [];\n\n if (Array.isArray(prop)) {\n $unset = prop;\n } else if (typeof prop === \"string\") {\n $unset = [prop];\n } else {\n if (this.config.debug) {\n this.mixpanel.config.logger.error(\n \"Invalid argument passed to #unset - must be a string or array\",\n { prop },\n );\n }\n return;\n }\n\n let data = {\n $unset: $unset,\n $token: this.token,\n ...identifiers,\n };\n\n if (typeof modifiers === \"function\") {\n callback = modifiers;\n }\n\n data = merge_modifiers(data, modifiers);\n\n if (this.config.debug) {\n this.mixpanel.config.logger.debug(\n `Sending the following data to Mixpanel (${this.endpoint})`,\n { data },\n );\n }\n\n this.mixpanel.send_request(\n { method: \"GET\", endpoint: this.endpoint, data },\n callback,\n );\n }\n };\n","/**\n * Group profile methods. Learn more: https://help.mixpanel.com/hc/en-us/articles/360025333632\n */\n\nconst { ProfileHelpers } = require(\"./profile_helpers\");\n\nclass MixpanelGroups extends ProfileHelpers() {\n constructor(mp_instance) {\n super();\n this.mixpanel = mp_instance;\n this.endpoint = \"/groups\";\n }\n\n /** groups.set_once(group_key, group_id, prop, to, modifiers, callback)\n ---\n The same as groups.set, but adds a property value to a group only if it has not been set before.\n */\n set_once(group_key, group_id, prop, to, modifiers, callback) {\n const identifiers = { $group_key: group_key, $group_id: group_id };\n this._set(prop, to, modifiers, callback, { identifiers, set_once: true });\n }\n\n /**\n groups.set(group_key, group_id, prop, to, modifiers, callback)\n ---\n set properties on a group profile\n\n usage:\n\n mixpanel.groups.set('company', 'Acme Inc.', '$name', 'Acme Inc.');\n\n mixpanel.groups.set('company', 'Acme Inc.', {\n 'Industry': 'widgets',\n '$name': 'Acme Inc.',\n });\n */\n set(group_key, group_id, prop, to, modifiers, callback) {\n const identifiers = { $group_key: group_key, $group_id: group_id };\n this._set(prop, to, modifiers, callback, { identifiers });\n }\n\n /**\n groups.delete_group(group_key, group_id, modifiers, callback)\n ---\n delete a group profile permanently\n\n usage:\n\n mixpanel.groups.delete_group('company', 'Acme Inc.');\n */\n delete_group(group_key, group_id, modifiers, callback) {\n const identifiers = { $group_key: group_key, $group_id: group_id };\n this._delete_profile({ identifiers, modifiers, callback });\n }\n\n /**\n groups.remove(group_key, group_id, data, modifiers, callback)\n ---\n remove a value from a list-valued group profile property.\n\n usage:\n\n mixpanel.groups.remove('company', 'Acme Inc.', {'products': 'anvil'});\n\n mixpanel.groups.remove('company', 'Acme Inc.', {\n 'products': 'anvil',\n 'customer segments': 'coyotes'\n });\n */\n remove(group_key, group_id, data, modifiers, callback) {\n const identifiers = { $group_key: group_key, $group_id: group_id };\n this._remove({ identifiers, data, modifiers, callback });\n }\n\n /**\n groups.union(group_key, group_id, data, modifiers, callback)\n ---\n merge value(s) into a list-valued group profile property.\n\n usage:\n\n mixpanel.groups.union('company', 'Acme Inc.', {'products': 'anvil'});\n\n mixpanel.groups.union('company', 'Acme Inc.', {'products': ['anvil'], 'customer segments': ['coyotes']});\n */\n union(group_key, group_id, data, modifiers, callback) {\n const identifiers = { $group_key: group_key, $group_id: group_id };\n this._union({ identifiers, data, modifiers, callback });\n }\n\n /**\n groups.unset(group_key, group_id, prop, modifiers, callback)\n ---\n delete a property on a group profile\n\n usage:\n\n mixpanel.groups.unset('company', 'Acme Inc.', 'products');\n\n mixpanel.groups.unset('company', 'Acme Inc.', ['products', 'customer segments']);\n */\n unset(group_key, group_id, prop, modifiers, callback) {\n const identifiers = { $group_key: group_key, $group_id: group_id };\n this._unset({ identifiers, prop, modifiers, callback });\n }\n}\n\nexports.MixpanelGroups = MixpanelGroups;\n","const { merge_modifiers, ProfileHelpers } = require(\"./profile_helpers\");\n\nclass MixpanelPeople extends ProfileHelpers() {\n constructor(mp_instance) {\n super();\n this.mixpanel = mp_instance;\n this.endpoint = \"/engage\";\n }\n\n /** people.set_once(distinct_id, prop, to, modifiers, callback)\n ---\n The same as people.set but in the words of mixpanel:\n mixpanel.people.set_once\n\n \" This method allows you to set a user attribute, only if\n it is not currently set. It can be called multiple times\n safely, so is perfect for storing things like the first date\n you saw a user, or the referrer that brought them to your\n website for the first time. \"\n\n */\n set_once(distinct_id, prop, to, modifiers, callback) {\n const identifiers = { $distinct_id: distinct_id };\n this._set(prop, to, modifiers, callback, { identifiers, set_once: true });\n }\n\n /**\n people.set(distinct_id, prop, to, modifiers, callback)\n ---\n set properties on an user record in engage\n\n usage:\n\n mixpanel.people.set('bob', 'gender', 'm');\n\n mixpanel.people.set('joe', {\n 'company': 'acme',\n 'plan': 'premium'\n });\n */\n set(distinct_id, prop, to, modifiers, callback) {\n const identifiers = { $distinct_id: distinct_id };\n this._set(prop, to, modifiers, callback, { identifiers });\n }\n\n /**\n people.increment(distinct_id, prop, by, modifiers, callback)\n ---\n increment/decrement properties on an user record in engage\n\n usage:\n\n mixpanel.people.increment('bob', 'page_views', 1);\n\n // or, for convenience, if you're just incrementing a counter by 1, you can\n // simply do\n mixpanel.people.increment('bob', 'page_views');\n\n // to decrement a counter, pass a negative number\n mixpanel.people.increment('bob', 'credits_left', -1);\n\n // like mixpanel.people.set(), you can increment multiple properties at once:\n mixpanel.people.increment('bob', {\n counter1: 1,\n counter2: 3,\n counter3: -2\n });\n */\n increment(distinct_id, prop, by, modifiers, callback) {\n // TODO extract to ProfileHelpers\n\n const $add = {};\n\n if (typeof prop === \"object\") {\n if (typeof by === \"object\") {\n callback = modifiers;\n modifiers = by;\n } else {\n callback = by;\n }\n for (const [key, val] of Object.entries(prop)) {\n if (isNaN(parseFloat(val))) {\n if (this.mixpanel.config.debug) {\n this.mixpanel.config.logger.error(\n \"Invalid increment value passed to mixpanel.people.increment - must be a number\",\n { key, value: val },\n );\n }\n } else {\n $add[key] = val;\n }\n }\n } else {\n if (typeof by === \"number\" || !by) {\n by = by || 1;\n $add[prop] = by;\n if (typeof modifiers === \"function\") {\n callback = modifiers;\n }\n } else if (typeof by === \"function\") {\n callback = by;\n $add[prop] = 1;\n } else {\n callback = modifiers;\n modifiers = typeof by === \"object\" ? by : {};\n $add[prop] = 1;\n }\n }\n\n let data = {\n $add: $add,\n $token: this.mixpanel.token,\n $distinct_id: distinct_id,\n };\n\n data = merge_modifiers(data, modifiers);\n\n if (this.mixpanel.config.debug) {\n this.mixpanel.config.logger.debug(\n \"Sending the following data to Mixpanel (Engage)\",\n { data },\n );\n }\n\n this.mixpanel.send_request(\n { method: \"GET\", endpoint: \"/engage\", data: data },\n callback,\n );\n }\n\n /**\n people.append(distinct_id, prop, value, modifiers, callback)\n ---\n Append a value to a list-valued people analytics property.\n\n usage:\n\n // append a value to a list, creating it if needed\n mixpanel.people.append('bob', 'pages_visited', 'homepage');\n\n // like mixpanel.people.set(), you can append multiple properties at once:\n mixpanel.people.append('bob', {\n list1: 'bob',\n list2: 123\n });\n */\n append(distinct_id, prop, value, modifiers, callback) {\n // TODO extract to ProfileHelpers\n\n const $append = {};\n\n if (typeof prop === \"object\") {\n if (typeof value === \"object\") {\n callback = modifiers;\n modifiers = value;\n } else {\n callback = value;\n }\n Object.keys(prop).forEach(function (key) {\n $append[key] = prop[key];\n });\n } else {\n $append[prop] = value;\n if (typeof modifiers === \"function\") {\n callback = modifiers;\n }\n }\n\n let data = {\n $append: $append,\n $token: this.mixpanel.token,\n $distinct_id: distinct_id,\n };\n\n data = merge_modifiers(data, modifiers);\n\n if (this.mixpanel.config.debug) {\n this.mixpanel.config.logger.debug(\n \"Sending the following data to Mixpanel (Engage)\",\n { data },\n );\n }\n\n this.mixpanel.send_request(\n { method: \"GET\", endpoint: \"/engage\", data: data },\n callback,\n );\n }\n\n /**\n people.track_charge(distinct_id, amount, properties, modifiers, callback)\n ---\n Record that you have charged the current user a certain\n amount of money.\n\n usage:\n\n // charge a user $29.99\n mixpanel.people.track_charge('bob', 29.99);\n\n // charge a user $19 on the 1st of february\n mixpanel.people.track_charge('bob', 19, { '$time': new Date('feb 1 2012') });\n */\n track_charge(distinct_id, amount, properties, modifiers, callback) {\n if (typeof properties === \"function\" || !properties) {\n callback = properties || undefined;\n properties = {};\n } else {\n if (typeof modifiers === \"function\" || !modifiers) {\n callback = modifiers || undefined;\n if (properties.$ignore_time || properties.hasOwnProperty(\"$ip\")) {\n modifiers = {};\n Object.keys(properties).forEach(function (key) {\n modifiers[key] = properties[key];\n delete properties[key];\n });\n }\n }\n }\n\n if (typeof amount !== \"number\") {\n amount = parseFloat(amount);\n if (isNaN(amount)) {\n this.mixpanel.config.logger.error(\n \"Invalid value passed to mixpanel.people.track_charge - must be a number\",\n );\n return;\n }\n }\n\n properties.$amount = amount;\n\n if (properties.hasOwnProperty(\"$time\")) {\n const time = properties.$time;\n if (Object.prototype.toString.call(time) === \"[object Date]\") {\n properties.$time = time.toISOString();\n }\n }\n\n let data = {\n $append: { $transactions: properties },\n $token: this.mixpanel.token,\n $distinct_id: distinct_id,\n };\n\n data = merge_modifiers(data, modifiers);\n\n if (this.mixpanel.config.debug) {\n this.mixpanel.config.logger.debug(\n \"Sending the following data to Mixpanel (Engage)\",\n { data },\n );\n }\n\n this.mixpanel.send_request(\n { method: \"GET\", endpoint: \"/engage\", data: data },\n callback,\n );\n }\n\n /**\n people.clear_charges(distinct_id, modifiers, callback)\n ---\n Clear all the current user's transactions.\n\n usage:\n\n mixpanel.people.clear_charges('bob');\n */\n clear_charges(distinct_id, modifiers, callback) {\n let data = {\n $set: { $transactions: [] },\n $token: this.mixpanel.token,\n $distinct_id: distinct_id,\n };\n\n if (typeof modifiers === \"function\") {\n callback = modifiers;\n }\n\n data = merge_modifiers(data, modifiers);\n\n if (this.mixpanel.config.debug) {\n this.mixpanel.config.logger.debug(\"Clearing this user's charges\", {\n $distinct_id: distinct_id,\n });\n }\n\n this.mixpanel.send_request(\n { method: \"GET\", endpoint: \"/engage\", data: data },\n callback,\n );\n }\n\n /**\n people.delete_user(distinct_id, modifiers, callback)\n ---\n delete an user record in engage\n\n usage:\n\n mixpanel.people.delete_user('bob');\n */\n delete_user(distinct_id, modifiers, callback) {\n const identifiers = { $distinct_id: distinct_id };\n this._delete_profile({ identifiers, modifiers, callback });\n }\n\n /**\n people.remove(distinct_id, data, modifiers, callback)\n ---\n remove a value from a list-valued user profile property.\n\n usage:\n\n mixpanel.people.remove('bob', {'browsers': 'firefox'});\n\n mixpanel.people.remove('bob', {'browsers': 'chrome', 'os': 'linux'});\n */\n remove(distinct_id, data, modifiers, callback) {\n const identifiers = { $distinct_id: distinct_id };\n this._remove({ identifiers, data, modifiers, callback });\n }\n\n /**\n people.union(distinct_id, data, modifiers, callback)\n ---\n merge value(s) into a list-valued people analytics property.\n\n usage:\n\n mixpanel.people.union('bob', {'browsers': 'firefox'});\n\n mixpanel.people.union('bob', {'browsers': ['chrome'], os: ['linux']});\n */\n union(distinct_id, data, modifiers, callback) {\n const identifiers = { $distinct_id: distinct_id };\n this._union({ identifiers, data, modifiers, callback });\n }\n\n /**\n people.unset(distinct_id, prop, modifiers, callback)\n ---\n delete a property on an user record in engage\n\n usage:\n\n mixpanel.people.unset('bob', 'page_views');\n\n mixpanel.people.unset('bob', ['page_views', 'last_login']);\n */\n unset(distinct_id, prop, modifiers, callback) {\n const identifiers = { $distinct_id: distinct_id };\n this._unset({ identifiers, prop, modifiers, callback });\n }\n}\n\nexports.MixpanelPeople = MixpanelPeople;\n","/**\n * Utility functions for Mixpanel feature flags\n */\nconst crypto = require(\"crypto\");\n\n// Constants\nconst EXPOSURE_EVENT = \"$experiment_started\";\n\nconst REQUEST_HEADERS = {\n \"Content-Type\": \"application/json\",\n};\n\n/**\n * FNV-1a 64-bit hash function used for consistent variant assignment\n * https://www.ietf.org/archive/id/draft-eastlake-fnv-21.html#section-6.1.2\n * @param {Buffer} data - Data to hash\n * @returns {BigInt} - Hash value as BigInt\n */\nfunction _fnv1a64(data) {\n const FNV_PRIME = BigInt(\"0x100000001B3\");\n let hash = BigInt(\"0xCBF29CE484222325\");\n\n for (let i = 0; i < data.length; i++) {\n hash ^= BigInt(data[i]);\n hash *= FNV_PRIME;\n hash &= BigInt(\"0xFFFFFFFFFFFFFFFF\");\n }\n\n return hash;\n}\n\n/**\n * Normalized hash function that returns a value between 0.0 and 1.0\n * Used for variant assignment based on rollout percentages\n * @param {string} key - The key to hash (usually distinct_id or other identifier)\n * @param {string} salt - Salt value (usually flag-specific hash_salt)\n * @returns {number} - Hash value normalized to the non-inclusive range, [0.0, 1.0)\n */\nfunction normalizedHash(key, salt) {\n const combined = Buffer.from(key + salt, \"utf-8\");\n const hashValue = _fnv1a64(combined);\n return Number(hashValue % BigInt(100)) / 100.0;\n}\n\n/**\n * Prepare common query parameters for feature flags API requests\n * @param {string} token - Mixpanel project token\n * @param {string} sdkVersion - SDK version string\n * @returns {Object} - Query parameters object\n */\nfunction prepareCommonQueryParams(token, sdkVersion) {\n return {\n mp_lib: \"node\",\n $lib_version: sdkVersion,\n token: token,\n };\n}\n\n/**\n * Generate W3C traceparent header for distributed tracing\n * Format: 00-{trace-id}-{parent-id}-{trace-flags}\n * @returns {string} - traceparent header value\n */\nfunction generateTraceparent() {\n const version = \"00\";\n const traceId = crypto.randomBytes(16).toString(\"hex\");\n const parentId = crypto.randomBytes(8).toString(\"hex\");\n const traceFlags = \"01\"; // sampled\n\n return `${version}-${traceId}-${parentId}-${traceFlags}`;\n}\n\nfunction lowercaseJson(obj, lowercaseKeys) {\n if (obj === null || obj === undefined) {\n return obj;\n } else if (typeof obj === \"string\") {\n return obj.toLowerCase();\n } else if (typeof obj === \"object\") {\n if (Array.isArray(obj)) {\n return obj.map((item) => lowercaseJson(item, lowercaseKeys));\n } else {\n return Object.fromEntries(\n Object.entries(obj).map(([k, v]) => [\n lowercaseKeys ? k.toLowerCase() : k,\n lowercaseJson(v, lowercaseKeys),\n ]),\n );\n }\n } else {\n return obj;\n }\n}\n\nfunction lowercaseAllKeysAndValues(obj) {\n return lowercaseJson(obj, true);\n}\n\nfunction lowercaseLeafNodes(obj) {\n return lowercaseJson(obj, false);\n}\n\nmodule.exports = {\n EXPOSURE_EVENT,\n REQUEST_HEADERS,\n normalizedHash,\n prepareCommonQueryParams,\n generateTraceparent,\n lowercaseAllKeysAndValues,\n lowercaseLeafNodes,\n};\n","/**\n * Base Feature Flags Provider\n * Contains common methods for feature flag evaluation\n */\n\nconst https = require(\"https\");\nconst packageInfo = require(\"../../package.json\");\nconst {\n prepareCommonQueryParams,\n generateTraceparent,\n EXPOSURE_EVENT,\n REQUEST_HEADERS,\n} = require(\"./utils\");\n\n/**\n * @typedef {import('./types').SelectedVariant} SelectedVariant\n * @typedef {import('./types').FlagContext} FlagContext\n */\nclass FeatureFlagsProvider {\n /**\n * @param {Object} providerConfig - Configuration object with token, api_host, request_timeout_in_seconds\n * @param {string} endpoint - API endpoint path (e.g., '/flags' or '/flags/definitions')\n * @param {Function} tracker - Function to track events (signature: track(distinct_id, event, properties, callback))\n * @param {string} evaluationMode - The feature flag evaluation mode\n * @param {CustomLogger} logger - Logger instance\n */\n constructor(providerConfig, endpoint, tracker, evaluationMode, logger) {\n this.providerConfig = providerConfig;\n this.endpoint = endpoint;\n this.tracker = tracker;\n this.evaluationMode = evaluationMode;\n this.logger = logger;\n }\n\n /**\n * Common HTTP request handler for flags API endpoints\n * @param {Object} additionalParams - Additional query parameters to append\n * @returns {Promise<Object>} - Parsed JSON response\n */\n async callFlagsEndpoint(additionalParams = null) {\n return new Promise((resolve, reject) => {\n const commonParams = prepareCommonQueryParams(\n this.providerConfig.token,\n packageInfo.version,\n );\n const params = new URLSearchParams(commonParams);\n\n if (additionalParams) {\n for (const [key, value] of Object.entries(additionalParams)) {\n params.append(key, value);\n }\n }\n\n const path = `${this.endpoint}?${params.toString()}`;\n\n const requestOptions = {\n host: this.providerConfig.api_host,\n port: 443,\n path: path,\n method: \"GET\",\n headers: {\n ...REQUEST_HEADERS,\n Authorization:\n \"Basic \" +\n Buffer.from(this.providerConfig.token + \":\").toString(\"base64\"),\n traceparent: generateTraceparent(),\n },\n timeout: this.providerConfig.request_timeout_in_seconds * 1000,\n };\n\n const request = https.request(requestOptions, (res) => {\n let data = \"\";\n\n res.on(\"data\", (chunk) => {\n data += chunk;\n });\n\n res.on(\"end\", () => {\n if (res.statusCode !== 200) {\n this.logger?.error(\n `HTTP ${res.statusCode} error calling flags endpoint: ${data}`,\n );\n return reject(new Error(`HTTP ${res.statusCode}: ${data}`));\n }\n\n try {\n const result = JSON.parse(data);\n resolve(result);\n } catch (parseErr) {\n this.logger?.error(\n `Failed to parse JSON response: ${parseErr.message}`,\n );\n reject(parseErr);\n }\n });\n });\n\n request.on(\"error\", (err) => {\n this.logger?.error(\n `Network error calling flags endpoint: ${err.message}`,\n );\n reject(err);\n });\n\n request.on(\"timeout\", () => {\n this.logger?.error(`Request timeout calling flags endpoint`);\n request.destroy();\n reject(new Error(\"Request timeout\"));\n });\n\n request.end();\n });\n }\n\n /**\n * Manually tracks a feature flag exposure event to Mixpanel\n * This provides flexibility for reporting individual exposure events when using getAllVariants\n * If using getVariantValue or getVariant, exposure events are tracked automatically by default.\n * @param {string} flagKey - The key of the feature flag\n * @param {SelectedVariant} variant - The selected variant for the feature flag\n * @param {FlagContext} context - The user context used to evaluate the feature flag\n * @param {number|null} latencyMs - Optionally included latency in milliseconds that assignment took.\n */\n trackExposureEvent(flagKey, selectedVariant, context, latencyMs = null) {\n if (!context.distinct_id) {\n this.logger?.error(\n \"Cannot track exposure event without a distinct_id in the context\",\n );\n return;\n }\n\n const properties = {\n distinct_id: context.distinct_id,\n \"Experiment name\": flagKey,\n \"Variant name\": selectedVariant.variant_key,\n $experiment_type: \"feature_flag\",\n \"Flag evaluation mode\": this.evaluationMode,\n };\n\n if (latencyMs !== null && latencyMs !== undefined) {\n properties[\"Variant fetch latency (ms)\"] = latencyMs;\n }\n\n if (selectedVariant.experiment_id !== undefined) {\n properties[\"$experiment_id\"] = selectedVariant.experiment_id;\n }\n\n if (selectedVariant.is_experiment_active !== undefined) {\n properties[\"$is_experiment_active\"] =\n selectedVariant.is_experiment_active;\n }\n\n if (selectedVariant.is_qa_tester !== undefined) {\n properties[\"$is_qa_tester\"] = selectedVariant.is_qa_tester;\n }\n\n // Use the tracker function provided (bound to the main mixpanel instance)\n this.tracker(EXPOSURE_EVENT, properties, (err) => {\n if (err) {\n this.logger?.error(\n `[flags]Failed to track exposure event for flag '${flagKey}': ${err.message}`,\n );\n }\n });\n }\n}\n\nmodule.exports = FeatureFlagsProvider;\n","/* globals define,module */\n/*\nUsing a Universal Module Loader that should be browser, require, and AMD friendly\nhttp://ricostacruz.com/cheatsheets/umdjs.html\n*/\n;(function(root, factory) {\n if (typeof define === \"function\" && define.amd) {\n define(factory);\n } else if (typeof exports === \"object\") {\n module.exports = factory();\n } else {\n root.jsonLogic = factory();\n }\n}(this, function() {\n \"use strict\";\n /* globals console:false */\n\n if ( ! Array.isArray) {\n Array.isArray = function(arg) {\n return Object.prototype.toString.call(arg) === \"[object Array]\";\n };\n }\n\n /**\n * Return an array that contains no duplicates (original not modified)\n * @param {array} array Original reference array\n * @return {array} New array with no duplicates\n */\n function arrayUnique(array) {\n var a = [];\n for (var i=0, l=array.length; i<l; i++) {\n if (a.indexOf(array[i]) === -1) {\n a.push(array[i]);\n }\n }\n return a;\n }\n\n var jsonLogic = {};\n var operations = {\n \"==\": function(a, b) {\n return a == b;\n },\n \"===\": function(a, b) {\n return a === b;\n },\n \"!=\": function(a, b) {\n return a != b;\n },\n \"!==\": function(a, b) {\n return a !== b;\n },\n \">\": function(a, b) {\n return a > b;\n },\n \">=\": function(a, b) {\n return a >= b;\n },\n \"<\": function(a, b, c) {\n return (c === undefined) ? a < b : (a < b) && (b < c);\n },\n \"<=\": function(a, b, c) {\n return (c === undefined) ? a <= b : (a <= b) && (b <= c);\n },\n \"!!\": function(a) {\n return jsonLogic.truthy(a);\n },\n \"!\": function(a) {\n return !jsonLogic.truthy(a);\n },\n \"%\": function(a, b) {\n return a % b;\n },\n \"log\": function(a) {\n console.log(a); return a;\n },\n \"in\": function(a, b) {\n if (!b || typeof b.indexOf === \"undefined\") return false;\n return (b.indexOf(a) !== -1);\n },\n \"cat\": function() {\n return Array.prototype.join.call(arguments, \"\");\n },\n \"substr\": function(source, start, end) {\n if (end < 0) {\n // JavaScript doesn't support negative end, this emulates PHP behavior\n var temp = String(source).substr(start);\n return temp.substr(0, temp.length + end);\n }\n return String(source).substr(start, end);\n },\n \"+\": function() {\n return Array.prototype.reduce.call(arguments, function(a, b) {\n return parseFloat(a, 10) + parseFloat(b, 10);\n }, 0);\n },\n \"*\": function() {\n return Array.prototype.reduce.call(arguments, function(a, b) {\n return parseFloat(a, 10) * parseFloat(b, 10);\n });\n },\n \"-\": function(a, b) {\n if (b === undefined) {\n return -a;\n } else {\n return a - b;\n }\n },\n \"/\": function(a, b) {\n return a / b;\n },\n \"min\": function() {\n return Math.min.apply(this, arguments);\n },\n \"max\": function() {\n return Math.max.apply(this, arguments);\n },\n \"merge\": function() {\n return Array.prototype.reduce.call(arguments, function(a, b) {\n return a.concat(b);\n }, []);\n },\n \"var\": function(a, b) {\n var not_found = (b === undefined) ? null : b;\n var data = this;\n if (typeof a === \"undefined\" || a===\"\" || a===null) {\n return data;\n }\n var sub_props = String(a).split(\".\");\n for (var i = 0; i < sub_props.length; i++) {\n if (data === null || data === undefined) {\n return not_found;\n }\n // Descending into data\n data = data[sub_props[i]];\n if (data === undefined) {\n return not_found;\n }\n }\n return data;\n },\n \"missing\": function() {\n /*\n Missing can receive many keys as many arguments, like {\"missing:[1,2]}\n Missing can also receive *one* argument that is an array of keys,\n which typically happens if it's actually acting on the output of another command\n (like 'if' or 'merge')\n */\n\n var missing = [];\n var keys = Array.isArray(arguments[0]) ? arguments[0] : arguments;\n\n for (var i = 0; i < keys.length; i++) {\n var key = keys[i];\n var value = jsonLogic.apply({\"var\": key}, this);\n if (value === null || value === \"\") {\n missing.push(key);\n }\n }\n\n return missing;\n },\n \"missing_some\": function(need_count, options) {\n // missing_some takes two arguments, how many (minimum) items must be present, and an array of keys (just like 'missing') to check for presence.\n var are_missing = jsonLogic.apply({\"missing\": options}, this);\n\n if (options.length - are_missing.length >= need_count) {\n return [];\n } else {\n return are_missing;\n }\n },\n };\n\n jsonLogic.is_logic = function(logic) {\n return (\n typeof logic === \"object\" && // An object\n logic !== null && // but not null\n ! Array.isArray(logic) && // and not an array\n Object.keys(logic).length === 1 // with exactly one key\n );\n };\n\n /*\n This helper will defer to the JsonLogic spec as a tie-breaker when different language interpreters define different behavior for the truthiness of primitives. E.g., PHP considers empty arrays to be falsy, but Javascript considers them to be truthy. JsonLogic, as an ecosystem, needs one consistent answer.\n\n Spec and rationale here: http://jsonlogic.com/truthy\n */\n jsonLogic.truthy = function(value) {\n if (Array.isArray(value) && value.length === 0) {\n return false;\n }\n return !! value;\n };\n\n\n jsonLogic.get_operator = function(logic) {\n return Object.keys(logic)[0];\n };\n\n jsonLogic.get_values = function(logic) {\n return logic[jsonLogic.get_operator(logic)];\n };\n\n jsonLogic.apply = function(logic, data) {\n // Does this array contain logic? Only one way to find out.\n if (Array.isArray(logic)) {\n return logic.map(function(l) {\n return jsonLogic.apply(l, data);\n });\n }\n // You've recursed to a primitive, stop!\n if ( ! jsonLogic.is_logic(logic) ) {\n return logic;\n }\n\n var op = jsonLogic.get_operator(logic);\n var values = logic[op];\n var i;\n var current;\n var scopedLogic;\n var scopedData;\n var initial;\n\n // easy syntax for unary operators, like {\"var\" : \"x\"} instead of strict {\"var\" : [\"x\"]}\n if ( ! Array.isArray(values)) {\n values = [values];\n }\n\n // 'if', 'and', and 'or' violate the normal rule of depth-first calculating consequents, let each manage recursion as needed.\n if (op === \"if\" || op == \"?:\") {\n /* 'if' should be called with a odd number of parameters, 3 or greater\n This works on the pattern:\n if( 0 ){ 1 }else{ 2 };\n if( 0 ){ 1 }else if( 2 ){ 3 }else{ 4 };\n if( 0 ){ 1 }else if( 2 ){ 3 }else if( 4 ){ 5 }else{ 6 };\n\n The implementation is:\n For pairs of values (0,1 then 2,3 then 4,5 etc)\n If the first evaluates truthy, evaluate and return the second\n If the first evaluates falsy, jump to the next pair (e.g, 0,1 to 2,3)\n given one parameter, evaluate and return it. (it's an Else and all the If/ElseIf were false)\n given 0 parameters, return NULL (not great practice, but there was no Else)\n */\n for (i = 0; i < values.length - 1; i += 2) {\n if ( jsonLogic.truthy( jsonLogic.apply(values[i], data) ) ) {\n return jsonLogic.apply(values[i+1], data);\n }\n }\n if (values.length === i+1) {\n return jsonLogic.apply(values[i], data);\n }\n return null;\n } else if (op === \"and\") { // Return first falsy, or last\n for (i=0; i < values.length; i+=1) {\n current = jsonLogic.apply(values[i], data);\n if ( ! jsonLogic.truthy(current)) {\n return current;\n }\n }\n return current; // Last\n } else if (op === \"or\") {// Return first truthy, or last\n for (i=0; i < values.length; i+=1) {\n current = jsonLogic.apply(values[i], data);\n if ( jsonLogic.truthy(current) ) {\n return current;\n }\n }\n return current; // Last\n } else if (op === \"filter\") {\n scopedData = jsonLogic.apply(values[0], data);\n scopedLogic = values[1];\n\n if ( ! Array.isArray(scopedData)) {\n return [];\n }\n // Return only the elements from the array in the first argument,\n // that return truthy when passed to the logic in the second argument.\n // For parity with JavaScript, reindex the returned array\n return scopedData.filter(function(datum) {\n return jsonLogic.truthy( jsonLogic.apply(scopedLogic, datum));\n });\n } else if (op === \"map\") {\n scopedData = jsonLogic.apply(values[0], data);\n scopedLogic = values[1];\n\n if ( ! Array.isArray(scopedData)) {\n return [];\n }\n\n return scopedData.map(function(datum) {\n return jsonLogic.apply(scopedLogic, datum);\n });\n } else if (op === \"reduce\") {\n scopedData = jsonLogic.apply(values[0], data);\n scopedLogic = values[1];\n initial = typeof values[2] !== \"undefined\" ? jsonLogic.apply(values[2], data) : null;\n\n if ( ! Array.isArray(scopedData)) {\n return initial;\n }\n\n return scopedData.reduce(\n function(accumulator, current) {\n return jsonLogic.apply(\n scopedLogic,\n {current: current, accumulator: accumulator}\n );\n },\n initial\n );\n } else if (op === \"all\") {\n scopedData = jsonLogic.apply(values[0], data);\n scopedLogic = values[1];\n // All of an empty set is false. Note, some and none have correct fallback after the for loop\n if ( ! Array.isArray(scopedData) || ! scopedData.length) {\n return false;\n }\n for (i=0; i < scopedData.length; i+=1) {\n if ( ! jsonLogic.truthy( jsonLogic.apply(scopedLogic, scopedData[i]) )) {\n return false; // First falsy, short circuit\n }\n }\n return true; // All were truthy\n } else if (op === \"none\") {\n scopedData = jsonLogic.apply(values[0], data);\n scopedLogic = values[1];\n\n if ( ! Array.isArray(scopedData) || ! scopedData.length) {\n return true;\n }\n for (i=0; i < scopedData.length; i+=1) {\n if ( jsonLogic.truthy( jsonLogic.apply(scopedLogic, scopedData[i]) )) {\n return false; // First truthy, short circuit\n }\n }\n return true; // None were truthy\n } else if (op === \"some\") {\n scopedData = jsonLogic.apply(values[0], data);\n scopedLogic = values[1];\n\n if ( ! Array.isArray(scopedData) || ! scopedData.length) {\n return false;\n }\n for (i=0; i < scopedData.length; i+=1) {\n if ( jsonLogic.truthy( jsonLogic.apply(scopedLogic, scopedData[i]) )) {\n return true; // First truthy, short circuit\n }\n }\n return false; // None were truthy\n }\n\n // Everyone else gets immediate depth-first recursion\n values = values.map(function(val) {\n return jsonLogic.apply(val, data);\n });\n\n\n // The operation is called with \"data\" bound to its \"this\" and \"values\" passed as arguments.\n // Structured commands like % or > can name formal arguments while flexible commands (like missing or merge) can operate on the pseudo-array arguments\n // https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Functions/arguments\n if (operations.hasOwnProperty(op) && typeof operations[op] === \"function\") {\n return operations[op].apply(data, values);\n } else if (op.indexOf(\".\") > 0) { // Contains a dot, and not in the 0th position\n var sub_ops = String(op).split(\".\");\n var operation = operations;\n for (i = 0; i < sub_ops.length; i++) {\n if (!operation.hasOwnProperty(sub_ops[i])) {\n throw new Error(\"Unrecognized operation \" + op +\n \" (failed at \" + sub_ops.slice(0, i+1).join(\".\") + \")\");\n }\n // Descending into operations\n operation = operation[sub_ops[i]];\n }\n\n return operation.apply(data, values);\n }\n\n throw new Error(\"Unrecognized operation \" + op );\n };\n\n jsonLogic.uses_data = function(logic) {\n var collection = [];\n\n if (jsonLogic.is_logic(logic)) {\n var op = jsonLogic.get_operator(logic);\n var values = logic[op];\n\n if ( ! Array.isArray(values)) {\n values = [values];\n }\n\n if (op === \"var\") {\n // This doesn't cover the case where the arg to var is itself a rule.\n collection.push(values[0]);\n } else {\n // Recursion!\n values.forEach(function(val) {\n collection.push.apply(collection, jsonLogic.uses_data(val) );\n });\n }\n }\n\n return arrayUnique(collection);\n };\n\n jsonLogic.add_operation = function(name, code) {\n operations[name] = code;\n };\n\n jsonLogic.rm_operation = function(name) {\n delete operations[name];\n };\n\n jsonLogic.rule_like = function(rule, pattern) {\n // console.log(\"Is \". JSON.stringify(rule) . \" like \" . JSON.stringify(pattern) . \"?\");\n if (pattern === rule) {\n return true;\n } // TODO : Deep object equivalency?\n if (pattern === \"@\") {\n return true;\n } // Wildcard!\n if (pattern === \"number\") {\n return (typeof rule === \"number\");\n }\n if (pattern === \"string\") {\n return (typeof rule === \"string\");\n }\n if (pattern === \"array\") {\n // !logic test might be superfluous in JavaScript\n return Array.isArray(rule) && ! jsonLogic.is_logic(rule);\n }\n\n if (jsonLogic.is_logic(pattern)) {\n if (jsonLogic.is_logic(rule)) {\n var pattern_op = jsonLogic.get_operator(pattern);\n var rule_op = jsonLogic.get_operator(rule);\n\n if (pattern_op === \"@\" || pattern_op === rule_op) {\n // echo \"\\nOperators match, go deeper\\n\";\n return jsonLogic.rule_like(\n jsonLogic.get_values(rule, false),\n jsonLogic.get_values(pattern, false)\n );\n }\n }\n return false; // pattern is logic, rule isn't, can't be eq\n }\n\n if (Array.isArray(pattern)) {\n if (Array.isArray(rule)) {\n if (pattern.length !== rule.length) {\n return false;\n }\n /*\n Note, array order MATTERS, because we're using this array test logic to consider arguments, where order can matter. (e.g., + is commutative, but '-' or 'if' or 'var' are NOT)\n */\n for (var i = 0; i < pattern.length; i += 1) {\n // If any fail, we fail\n if ( ! jsonLogic.rule_like(rule[i], pattern[i])) {\n return false;\n }\n }\n return true; // If they *all* passed, we pass\n } else {\n return false; // Pattern is array, rule isn't\n }\n }\n\n // Not logic, not array, not a === match for rule.\n return false;\n };\n\n return jsonLogic;\n}));\n","/**\n * Local Feature Flags Provider\n * Evaluates feature flags client-side using locally cached definitions\n */\n\n/**\n * @typedef {import('./types').SelectedVariant} SelectedVariant\n * @typedef {import('./types').FlagContext} FlagContext\n * @typedef {import('./types').LocalFlagsConfig} LocalFlagsConfig\n * @typedef {import('./types').ExperimentationFlag} ExperimentationFlag\n * @typedef {import('./types').LocalFlagsResponse} LocalFlagsResponse\n * */\n\nconst FeatureFlagsProvider = require(\"./flags\");\nconst {\n normalizedHash,\n lowercaseAllKeysAndValues,\n lowercaseLeafNodes,\n} = require(\"./utils\");\nconst { apply } = require(\"json-logic-js\");\n\nclass LocalFeatureFlagsProvider extends FeatureFlagsProvider {\n /**\n * @param {string} token - Mixpanel project token\n * @param {LocalFlagsConfig} config - Local flags configuration\n * @param {Function} tracker - Function to track events (signature: track(distinct_id, event, properties, callback))\n * @param {CustomLogger} logger - Logger\n */\n constructor(token, config, tracker, logger) {\n const mergedConfig = {\n api_host: \"api.mixpanel.com\",\n request_timeout_in_seconds: 10,\n enable_polling: true,\n polling_interval_in_seconds: 60,\n ...config,\n };\n\n const providerConfig = {\n token: token,\n api_host: mergedConfig.api_host,\n request_timeout_in_seconds: mergedConfig.request_timeout_in_seconds,\n };\n\n super(providerConfig, \"/flags/definitions\", tracker, \"local\", logger);\n\n this.config = mergedConfig;\n this.flagDefinitions = new Map();\n this.pollingInterval = null;\n }\n\n /**\n * Start polling for flag definitions.\n * Fetches immediately and then at regular intervals if polling is enabled\n * @returns {Promise<void>}\n */\n async startPollingForDefinitions() {\n try {\n await this._fetchFlagDefinitions();\n\n if (this.config.enable_polling && !this.pollingInterval) {\n this.pollingInterval = setInterval(async () => {\n try {\n await this._fetchFlagDefinitions();\n } catch (err) {\n this.logger?.error(\n `Error polling for flag definition: ${err.message}`,\n );\n }\n }, this.config.polling_interval_in_seconds * 1000);\n }\n } catch (err) {\n this.logger?.error(\n `Initial flag definitions fetch failed: ${err.message}`,\n );\n }\n }\n\n /**\n * Stop polling for flag definitions\n */\n stopPollingForDefinitions() {\n if (this.pollingInterval) {\n clearInterval(this.pollingInterval);\n this.pollingInterval = null;\n } else {\n this.logger?.warn(\n \"stopPollingForDefinitions called but polling was not active\",\n );\n }\n }\n\n /**\n * Check if a feature flag is enabled\n * This method is intended only for flags defined as Mixpanel Feature Gates (boolean flags)\n * This checks that the variant value of a selected variant is concretely the boolean 'true'\n * It does not coerce other truthy values.\n * @param {string} flagKey - Feature flag key\n * @param {FlagContext} context - Evaluation context (must include distinct_id)\n * @returns {boolean}\n */\n isEnabled(flagKey, context) {\n const value = this.getVariantValue(flagKey, false, context);\n return value === true;\n }\n\n /**\n * Get the variant value for a feature flag\n * @param {string} flagKey - Feature flag key\n * @param {*} fallbackValue - Value to return if the user context is not in the rollout for a flag or if evaluation fails\n * @param {FlagContext} context - Evaluation context\n * @param {boolean} [reportExposure=true] - Whether to track exposure event\n * @returns {*} The variant value\n */\n getVariantValue(flagKey, fallbackValue, context, reportExposure = true) {\n const result = this.getVariant(\n flagKey,\n { variant_value: fallbackValue },\n context,\n reportExposure,\n );\n return result.variant_value;\n }\n\n /**\n * Get the complete variant information for a feature flag\n * @param {string} flagKey - Feature flag key\n * @param {SelectedVariant} fallbackVariant - Variant to return if flag evaluation fails\n * @param {FlagContext} context - Evaluation context (must include distinct_id)\n * @param {boolean} [reportExposure=true] - Whether to track exposure event\n * @returns {SelectedVariant}\n */\n getVariant(flagKey, fallbackVariant, context, reportExposure = true) {\n const flag = this.flagDefinitions.get(flagKey);\n\n if (!flag) {\n this.logger?.warn(`Cannot find flag definition for key: '${flagKey}`);\n return fallbackVariant;\n }\n\n if (!Object.hasOwn(context, flag.context)) {\n this.logger?.warn(\n `The variant assignment key, '${flag.context}' for flag, '${flagKey}' is not present in the supplied user context dictionary`,\n );\n return fallbackVariant;\n }\n\n const contextValue = context[flag.context];\n\n let selectedVariant = null;\n\n const testUserVariant = this._getVariantOverrideForTestUser(flag, context);\n if (testUserVariant) {\n selectedVariant = testUserVariant;\n } else {\n const rollout = this._getAssignedRollout(flag, contextValue, context);\n if (rollout) {\n selectedVariant = this._getAssignedVariant(\n flag,\n contextValue,\n flagKey,\n rollout,\n );\n }\n }\n\n if (selectedVariant) {\n if (reportExposure) {\n this.trackExposureEvent(flagKey, selectedVariant, context);\n }\n return selectedVariant;\n }\n\n return fallbackVariant;\n }\n\n /**\n * Get all feature flag variants for the current user context\n * Exposure events are not automatically tracked when this method is used\n * @param {FlagContext} context - Evaluation context (must include distinct_id)\n * @returns {{[key: string]: SelectedVariant}}\n */\n getAllVariants(context) {\n const variants = {};\n\n for (const flagKey of this.flagDefinitions.keys()) {\n const variant = this.getVariant(flagKey, null, context, false);\n if (variant !== null) {\n variants[flagKey] = variant;\n }\n }\n\n return variants;\n }\n\n /**\n * Fetch flag definitions from API.\n * @returns {Promise<LocalFlagsResponse>}\n */\n async _fetchFlagDefinitions() {\n const response = await this.callFlagsEndpoint();\n\n const newDefinitions = new Map();\n response.flags.forEach((flag) => {\n newDefinitions.set(flag.key, flag);\n });\n\n this.flagDefinitions = newDefinitions;\n\n return response;\n }\n\n /**\n * Find a variant by key (case-insensitive) and return complete SelectedVariant\n * @param {string} variantKey - Variant key to find\n * @param {ExperimentationFlag} flag - Flag definition\n * @returns {SelectedVariant|null}\n */\n _getMatchingVariant(variantKey, flag) {\n for (const variant of flag.ruleset.variants) {\n if (variantKey.toLowerCase() === variant.key.toLowerCase()) {\n return {\n variant_key: variant.key,\n variant_value: variant.value,\n experiment_id: flag.experiment_id,\n is_experiment_active: flag.is_experiment_active,\n };\n }\n }\n return null;\n }\n\n _getVariantOverrideForTestUser(flag, context) {\n if (!flag.ruleset.test?.users) {\n return null;\n }\n\n const distinctId = context.distinct_id;\n if (!distinctId) {\n return null;\n }\n\n const variantKey = flag.ruleset.test.users[distinctId];\n if (!variantKey) {\n return null;\n }\n\n let selected_variant = this._getMatchingVariant(variantKey, flag);\n if (selected_variant) {\n selected_variant.is_qa_tester = true;\n }\n return selected_variant;\n }\n\n _getAssignedRollout(flag, contextValue, context) {\n for (let index = 0; index < flag.ruleset.rollout.length; index++) {\n const rollout = flag.ruleset.rollout[index];\n\n let salt;\n if (flag.hash_salt !== null && flag.hash_salt !== undefined) {\n salt = flag.key + flag.hash_salt + index.toString();\n } else {\n salt = flag.key + \"rollout\";\n }\n\n const rolloutHash = normalizedHash(String(contextValue), salt);\n\n if (\n rolloutHash < rollout.rollout_percentage &&\n this._isRuntimeEvaluationSatisfied(rollout, context)\n ) {\n return rollout;\n }\n }\n\n return null;\n }\n\n _getAssignedVariant(flag, contextValue, flagKey, rollout) {\n if (rollout.variant_override) {\n const variant = this._getMatchingVariant(\n rollout.variant_override.key,\n flag,\n );\n if (variant) {\n return { ...variant, is_qa_tester: false };\n }\n }\n\n const storedSalt =\n flag.hash_salt !== null && flag.hash_salt !== undefined\n ? flag.hash_salt\n : \"\";\n const salt = flagKey + storedSalt + \"variant\";\n const variantHash = normalizedHash(String(contextValue), salt);\n\n const variants = flag.ruleset.variants.map((v) => ({ ...v }));\n if (rollout.variant_splits) {\n for (const variant of variants) {\n if (variant.key in rollout.variant_splits) {\n variant.split = rollout.variant_splits[variant.key];\n }\n }\n }\n\n let selected = variants[0];\n let cumulative = 0.0;\n for (const variant of variants) {\n selected = variant;\n cumulative += variant.split || 0.0;\n if (variantHash < cumulative) {\n break;\n }\n }\n\n return {\n variant_key: selected.key,\n variant_value: selected.value,\n experiment_id: flag.experiment_id,\n is_experiment_active: flag.is_experiment_active,\n is_qa_tester: false,\n };\n }\n\n _extractRuntimeParameters(context) {\n const customProperties = context.custom_properties;\n if (!customProperties || typeof customProperties !== \"object\") {\n return null;\n }\n return lowercaseAllKeysAndValues(customProperties);\n }\n\n _isRuntimeRuleSatisfied(rollout, context) {\n try {\n return apply(\n lowercaseLeafNodes(rollout.runtime_evaluation_rule),\n this._extractRuntimeParameters(context),\n );\n } catch (error) {\n this.logger?.error(`Error evaluating runtime rule: ${error.message}`);\n return false;\n }\n }\n\n _isRuntimeEvaluationSatisfied(rollout, context) {\n if (rollout.runtime_evaluation_rule) {\n return this._isRuntimeRuleSatisfied(rollout, context);\n } else if (rollout.runtime_evaluation_definition) {\n return this._isLegacyRuntimeEvaluationSatisfied(rollout, context);\n } else {\n return true;\n }\n }\n\n _isLegacyRuntimeEvaluationSatisfied(rollout, context) {\n const customProperties = this._extractRuntimeParameters(context);\n if (!customProperties) {\n return false;\n }\n\n for (const [key, expectedValue] of Object.entries(\n rollout.runtime_evaluation_definition,\n )) {\n if (!(key in customProperties)) {\n return false;\n }\n\n const actualValue = customProperties[key];\n if (\n String(actualValue).toLowerCase() !==\n String(expectedValue).toLowerCase()\n ) {\n return false;\n }\n }\n return true;\n }\n}\n\nmodule.exports = LocalFeatureFlagsProvider;\n","/**\n * Remote Feature Flags Provider\n * Evaluates feature flags via server-side API requests\n */\n\n/**\n * @typedef {import('./types').SelectedVariant} SelectedVariant\n * @typedef {import('./types').FlagContext} FlagContext\n * @typedef {import('./types').RemoteFlagsConfig} RemoteFlagsConfig\n * @typedef {import('./types').RemoteFlagsResponse} RemoteFlagsResponse\n */\n\nconst FeatureFlagsProvider = require(\"./flags\");\n\nclass RemoteFeatureFlagsProvider extends FeatureFlagsProvider {\n /**\n * @param {string} token - Mixpanel project token\n * @param {RemoteFlagsConfig} config - Remote flags configuration\n * @param {Function} tracker - Function to track events (signature: track(distinct_id, event, properties, callback))\n * @param {CustomLogger} logger - Logger instance\n */\n constructor(token, config, tracker, logger) {\n const mergedConfig = {\n api_host: \"api.mixpanel.com\",\n request_timeout_in_seconds: 10,\n ...config,\n };\n\n const providerConfig = {\n token: token,\n api_host: mergedConfig.api_host,\n request_timeout_in_seconds: mergedConfig.request_timeout_in_seconds,\n };\n\n super(providerConfig, \"/flags\", tracker, \"remote\", logger);\n }\n\n /**\n * Get the variant value for a feature flag\n * If the user context is eligible for the rollout, one of the flag variants will be selected and an exposure event will be tracked to Mixpanel.\n * If the user context is not eligible, the fallback value is returned.\n * @param {string} flagKey - Feature flag key\n * @param {*} fallbackValue - Value to return if flag evaluation fails\n * @param {FlagContext} context - Evaluation context\n * @param {boolean} reportExposure - Whether to track exposure event\n * @returns {Promise<*>} - Variant value\n */\n async getVariantValue(\n flagKey,\n fallbackValue,\n context,\n reportExposure = true,\n ) {\n try {\n const selectedVariant = await this.getVariant(\n flagKey,\n { variant_value: fallbackValue },\n context,\n reportExposure,\n );\n return selectedVariant.variant_value;\n } catch (err) {\n this.logger?.error(\n `Failed to get variant value for flag '${flagKey}': ${err.message}`,\n );\n return fallbackValue;\n }\n }\n\n /**\n * Get the complete variant information for a feature flag\n * If the user context is eligible for the rollout, one of the flag variants will be selected and an exposure event will be tracked to Mixpanel.\n * If the user context is not eligible, the fallback value is returned.\n * @param {string} flagKey - Feature flag key\n * @param {SelectedVariant} fallbackVariant - Variant to return if flag evaluation fails\n * @param {FlagContext} context - Evaluation context\n * @param {boolean} reportExposure - Whether to track exposure event in the event that the user context is eligible for the rollout.\n * @returns {Promise<SelectedVariant>} - Selected variant\n */\n async getVariant(flagKey, fallbackVariant, context, reportExposure = true) {\n try {\n const startTime = Date.now();\n const response = await this._fetchFlags(context, flagKey);\n const latencyMs = Date.now() - startTime;\n\n const flags = response.flags || {};\n const selectedVariant = flags[flagKey];\n if (!selectedVariant) {\n return fallbackVariant;\n }\n\n if (reportExposure) {\n this.trackExposureEvent(flagKey, selectedVariant, context, latencyMs);\n }\n\n return selectedVariant;\n } catch (err) {\n this.logger?.error(\n `Failed to get variant for flag '${flagKey}': ${err.message}`,\n );\n return fallbackVariant;\n }\n }\n\n /**\n * This method is intended only for flags defined as Mixpanel Feature Gates (boolean flags)\n * This checks that the variant value of a selected variant is concretely the boolean 'true'\n * It does not coerce other truthy values.\n * @param {string} flagKey - Feature flag key\n * @param {FlagContext} context - User's evaluation context\n * @returns {Promise<boolean>} - Whether the flag is enabled\n */\n async isEnabled(flagKey, context) {\n try {\n const value = await this.getVariantValue(flagKey, false, context);\n return value === true;\n } catch (err) {\n this.logger?.error(\n `Failed to check if flag '${flagKey}' is enabled: ${err.message}`,\n );\n return false;\n }\n }\n\n /**\n * Get all feature flag variants for the current user context from remote server\n * Exposure events are not automatically tracked when this method is used\n * @param {FlagContext} context - User's evaluation context\n * @returns {Promise<{[key: string]: SelectedVariant}|null>} - Dictionary mapping flag keys to variants, or null if the call fails\n */\n async getAllVariants(context) {\n try {\n const response = await this._fetchFlags(context);\n return response.flags || {};\n } catch (err) {\n this.logger?.error(`Failed to get all remote variants: ${err.message}`);\n return null;\n }\n }\n\n /**\n * Fetch flags from remote flags evaluation API\n * @param {FlagContext} context - Evaluation context\n * @param {string} [flagKey] - Optional flag key (if omitted, fetches all flags)\n * @returns {Promise<RemoteFlagsResponse>} - API response containing flags dictionary\n */\n _fetchFlags(context, flagKey = null) {\n const additionalParams = {\n context: JSON.stringify(context),\n };\n\n if (flagKey !== null) {\n additionalParams.flag_key = flagKey;\n }\n\n return this.callFlagsEndpoint(additionalParams);\n }\n}\n\nmodule.exports = RemoteFeatureFlagsProvider;\n","/**\n * Mixpanel Feature Flags\n * Exports for local and remote feature flag evaluation\n */\n\nconst LocalFeatureFlagsProvider = require(\"./local_flags\");\nconst RemoteFeatureFlagsProvider = require(\"./remote_flags\");\n\nmodule.exports = {\n LocalFeatureFlagsProvider,\n RemoteFeatureFlagsProvider,\n};\n","/*\n Heavily inspired by the original js library copyright Mixpanel, Inc.\n (http://mixpanel.com/)\n\n Copyright (c) 2012 Carl Sverre\n\n Released under the MIT license.\n*/\n\nconst querystring = require(\"querystring\");\nconst Buffer = require(\"buffer\").Buffer;\nconst http = require(\"http\");\nconst https = require(\"https\");\nconst HttpsProxyAgent = require(\"https-proxy-agent\");\nconst url = require(\"url\");\nconst packageInfo = require(\"../package.json\");\n\nconst { async_all, ensure_timestamp, assert_logger } = require(\"./utils\");\nconst { MixpanelGroups } = require(\"./groups\");\nconst { MixpanelPeople } = require(\"./people\");\nconst {\n LocalFeatureFlagsProvider,\n RemoteFeatureFlagsProvider,\n} = require(\"./flags\");\n\nconst DEFAULT_CONFIG = {\n test: false,\n debug: false,\n verbose: false,\n host: \"api.mixpanel.com\",\n protocol: \"https\",\n path: \"\",\n keepAlive: true,\n // set this to true to automatically geolocate based on the client's ip.\n // e.g., when running under electron\n geolocate: false,\n logger: console,\n};\n\nconst create_client = function (token, config) {\n if (!token) {\n throw new Error(\n \"The Mixpanel Client needs a Mixpanel token: `init(token)`\",\n );\n }\n\n const metrics = {\n token,\n config: { ...DEFAULT_CONFIG },\n };\n const { keepAlive } = metrics.config;\n\n // mixpanel constants\n const MAX_BATCH_SIZE = 50;\n const REQUEST_LIBS = { http, https };\n const REQUEST_AGENTS = {\n http: new http.Agent({ keepAlive }),\n https: new https.Agent({ keepAlive }),\n };\n const proxyPath = process.env.HTTPS_PROXY || process.env.HTTP_PROXY;\n const proxyAgent = proxyPath\n ? new HttpsProxyAgent(\n Object.assign(url.parse(proxyPath), {\n keepAlive,\n }),\n )\n : null;\n\n /**\n * sends an async GET or POST request to mixpanel\n * for batch processes data must be send in the body of a POST\n * @param {object} options\n * @param {string} options.endpoint\n * @param {object} options.data the data to send in the request\n * @param {string} [options.method] e.g. `get` or `post`, defaults to `get`\n * @param {function} callback called on request completion or error\n */\n metrics.send_request = function (options, callback) {\n callback = callback || function () {};\n\n let content = Buffer.from(JSON.stringify(options.data)).toString(\"base64\");\n const endpoint = options.endpoint;\n const method = (options.method || \"GET\").toUpperCase();\n let query_params = {\n ip: metrics.config.geolocate ? 1 : 0,\n verbose: metrics.config.verbose ? 1 : 0,\n };\n const key = metrics.config.key;\n const secret = metrics.config.secret;\n const request_lib = REQUEST_LIBS[metrics.config.protocol];\n let request_options = {\n host: metrics.config.host,\n port: metrics.config.port,\n headers: {},\n method: method,\n };\n let request;\n\n if (!request_lib) {\n throw new Error(\n \"Mixpanel Initialization Error: Unsupported protocol \" +\n metrics.config.protocol +\n \". \" +\n \"Supported protocols are: \" +\n Object.keys(REQUEST_LIBS),\n );\n }\n\n if (method === \"POST\") {\n content = \"data=\" + content;\n request_options.headers[\"Content-Type\"] =\n \"application/x-www-form-urlencoded\";\n request_options.headers[\"Content-Length\"] = Buffer.byteLength(content);\n } else if (method === \"GET\") {\n query_params.data = content;\n }\n\n // add auth params\n if (secret) {\n if (request_lib !== https) {\n throw new Error(\"Must use HTTPS if authenticating with API Secret\");\n }\n const encoded = Buffer.from(secret + \":\").toString(\"base64\");\n request_options.headers[\"Authorization\"] = \"Basic \" + encoded;\n } else if (key) {\n query_params.api_key = key;\n } else if (endpoint === \"/import\") {\n throw new Error(\n \"The Mixpanel Client needs a Mixpanel API Secret when importing old events: `init(token, { secret: ... })`\",\n );\n }\n\n request_options.agent =\n proxyAgent || REQUEST_AGENTS[metrics.config.protocol];\n\n if (metrics.config.test) {\n query_params.test = 1;\n }\n\n request_options.path =\n metrics.config.path +\n endpoint +\n \"?\" +\n querystring.stringify(query_params);\n\n request = request_lib.request(request_options, function (res) {\n let data = \"\";\n res.on(\"data\", function (chunk) {\n data += chunk;\n });\n\n res.on(\"end\", function () {\n let e;\n if (metrics.config.verbose) {\n try {\n const result = JSON.parse(data);\n if (result.status != 1) {\n e = new Error(\"Mixpanel Server Error: \" + result.error);\n }\n } catch (ex) {\n e = new Error(\n \"Could not parse response from Mixpanel \" + ex.message,\n );\n }\n } else {\n e =\n data !== \"1\"\n ? new Error(\"Mixpanel Server Error: \" + data)\n : undefined;\n }\n\n callback(e);\n });\n });\n\n request.on(\"error\", function (e) {\n if (metrics.config.debug) {\n metrics.config.logger.error(\"Got Error: \" + e.message);\n }\n callback(e);\n });\n\n if (method === \"POST\") {\n request.write(content);\n }\n request.end();\n };\n\n /**\n * Send an event to Mixpanel, using the specified endpoint (e.g., track/import)\n * @param {string} endpoint - API endpoint name\n * @param {string} event - event name\n * @param {object} properties - event properties\n * @param {Function} [callback] - callback for request completion/error\n */\n metrics.send_event_request = function (\n endpoint,\n event,\n properties,\n callback,\n ) {\n properties.token = metrics.token;\n properties.mp_lib = \"node\";\n properties.$lib_version = packageInfo.version;\n\n const data = {\n event: event,\n properties: properties,\n };\n\n if (metrics.config.debug) {\n metrics.config.logger.debug(\"Sending the following event to Mixpanel\", {\n data,\n });\n }\n\n metrics.send_request(\n { method: \"GET\", endpoint: endpoint, data: data },\n callback,\n );\n };\n\n /**\n * breaks array into equal-sized chunks, with the last chunk being the remainder\n * @param {Array} arr\n * @param {number} size\n * @returns {Array}\n */\n const chunk = function (arr, size) {\n let chunks = [],\n i = 0,\n total = arr.length;\n\n while (i < total) {\n chunks.push(arr.slice(i, (i += size)));\n }\n return chunks;\n };\n\n /**\n * sends events in batches\n * @param {object} options\n * @param {[{}]} options.event_list array of event objects\n * @param {string} options.endpoint e.g. `/track` or `/import`\n * @param {number} [options.max_concurrent_requests] limits concurrent async requests over the network\n * @param {number} [options.max_batch_size] limits number of events sent to mixpanel per request\n * @param {Function} [callback] callback receives array of errors if any\n *\n */\n const send_batch_requests = function (options, callback) {\n const event_list = options.event_list,\n endpoint = options.endpoint,\n max_batch_size = options.max_batch_size\n ? Math.min(MAX_BATCH_SIZE, options.max_batch_size)\n : MAX_BATCH_SIZE,\n // to maintain original intention of max_batch_size; if max_batch_size is greater than 50, we assume the user is trying to set max_concurrent_requests\n max_concurrent_requests =\n options.max_concurrent_requests ||\n (options.max_batch_size > MAX_BATCH_SIZE &&\n Math.ceil(options.max_batch_size / MAX_BATCH_SIZE)),\n event_batches = chunk(event_list, max_batch_size),\n request_batches = max_concurrent_requests\n ? chunk(event_batches, max_concurrent_requests)\n : [event_batches],\n total_event_batches = event_batches.length,\n total_request_batches = request_batches.length;\n\n /**\n * sends a batch of events to mixpanel through http api\n * @param {Array} batch\n * @param {Function} cb\n */\n function send_event_batch(batch, cb) {\n if (batch.length > 0) {\n batch = batch.map(function (event) {\n if (endpoint === \"/import\" || event.properties.time) {\n // usually there will be a time property, but not required for `/track` endpoint\n event.properties.time = ensure_timestamp(event.properties.time);\n }\n event.properties.token = event.properties.token || metrics.token;\n return event;\n });\n\n // must be a POST\n metrics.send_request(\n { method: \"POST\", endpoint: endpoint, data: batch },\n cb,\n );\n }\n }\n\n /**\n * Asynchronously sends batches of requests\n * @param {number} index\n */\n function send_next_request_batch(index) {\n const request_batch = request_batches[index],\n cb = function (errors, results) {\n index += 1;\n if (index === total_request_batches) {\n callback && callback(errors, results);\n } else {\n send_next_request_batch(index);\n }\n };\n\n async_all(request_batch, send_event_batch, cb);\n }\n\n // init recursive function\n send_next_request_batch(0);\n\n if (metrics.config.debug) {\n metrics.config.logger.debug(\n \"Sending \" +\n event_list.length +\n \" events to Mixpanel in \" +\n total_event_batches +\n \" batches of events and \" +\n total_request_batches +\n \" batches of requests\",\n );\n }\n };\n\n /**\n track(event, properties, callback)\n ---\n this function sends an event to mixpanel.\n\n event:string the event name\n properties:object additional event properties to send\n callback:function(err:Error) callback is called when the request is\n finished or an error occurs\n */\n metrics.track = function (event, properties, callback) {\n if (!properties || typeof properties === \"function\") {\n callback = properties;\n properties = {};\n }\n\n // time is optional for `track`\n if (properties.time) {\n properties.time = ensure_timestamp(properties.time);\n }\n\n metrics.send_event_request(\"/track\", event, properties, callback);\n };\n\n /**\n * send a batch of events to mixpanel `track` endpoint: this should only be used if events are less than 5 days old\n * @param {Array} event_list array of event objects to track\n * @param {object} [options]\n * @param {number} [options.max_concurrent_requests] number of concurrent http requests that can be made to mixpanel\n * @param {number} [options.max_batch_size] number of events that can be sent to mixpanel per request\n * @param {Function} [callback] callback receives array of errors if any\n */\n metrics.track_batch = function (event_list, options, callback) {\n options = options || {};\n if (typeof options === \"function\") {\n callback = options;\n options = {};\n }\n const batch_options = {\n event_list: event_list,\n endpoint: \"/track\",\n max_concurrent_requests: options.max_concurrent_requests,\n max_batch_size: options.max_batch_size,\n };\n\n send_batch_requests(batch_options, callback);\n };\n\n /**\n import(event, time, properties, callback)\n ---\n This function sends an event to mixpanel using the import\n endpoint. The time argument should be either a Date or Number,\n and should signify the time the event occurred.\n\n It is highly recommended that you specify the distinct_id\n property for each event you import, otherwise the events will be\n tied to the IP address of the sending machine.\n\n For more information look at:\n https://mixpanel.com/docs/api-documentation/importing-events-older-than-31-days\n\n event:string the event name\n time:date|number the time of the event\n properties:object additional event properties to send\n callback:function(err:Error) callback is called when the request is\n finished or an error occurs\n */\n metrics.import = function (event, time, properties, callback) {\n if (!properties || typeof properties === \"function\") {\n callback = properties;\n properties = {};\n }\n\n properties.time = ensure_timestamp(time);\n\n metrics.send_event_request(\"/import\", event, properties, callback);\n };\n\n /**\n import_batch(event_list, options, callback)\n ---\n This function sends a list of events to mixpanel using the import\n endpoint. The format of the event array should be:\n\n [\n {\n \"event\": \"event name\",\n \"properties\": {\n \"time\": new Date(), // Number or Date; required for each event\n \"key\": \"val\",\n ...\n }\n },\n {\n \"event\": \"event name\",\n \"properties\": {\n \"time\": new Date() // Number or Date; required for each event\n }\n },\n ...\n ]\n\n See import() for further information about the import endpoint.\n\n Options:\n max_batch_size: the maximum number of events to be transmitted over\n the network simultaneously. useful for capping bandwidth\n usage.\n max_concurrent_requests: the maximum number of concurrent http requests that\n can be made to mixpanel; also useful for capping bandwidth.\n\n N.B.: the Mixpanel API only accepts 50 events per request, so regardless\n of max_batch_size, larger lists of events will be chunked further into\n groups of 50.\n\n event_list:array list of event names and properties\n options:object optional batch configuration\n callback:function(error_list:array) callback is called when the request is\n finished or an error occurs\n */\n metrics.import_batch = function (event_list, options, callback) {\n let batch_options;\n\n if (typeof options === \"function\" || !options) {\n callback = options;\n options = {};\n }\n batch_options = {\n event_list: event_list,\n endpoint: \"/import\",\n max_concurrent_requests: options.max_concurrent_requests,\n max_batch_size: options.max_batch_size,\n };\n send_batch_requests(batch_options, callback);\n };\n\n /**\n alias(distinct_id, alias)\n ---\n This function creates an alias for distinct_id\n\n For more information look at:\n https://mixpanel.com/docs/integration-libraries/using-mixpanel-alias\n\n distinct_id:string the current identifier\n alias:string the future alias\n */\n metrics.alias = function (distinct_id, alias, callback) {\n const properties = {\n distinct_id: distinct_id,\n alias: alias,\n };\n\n metrics.track(\"$create_alias\", properties, callback);\n };\n\n metrics.groups = new MixpanelGroups(metrics);\n metrics.people = new MixpanelPeople(metrics);\n\n /**\n set_config(config)\n ---\n Modifies the mixpanel config\n\n config:object an object with properties to override in the\n mixpanel client config\n */\n metrics.set_config = function (config) {\n if (config && config.logger !== undefined) {\n assert_logger(config.logger);\n }\n Object.assign(metrics.config, config);\n if (config.host) {\n // Split host into host and port\n const [host, port] = config.host.split(\":\");\n metrics.config.host = host;\n if (port) {\n metrics.config.port = Number(port);\n }\n }\n };\n\n if (config) {\n metrics.set_config(config);\n }\n\n // Initialize feature flags providers if configs are provided\n if (config && config.local_flags_config) {\n metrics.local_flags = new LocalFeatureFlagsProvider(\n token,\n config.local_flags_config,\n metrics.track.bind(metrics),\n config.logger,\n );\n }\n\n if (config && config.remote_flags_config) {\n metrics.remote_flags = new RemoteFeatureFlagsProvider(\n token,\n config.remote_flags_config,\n metrics.track.bind(metrics),\n config.logger,\n );\n }\n\n return metrics;\n};\n\n// module exporting\nmodule.exports = {\n init: create_client,\n};\n","/**\n * Mixpanel Subscriber for autotel\n *\n * Send events to Mixpanel for product events.\n *\n * @example\n * ```typescript\n * import { Events } from 'autotel/events';\n * import { MixpanelSubscriber } from 'autotel-subscribers/mixpanel';\n *\n * const events = new Events('checkout', {\n * subscribers: [\n * new MixpanelSubscriber({\n * token: process.env.MIXPANEL_TOKEN!\n * })\n * ]\n * });\n *\n * events.trackEvent('order.completed', { userId: '123', amount: 99.99 });\n * ```\n */\n\nimport type {\n EventSubscriber,\n EventAttributes,\n FunnelStatus,\n OutcomeStatus,\n} from 'autotel/event-subscriber';\n\nexport interface MixpanelConfig {\n /** Mixpanel project token */\n token: string;\n /** Enable/disable the subscriber */\n enabled?: boolean;\n}\n\nexport class MixpanelSubscriber implements EventSubscriber {\n readonly name = 'MixpanelSubscriber';\n readonly version = '1.0.0';\n\n private mixpanel: any;\n private enabled: boolean;\n private config: MixpanelConfig;\n private initPromise: Promise<void> | null = null;\n\n constructor(config: MixpanelConfig) {\n this.enabled = config.enabled ?? true;\n this.config = config;\n\n if (this.enabled) {\n // Start initialization immediately but don't block constructor\n this.initPromise = this.initialize();\n }\n }\n\n private async initialize(): Promise<void> {\n try {\n // Dynamic import to avoid adding mixpanel as a hard dependency\n const Mixpanel = await import('mixpanel');\n this.mixpanel = Mixpanel.default.init(this.config.token);\n } catch (error) {\n console.error(\n 'Mixpanel subscriber failed to initialize. Install mixpanel: pnpm add mixpanel',\n error,\n );\n this.enabled = false;\n }\n }\n\n private async ensureInitialized(): Promise<void> {\n if (this.initPromise) {\n await this.initPromise;\n this.initPromise = null;\n }\n }\n\n async trackEvent(name: string, attributes?: EventAttributes): Promise<void> {\n if (!this.enabled) return;\n\n await this.ensureInitialized();\n const distinctId = attributes?.userId || attributes?.user_id || 'anonymous';\n this.mixpanel?.track(name, {\n distinct_id: distinctId,\n ...attributes,\n });\n }\n\n async trackFunnelStep(\n funnelName: string,\n step: FunnelStatus,\n attributes?: EventAttributes,\n ): Promise<void> {\n if (!this.enabled) return;\n\n await this.ensureInitialized();\n const distinctId = attributes?.userId || attributes?.user_id || 'anonymous';\n this.mixpanel?.track(`${funnelName}.${step}`, {\n distinct_id: distinctId,\n funnel: funnelName,\n step,\n ...attributes,\n });\n }\n\n async trackOutcome(\n operationName: string,\n outcome: OutcomeStatus,\n attributes?: EventAttributes,\n ): Promise<void> {\n if (!this.enabled) return;\n\n await this.ensureInitialized();\n const distinctId = attributes?.userId || attributes?.user_id || 'anonymous';\n this.mixpanel?.track(`${operationName}.${outcome}`, {\n distinct_id: distinctId,\n operation: operationName,\n outcome,\n ...attributes,\n });\n }\n\n async trackValue(name: string, value: number, attributes?: EventAttributes): Promise<void> {\n if (!this.enabled) return;\n\n await this.ensureInitialized();\n const distinctId = attributes?.userId || attributes?.user_id || 'anonymous';\n this.mixpanel?.track(name, {\n distinct_id: distinctId,\n value,\n ...attributes,\n });\n }\n}\n\n"]}
|