posthog-node
Advanced tools
@@ -1,1 +0,1 @@ | ||
| {"version":3,"file":"client.d.ts","sourceRoot":"","sources":["../src/client.ts"],"names":[],"mappings":"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"} | ||
| {"version":3,"file":"client.d.ts","sourceRoot":"","sources":["../src/client.ts"],"names":[],"mappings":"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"} |
+9
-1
@@ -731,3 +731,11 @@ "use strict"; | ||
| } | ||
| const { groups, disableGeoip, flagKeys } = resolvedOptions || {}; | ||
| const { groups, disableGeoip } = resolvedOptions || {}; | ||
| const flagKeys = resolvedOptions?.flagKeys ?? void 0; | ||
| if (flagKeys?.length === 0) return new external_feature_flag_evaluations_js_namespaceObject.FeatureFlagEvaluations({ | ||
| host: this._getFeatureFlagEvaluationsHost(), | ||
| distinctId: resolvedDistinctId, | ||
| groups, | ||
| disableGeoip, | ||
| flags: {} | ||
| }); | ||
| let { onlyEvaluateLocally, personProperties, groupProperties } = resolvedOptions || {}; | ||
@@ -734,0 +742,0 @@ const adjustedProperties = this.addLocalPersonAndGroupProperties(resolvedDistinctId, groups, personProperties, groupProperties); |
+9
-1
@@ -692,3 +692,11 @@ import { version } from "./version.mjs"; | ||
| } | ||
| const { groups, disableGeoip, flagKeys } = resolvedOptions || {}; | ||
| const { groups, disableGeoip } = resolvedOptions || {}; | ||
| const flagKeys = resolvedOptions?.flagKeys ?? void 0; | ||
| if (flagKeys?.length === 0) return new FeatureFlagEvaluations({ | ||
| host: this._getFeatureFlagEvaluationsHost(), | ||
| distinctId: resolvedDistinctId, | ||
| groups, | ||
| disableGeoip, | ||
| flags: {} | ||
| }); | ||
| let { onlyEvaluateLocally, personProperties, groupProperties } = resolvedOptions || {}; | ||
@@ -695,0 +703,0 @@ const adjustedProperties = this.addLocalPersonAndGroupProperties(resolvedDistinctId, groups, personProperties, groupProperties); |
@@ -1,2 +0,2 @@ | ||
| export declare function hashSHA1(text: string): Promise<string>; | ||
| export { hashSHA1 } from '@posthog/core'; | ||
| //# sourceMappingURL=crypto.d.ts.map |
@@ -1,1 +0,1 @@ | ||
| {"version":3,"file":"crypto.d.ts","sourceRoot":"","sources":["../../../src/extensions/feature-flags/crypto.ts"],"names":[],"mappings":"AAEA,wBAAsB,QAAQ,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC,CAS5D"} | ||
| {"version":3,"file":"crypto.d.ts","sourceRoot":"","sources":["../../../src/extensions/feature-flags/crypto.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,QAAQ,EAAE,MAAM,eAAe,CAAA"} |
@@ -27,11 +27,5 @@ "use strict"; | ||
| __webpack_require__.d(__webpack_exports__, { | ||
| hashSHA1: ()=>hashSHA1 | ||
| hashSHA1: ()=>core_namespaceObject.hashSHA1 | ||
| }); | ||
| async function hashSHA1(text) { | ||
| const subtle = globalThis.crypto?.subtle; | ||
| if (!subtle) throw new Error('SubtleCrypto API not available'); | ||
| const hashBuffer = await subtle.digest('SHA-1', new TextEncoder().encode(text)); | ||
| const hashArray = Array.from(new Uint8Array(hashBuffer)); | ||
| return hashArray.map((byte)=>byte.toString(16).padStart(2, '0')).join(''); | ||
| } | ||
| const core_namespaceObject = require("@posthog/core"); | ||
| exports.hashSHA1 = __webpack_exports__.hashSHA1; | ||
@@ -38,0 +32,0 @@ for(var __webpack_i__ in __webpack_exports__)if (-1 === [ |
@@ -1,8 +0,2 @@ | ||
| async function hashSHA1(text) { | ||
| const subtle = globalThis.crypto?.subtle; | ||
| if (!subtle) throw new Error('SubtleCrypto API not available'); | ||
| const hashBuffer = await subtle.digest('SHA-1', new TextEncoder().encode(text)); | ||
| const hashArray = Array.from(new Uint8Array(hashBuffer)); | ||
| return hashArray.map((byte)=>byte.toString(16).padStart(2, '0')).join(''); | ||
| } | ||
| import { hashSHA1 } from "@posthog/core"; | ||
| export { hashSHA1 }; |
| import { FeatureFlagCondition, PostHogFeatureFlag, PropertyGroup } from '../../types'; | ||
| import type { FeatureFlagValue, JsonType, PostHogFetchOptions, PostHogFetchResponse } from '@posthog/core'; | ||
| import { InconclusiveMatchError, relativeDateParseForFeatureFlagMatching } from '@posthog/core'; | ||
| import { FlagDefinitionCacheProvider } from './cache'; | ||
@@ -8,5 +9,2 @@ type ConditionMatchResult = 'match' | 'no_match' | 'out_of_rollout_bound'; | ||
| } | ||
| declare class InconclusiveMatchError extends Error { | ||
| constructor(message: string); | ||
| } | ||
| declare class RequiresServerEvaluation extends Error { | ||
@@ -153,15 +151,4 @@ constructor(message: string); | ||
| declare function matchProperty(property: FeatureFlagCondition['properties'][number], propertyValues: Record<string, any>, warnFunction?: (msg: string) => void): boolean; | ||
| type SemverTuple = [number, number, number]; | ||
| /** | ||
| * Parse a version string into a [major, minor, patch] tuple. | ||
| * - Strips leading/trailing whitespace | ||
| * - Strips 'v' or 'V' prefix | ||
| * - Strips pre-release and build metadata (-alpha, +build) | ||
| * - Defaults missing components to 0 | ||
| * - Ignores extra components beyond the third | ||
| * - Throws InconclusiveMatchError for invalid input | ||
| */ | ||
| declare function parseSemver(value: string): SemverTuple; | ||
| declare function relativeDateParseForFeatureFlagMatching(value: string): Date | null; | ||
| declare function parseSemver(value: string): [number, number, number]; | ||
| export { FeatureFlagsPoller, matchProperty, relativeDateParseForFeatureFlagMatching, parseSemver, InconclusiveMatchError, RequiresServerEvaluation, ClientError, }; | ||
| //# sourceMappingURL=feature-flags.d.ts.map |
@@ -1,1 +0,1 @@ | ||
| {"version":3,"file":"feature-flags.d.ts","sourceRoot":"","sources":["../../../src/extensions/feature-flags/feature-flags.ts"],"names":[],"mappings":"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"} | ||
| {"version":3,"file":"feature-flags.d.ts","sourceRoot":"","sources":["../../../src/extensions/feature-flags/feature-flags.ts"],"names":[],"mappings":"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"} |
@@ -30,4 +30,4 @@ "use strict"; | ||
| ClientError: ()=>ClientError, | ||
| relativeDateParseForFeatureFlagMatching: ()=>relativeDateParseForFeatureFlagMatching, | ||
| InconclusiveMatchError: ()=>InconclusiveMatchError, | ||
| relativeDateParseForFeatureFlagMatching: ()=>core_namespaceObject.relativeDateParseForFeatureFlagMatching, | ||
| InconclusiveMatchError: ()=>core_namespaceObject.InconclusiveMatchError, | ||
| FeatureFlagsPoller: ()=>FeatureFlagsPoller, | ||
@@ -37,9 +37,3 @@ RequiresServerEvaluation: ()=>RequiresServerEvaluation | ||
| const core_namespaceObject = require("@posthog/core"); | ||
| const external_crypto_js_namespaceObject = require("./crypto.js"); | ||
| const SIXTY_SECONDS = 60000; | ||
| const LONG_SCALE = 0xfffffffffffffff; | ||
| const NULL_VALUES_ALLOWED_OPERATORS = [ | ||
| 'is_not', | ||
| 'is_set' | ||
| ]; | ||
| class ClientError extends Error { | ||
@@ -59,8 +53,2 @@ constructor(message){ | ||
| } | ||
| class InconclusiveMatchError extends Error { | ||
| constructor(message){ | ||
| super(message); | ||
| setCustomErrorPrototype(this, InconclusiveMatchError); | ||
| } | ||
| } | ||
| class RequiresServerEvaluation extends Error { | ||
@@ -126,3 +114,3 @@ constructor(message){ | ||
| } catch (e) { | ||
| if (e instanceof RequiresServerEvaluation || e instanceof InconclusiveMatchError) this.logMsgIfDebug(()=>console.debug(`${e.name} when computing flag locally: ${key}: ${e.message}`)); | ||
| if (e instanceof RequiresServerEvaluation || e instanceof core_namespaceObject.InconclusiveMatchError) this.logMsgIfDebug(()=>console.debug(`${e.name} when computing flag locally: ${key}: ${e.message}`)); | ||
| else if (e instanceof Error) this.onError?.(new Error(`Error computing flag locally: ${key}: ${e}`)); | ||
@@ -149,3 +137,3 @@ } | ||
| } catch (e) { | ||
| if (e instanceof RequiresServerEvaluation || e instanceof InconclusiveMatchError) this.logMsgIfDebug(()=>console.debug(`${e.name} when computing flag locally: ${flag.key}: ${e.message}`)); | ||
| if (e instanceof RequiresServerEvaluation || e instanceof core_namespaceObject.InconclusiveMatchError) this.logMsgIfDebug(()=>console.debug(`${e.name} when computing flag locally: ${flag.key}: ${e.message}`)); | ||
| else if (e instanceof Error) this.onError?.(new Error(`Error computing flag locally: ${flag.key}: ${e}`)); | ||
@@ -179,3 +167,3 @@ fallbackToFlags = true; | ||
| if (!flag.active) return false; | ||
| if (flag.ensure_experience_continuity) throw new InconclusiveMatchError('Flag has experience continuity enabled'); | ||
| if (flag.ensure_experience_continuity) throw new core_namespaceObject.InconclusiveMatchError('Flag has experience continuity enabled'); | ||
| const flagFilters = flag.filters || {}; | ||
@@ -187,3 +175,3 @@ const aggregation_group_type_index = flagFilters.aggregation_group_type_index; | ||
| this.logMsgIfDebug(()=>console.warn(`[FEATURE FLAGS] Unknown group type index ${aggregation_group_type_index} for feature flag ${flag.key}`)); | ||
| throw new InconclusiveMatchError('Flag has unknown group type index'); | ||
| throw new core_namespaceObject.InconclusiveMatchError('Flag has unknown group type index'); | ||
| } | ||
@@ -202,3 +190,3 @@ if (!(groupName in groups)) { | ||
| this.logMsgIfDebug(()=>console.warn(`[FEATURE FLAGS] Can't compute feature flag: ${flag.key} without $device_id, falling back to server evaluation`)); | ||
| throw new InconclusiveMatchError(`Can't compute feature flag: ${flag.key} without $device_id`); | ||
| throw new core_namespaceObject.InconclusiveMatchError(`Can't compute feature flag: ${flag.key} without $device_id`); | ||
| } | ||
@@ -218,15 +206,3 @@ return await this.matchFeatureFlagProperties(flag, bucketingValue, personProperties, evaluationContext); | ||
| getFeatureFlagPayload(key, flagValue) { | ||
| let payload = null; | ||
| if (false !== flagValue && null != flagValue) { | ||
| if ('boolean' == typeof flagValue) payload = this.featureFlagsByKey?.[key]?.filters?.payloads?.[flagValue.toString()] || null; | ||
| else if ('string' == typeof flagValue) payload = this.featureFlagsByKey?.[key]?.filters?.payloads?.[flagValue] || null; | ||
| if (null != payload) { | ||
| if ('object' == typeof payload) return payload; | ||
| if ('string' == typeof payload) try { | ||
| return JSON.parse(payload); | ||
| } catch {} | ||
| return payload; | ||
| } | ||
| } | ||
| return null; | ||
| return (0, core_namespaceObject.resolveFeatureFlagPayload)(this.featureFlagsByKey?.[key]?.filters?.payloads, flagValue); | ||
| } | ||
@@ -236,7 +212,7 @@ async evaluateFlagDependency(property, properties, evaluationContext) { | ||
| const targetFlagKey = property.key; | ||
| if (!this.featureFlagsByKey) throw new InconclusiveMatchError('Feature flags not available for dependency evaluation'); | ||
| if (!('dependency_chain' in property)) throw new InconclusiveMatchError(`Flag dependency property for '${targetFlagKey}' is missing required 'dependency_chain' field`); | ||
| if (!this.featureFlagsByKey) throw new core_namespaceObject.InconclusiveMatchError('Feature flags not available for dependency evaluation'); | ||
| if (!('dependency_chain' in property)) throw new core_namespaceObject.InconclusiveMatchError(`Flag dependency property for '${targetFlagKey}' is missing required 'dependency_chain' field`); | ||
| const dependencyChain = property.dependency_chain; | ||
| if (!Array.isArray(dependencyChain)) throw new InconclusiveMatchError(`Flag dependency property for '${targetFlagKey}' has an invalid 'dependency_chain' (expected array, got ${typeof dependencyChain})`); | ||
| if (0 === dependencyChain.length) throw new InconclusiveMatchError(`Circular dependency detected for flag '${targetFlagKey}' (empty dependency chain)`); | ||
| if (!Array.isArray(dependencyChain)) throw new core_namespaceObject.InconclusiveMatchError(`Flag dependency property for '${targetFlagKey}' has an invalid 'dependency_chain' (expected array, got ${typeof dependencyChain})`); | ||
| if (0 === dependencyChain.length) throw new core_namespaceObject.InconclusiveMatchError(`Circular dependency detected for flag '${targetFlagKey}' (empty dependency chain)`); | ||
| for (const depFlagKey of dependencyChain){ | ||
@@ -249,9 +225,9 @@ if (!(depFlagKey in evaluationCache)) { | ||
| } catch (error) { | ||
| throw new InconclusiveMatchError(`Error evaluating flag dependency '${depFlagKey}' for flag '${targetFlagKey}': ${error}`); | ||
| throw new core_namespaceObject.InconclusiveMatchError(`Error evaluating flag dependency '${depFlagKey}' for flag '${targetFlagKey}': ${error}`); | ||
| } | ||
| else evaluationCache[depFlagKey] = false; | ||
| else throw new InconclusiveMatchError(`Missing flag dependency '${depFlagKey}' for flag '${targetFlagKey}'`); | ||
| else throw new core_namespaceObject.InconclusiveMatchError(`Missing flag dependency '${depFlagKey}' for flag '${targetFlagKey}'`); | ||
| } | ||
| const cachedResult = evaluationCache[depFlagKey]; | ||
| if (null == cachedResult) throw new InconclusiveMatchError(`Dependency '${depFlagKey}' could not be evaluated`); | ||
| if (null == cachedResult) throw new core_namespaceObject.InconclusiveMatchError(`Dependency '${depFlagKey}' could not be evaluated`); | ||
| } | ||
@@ -303,7 +279,7 @@ const targetFlagValue = evaluationCache[targetFlagKey]; | ||
| if (e instanceof RequiresServerEvaluation) throw e; | ||
| if (e instanceof InconclusiveMatchError) isInconclusive = true; | ||
| if (e instanceof core_namespaceObject.InconclusiveMatchError) isInconclusive = true; | ||
| else throw e; | ||
| } | ||
| if (void 0 !== result) return result; | ||
| if (isInconclusive) throw new InconclusiveMatchError("Can't determine if feature flag is enabled or not with given properties"); | ||
| if (isInconclusive) throw new core_namespaceObject.InconclusiveMatchError("Can't determine if feature flag is enabled or not with given properties"); | ||
| return false; | ||
@@ -328,26 +304,10 @@ } | ||
| } | ||
| if (void 0 != rolloutPercentage && await _hash(flag.key, bucketingValue) > rolloutPercentage / 100.0) return 'out_of_rollout_bound'; | ||
| if (void 0 != rolloutPercentage && await (0, core_namespaceObject.getFeatureFlagHash)(flag.key, bucketingValue) > rolloutPercentage / 100.0) return 'out_of_rollout_bound'; | ||
| return 'match'; | ||
| } | ||
| async getMatchingVariant(flag, bucketingValue) { | ||
| const hashValue = await _hash(flag.key, bucketingValue, 'variant'); | ||
| const matchingVariant = this.variantLookupTable(flag).find((variant)=>hashValue >= variant.valueMin && hashValue < variant.valueMax); | ||
| if (matchingVariant) return matchingVariant.key; | ||
| return (0, core_namespaceObject.getFeatureFlagVariant)(flag.key, bucketingValue, flag.filters?.multivariate?.variants || []); | ||
| } | ||
| variantLookupTable(flag) { | ||
| const lookupTable = []; | ||
| let valueMin = 0; | ||
| let valueMax = 0; | ||
| const flagFilters = flag.filters || {}; | ||
| const multivariates = flagFilters.multivariate?.variants || []; | ||
| multivariates.forEach((variant)=>{ | ||
| valueMax = valueMin + variant.rollout_percentage / 100.0; | ||
| lookupTable.push({ | ||
| valueMin, | ||
| valueMax, | ||
| key: variant.key | ||
| }); | ||
| valueMin = valueMax; | ||
| }); | ||
| return lookupTable; | ||
| return (0, core_namespaceObject.getFeatureFlagVariantLookupTable)(flag.filters?.multivariate?.variants || []); | ||
| } | ||
@@ -556,131 +516,10 @@ updateFlagState(flagData) { | ||
| } | ||
| async function _hash(key, bucketingValue, salt = '') { | ||
| const hashString = await (0, external_crypto_js_namespaceObject.hashSHA1)(`${key}.${bucketingValue}${salt}`); | ||
| return parseInt(hashString.slice(0, 15), 16) / LONG_SCALE; | ||
| } | ||
| function matchProperty(property, propertyValues, warnFunction) { | ||
| const key = property.key; | ||
| const value = property.value; | ||
| const operator = property.operator || 'exact'; | ||
| if (key in propertyValues) { | ||
| if ('is_not_set' === operator) return false; | ||
| } else { | ||
| if ('is_not_set' === operator) return true; | ||
| throw new InconclusiveMatchError(`Property ${key} not found in propertyValues`); | ||
| } | ||
| const overrideValue = propertyValues[key]; | ||
| if (null == overrideValue && !NULL_VALUES_ALLOWED_OPERATORS.includes(operator)) { | ||
| if (warnFunction) warnFunction(`Property ${key} cannot have a value of null/undefined with the ${operator} operator`); | ||
| return false; | ||
| } | ||
| function computeExactMatch(value, overrideValue) { | ||
| if (Array.isArray(value)) return value.map((val)=>String(val).toLowerCase()).includes(String(overrideValue).toLowerCase()); | ||
| return String(value).toLowerCase() === String(overrideValue).toLowerCase(); | ||
| } | ||
| function compare(lhs, rhs, operator) { | ||
| if ('gt' === operator) return lhs > rhs; | ||
| if ('gte' === operator) return lhs >= rhs; | ||
| if ('lt' === operator) return lhs < rhs; | ||
| if ('lte' === operator) return lhs <= rhs; | ||
| throw new Error(`Invalid operator: ${operator}`); | ||
| } | ||
| switch(operator){ | ||
| case 'exact': | ||
| return computeExactMatch(value, overrideValue); | ||
| case 'is_not': | ||
| return !computeExactMatch(value, overrideValue); | ||
| case 'is_set': | ||
| return key in propertyValues; | ||
| case 'icontains': | ||
| return String(overrideValue).toLowerCase().includes(String(value).toLowerCase()); | ||
| case 'not_icontains': | ||
| return !String(overrideValue).toLowerCase().includes(String(value).toLowerCase()); | ||
| case 'starts_with': | ||
| return String(overrideValue).toLowerCase().startsWith(String(value).toLowerCase()); | ||
| case 'not_starts_with': | ||
| return !String(overrideValue).toLowerCase().startsWith(String(value).toLowerCase()); | ||
| case 'ends_with': | ||
| return String(overrideValue).toLowerCase().endsWith(String(value).toLowerCase()); | ||
| case 'not_ends_with': | ||
| return !String(overrideValue).toLowerCase().endsWith(String(value).toLowerCase()); | ||
| case 'regex': | ||
| return isValidRegex(String(value)) && null !== String(overrideValue).match(String(value)); | ||
| case 'not_regex': | ||
| return isValidRegex(String(value)) && null === String(overrideValue).match(String(value)); | ||
| case 'gt': | ||
| case 'gte': | ||
| case 'lt': | ||
| case 'lte': | ||
| { | ||
| const parsedValue = 'number' == typeof value ? value : parseFloat(String(value)); | ||
| let parsedOverride; | ||
| parsedOverride = 'number' == typeof overrideValue ? overrideValue : null != overrideValue ? parseFloat(String(overrideValue)) : NaN; | ||
| if (Number.isFinite(parsedValue) && Number.isFinite(parsedOverride)) return compare(parsedOverride, parsedValue, operator); | ||
| return compare(String(overrideValue), String(value), operator); | ||
| } | ||
| case 'is_date_after': | ||
| case 'is_date_before': | ||
| { | ||
| if ('boolean' == typeof value) throw new InconclusiveMatchError("Date operations cannot be performed on boolean values"); | ||
| let parsedDate = relativeDateParseForFeatureFlagMatching(String(value)); | ||
| if (null == parsedDate) parsedDate = convertToDateTime(value); | ||
| if (null == parsedDate) throw new InconclusiveMatchError(`Invalid date: ${value}`); | ||
| const overrideDate = convertToDateTime(overrideValue); | ||
| if ([ | ||
| 'is_date_before' | ||
| ].includes(operator)) return overrideDate < parsedDate; | ||
| return overrideDate > parsedDate; | ||
| } | ||
| case 'semver_eq': | ||
| { | ||
| const cmp = compareSemverTuples(parseSemver(String(overrideValue)), parseSemver(String(value))); | ||
| return 0 === cmp; | ||
| } | ||
| case 'semver_neq': | ||
| { | ||
| const cmp = compareSemverTuples(parseSemver(String(overrideValue)), parseSemver(String(value))); | ||
| return 0 !== cmp; | ||
| } | ||
| case 'semver_gt': | ||
| { | ||
| const cmp = compareSemverTuples(parseSemver(String(overrideValue)), parseSemver(String(value))); | ||
| return cmp > 0; | ||
| } | ||
| case 'semver_gte': | ||
| { | ||
| const cmp = compareSemverTuples(parseSemver(String(overrideValue)), parseSemver(String(value))); | ||
| return cmp >= 0; | ||
| } | ||
| case 'semver_lt': | ||
| { | ||
| const cmp = compareSemverTuples(parseSemver(String(overrideValue)), parseSemver(String(value))); | ||
| return cmp < 0; | ||
| } | ||
| case 'semver_lte': | ||
| { | ||
| const cmp = compareSemverTuples(parseSemver(String(overrideValue)), parseSemver(String(value))); | ||
| return cmp <= 0; | ||
| } | ||
| case 'semver_tilde': | ||
| { | ||
| const overrideParsed = parseSemver(String(overrideValue)); | ||
| const { lower, upper } = computeTildeBounds(String(value)); | ||
| return compareSemverTuples(overrideParsed, lower) >= 0 && compareSemverTuples(overrideParsed, upper) < 0; | ||
| } | ||
| case 'semver_caret': | ||
| { | ||
| const overrideParsed = parseSemver(String(overrideValue)); | ||
| const { lower, upper } = computeCaretBounds(String(value)); | ||
| return compareSemverTuples(overrideParsed, lower) >= 0 && compareSemverTuples(overrideParsed, upper) < 0; | ||
| } | ||
| case 'semver_wildcard': | ||
| { | ||
| const overrideParsed = parseSemver(String(overrideValue)); | ||
| const { lower, upper } = computeWildcardBounds(String(value)); | ||
| return compareSemverTuples(overrideParsed, lower) >= 0 && compareSemverTuples(overrideParsed, upper) < 0; | ||
| } | ||
| default: | ||
| throw new InconclusiveMatchError(`Unknown operator: ${operator}`); | ||
| } | ||
| return (0, core_namespaceObject.matchFeatureFlagProperty)(property, propertyValues, { | ||
| warnFunction | ||
| }); | ||
| } | ||
| function parseSemver(value) { | ||
| return (0, core_namespaceObject.parseFeatureFlagSemver)(value, 'strict'); | ||
| } | ||
| function checkCohortExists(cohortId, cohortProperties) { | ||
@@ -709,3 +548,3 @@ if (!(cohortId in cohortProperties)) throw new RequiresServerEvaluation(`cohort ${cohortId} not found in local cohorts - likely a static cohort that requires server evaluation`); | ||
| if (err instanceof RequiresServerEvaluation) throw err; | ||
| if (err instanceof InconclusiveMatchError) { | ||
| if (err instanceof core_namespaceObject.InconclusiveMatchError) { | ||
| if (debugMode) console.debug(`Failed to compute property ${prop} locally: ${err}`); | ||
@@ -715,3 +554,3 @@ errorMatchingLocally = true; | ||
| } | ||
| if (errorMatchingLocally) throw new InconclusiveMatchError("Can't match cohort without a given cohort property value"); | ||
| if (errorMatchingLocally) throw new core_namespaceObject.InconclusiveMatchError("Can't match cohort without a given cohort property value"); | ||
| return 'AND' === propertyGroupType; | ||
@@ -723,3 +562,3 @@ } | ||
| else if ('flag' === prop.type) { | ||
| if (!flagDependencyEvaluator) throw new InconclusiveMatchError(`Flag dependency '${prop.key || 'unknown'}' cannot be evaluated without a flag dependency evaluator`); | ||
| if (!flagDependencyEvaluator) throw new core_namespaceObject.InconclusiveMatchError(`Flag dependency '${prop.key || 'unknown'}' cannot be evaluated without a flag dependency evaluator`); | ||
| matches = await flagDependencyEvaluator(prop); | ||
@@ -737,3 +576,3 @@ } else matches = matchProperty(prop, propertyValues); | ||
| if (err instanceof RequiresServerEvaluation) throw err; | ||
| if (err instanceof InconclusiveMatchError) { | ||
| if (err instanceof core_namespaceObject.InconclusiveMatchError) { | ||
| if (debugMode) console.debug(`Failed to compute property ${prop} locally: ${err}`); | ||
@@ -743,161 +582,5 @@ errorMatchingLocally = true; | ||
| } | ||
| if (errorMatchingLocally) throw new InconclusiveMatchError("can't match cohort without a given cohort property value"); | ||
| if (errorMatchingLocally) throw new core_namespaceObject.InconclusiveMatchError("can't match cohort without a given cohort property value"); | ||
| return 'AND' === propertyGroupType; | ||
| } | ||
| function isValidRegex(regex) { | ||
| try { | ||
| new RegExp(regex); | ||
| return true; | ||
| } catch (err) { | ||
| return false; | ||
| } | ||
| } | ||
| function parseSemverNumericIdentifier(part, raw) { | ||
| if (!/^\d+$/.test(part)) throw new InconclusiveMatchError(`Invalid semver: ${raw}`); | ||
| if (part.length > 1 && '0' === part[0]) throw new InconclusiveMatchError(`Invalid semver: ${raw}`); | ||
| return parseInt(part, 10); | ||
| } | ||
| function parseSemver(value) { | ||
| const text = String(value).trim().replace(/^[vV]/, ''); | ||
| const baseVersion = text.split('-')[0].split('+')[0]; | ||
| if (!baseVersion || baseVersion.startsWith('.')) throw new InconclusiveMatchError(`Invalid semver: ${value}`); | ||
| const parts = baseVersion.split('.'); | ||
| const parsePart = (part)=>{ | ||
| if (void 0 === part || '' === part) return 0; | ||
| return parseSemverNumericIdentifier(part, value); | ||
| }; | ||
| const major = parsePart(parts[0]); | ||
| const minor = parsePart(parts[1]); | ||
| const patch = parsePart(parts[2]); | ||
| return [ | ||
| major, | ||
| minor, | ||
| patch | ||
| ]; | ||
| } | ||
| function compareSemverTuples(a, b) { | ||
| for(let i = 0; i < 3; i++){ | ||
| if (a[i] < b[i]) return -1; | ||
| if (a[i] > b[i]) return 1; | ||
| } | ||
| return 0; | ||
| } | ||
| function computeTildeBounds(value) { | ||
| const parsed = parseSemver(value); | ||
| const lower = [ | ||
| parsed[0], | ||
| parsed[1], | ||
| parsed[2] | ||
| ]; | ||
| const upper = [ | ||
| parsed[0], | ||
| parsed[1] + 1, | ||
| 0 | ||
| ]; | ||
| return { | ||
| lower, | ||
| upper | ||
| }; | ||
| } | ||
| function computeCaretBounds(value) { | ||
| const parsed = parseSemver(value); | ||
| const [major, minor, patch] = parsed; | ||
| const lower = [ | ||
| major, | ||
| minor, | ||
| patch | ||
| ]; | ||
| let upper; | ||
| upper = major > 0 ? [ | ||
| major + 1, | ||
| 0, | ||
| 0 | ||
| ] : minor > 0 ? [ | ||
| 0, | ||
| minor + 1, | ||
| 0 | ||
| ] : [ | ||
| 0, | ||
| 0, | ||
| patch + 1 | ||
| ]; | ||
| return { | ||
| lower, | ||
| upper | ||
| }; | ||
| } | ||
| function computeWildcardBounds(value) { | ||
| const text = String(value).trim().replace(/^[vV]/, ''); | ||
| const cleanedText = text.replace(/\.\*$/, '').replace(/\*$/, ''); | ||
| if (!cleanedText) throw new InconclusiveMatchError(`Invalid wildcard semver: ${value}`); | ||
| const parts = cleanedText.split('.'); | ||
| const parseWildcardPart = (part)=>{ | ||
| try { | ||
| return parseSemverNumericIdentifier(part, value); | ||
| } catch { | ||
| throw new InconclusiveMatchError(`Invalid wildcard semver: ${value}`); | ||
| } | ||
| }; | ||
| const major = parseWildcardPart(parts[0]); | ||
| let lower; | ||
| let upper; | ||
| if (1 === parts.length) { | ||
| lower = [ | ||
| major, | ||
| 0, | ||
| 0 | ||
| ]; | ||
| upper = [ | ||
| major + 1, | ||
| 0, | ||
| 0 | ||
| ]; | ||
| } else { | ||
| const minor = parseWildcardPart(parts[1]); | ||
| lower = [ | ||
| major, | ||
| minor, | ||
| 0 | ||
| ]; | ||
| upper = [ | ||
| major, | ||
| minor + 1, | ||
| 0 | ||
| ]; | ||
| } | ||
| return { | ||
| lower, | ||
| upper | ||
| }; | ||
| } | ||
| function convertToDateTime(value) { | ||
| if (value instanceof Date) return value; | ||
| if ('string' == typeof value || 'number' == typeof value) { | ||
| const date = new Date(value); | ||
| if (!isNaN(date.valueOf())) return date; | ||
| throw new InconclusiveMatchError(`${value} is in an invalid date format`); | ||
| } | ||
| throw new InconclusiveMatchError(`The date provided ${value} must be a string, number, or date object`); | ||
| } | ||
| function relativeDateParseForFeatureFlagMatching(value) { | ||
| const regex = /^-?(?<number>[0-9]+)(?<interval>[a-z])$/; | ||
| const match = value.match(regex); | ||
| const parsedDt = new Date(new Date().toISOString()); | ||
| if (!match) return null; | ||
| { | ||
| if (!match.groups) return null; | ||
| const number = parseInt(match.groups['number']); | ||
| if (number >= 10000) return null; | ||
| const interval = match.groups['interval']; | ||
| if ('h' == interval) parsedDt.setUTCHours(parsedDt.getUTCHours() - number); | ||
| else if ('d' == interval) parsedDt.setUTCDate(parsedDt.getUTCDate() - number); | ||
| else if ('w' == interval) parsedDt.setUTCDate(parsedDt.getUTCDate() - 7 * number); | ||
| else if ('m' == interval) parsedDt.setUTCMonth(parsedDt.getUTCMonth() - number); | ||
| else { | ||
| if ('y' != interval) return null; | ||
| parsedDt.setUTCFullYear(parsedDt.getUTCFullYear() - number); | ||
| } | ||
| return parsedDt; | ||
| } | ||
| } | ||
| exports.ClientError = __webpack_exports__.ClientError; | ||
@@ -904,0 +587,0 @@ exports.FeatureFlagsPoller = __webpack_exports__.FeatureFlagsPoller; |
@@ -1,9 +0,3 @@ | ||
| import { raceWithTimeout, safeSetTimeout } from "@posthog/core"; | ||
| import { hashSHA1 } from "./crypto.mjs"; | ||
| import { InconclusiveMatchError, getFeatureFlagHash, getFeatureFlagVariant, getFeatureFlagVariantLookupTable, matchFeatureFlagProperty, parseFeatureFlagSemver, raceWithTimeout, relativeDateParseForFeatureFlagMatching, resolveFeatureFlagPayload, safeSetTimeout } from "@posthog/core"; | ||
| const SIXTY_SECONDS = 60000; | ||
| const LONG_SCALE = 0xfffffffffffffff; | ||
| const NULL_VALUES_ALLOWED_OPERATORS = [ | ||
| 'is_not', | ||
| 'is_set' | ||
| ]; | ||
| class ClientError extends Error { | ||
@@ -23,8 +17,2 @@ constructor(message){ | ||
| } | ||
| class InconclusiveMatchError extends Error { | ||
| constructor(message){ | ||
| super(message); | ||
| setCustomErrorPrototype(this, InconclusiveMatchError); | ||
| } | ||
| } | ||
| class RequiresServerEvaluation extends Error { | ||
@@ -177,15 +165,3 @@ constructor(message){ | ||
| getFeatureFlagPayload(key, flagValue) { | ||
| let payload = null; | ||
| if (false !== flagValue && null != flagValue) { | ||
| if ('boolean' == typeof flagValue) payload = this.featureFlagsByKey?.[key]?.filters?.payloads?.[flagValue.toString()] || null; | ||
| else if ('string' == typeof flagValue) payload = this.featureFlagsByKey?.[key]?.filters?.payloads?.[flagValue] || null; | ||
| if (null != payload) { | ||
| if ('object' == typeof payload) return payload; | ||
| if ('string' == typeof payload) try { | ||
| return JSON.parse(payload); | ||
| } catch {} | ||
| return payload; | ||
| } | ||
| } | ||
| return null; | ||
| return resolveFeatureFlagPayload(this.featureFlagsByKey?.[key]?.filters?.payloads, flagValue); | ||
| } | ||
@@ -284,26 +260,10 @@ async evaluateFlagDependency(property, properties, evaluationContext) { | ||
| } | ||
| if (void 0 != rolloutPercentage && await _hash(flag.key, bucketingValue) > rolloutPercentage / 100.0) return 'out_of_rollout_bound'; | ||
| if (void 0 != rolloutPercentage && await getFeatureFlagHash(flag.key, bucketingValue) > rolloutPercentage / 100.0) return 'out_of_rollout_bound'; | ||
| return 'match'; | ||
| } | ||
| async getMatchingVariant(flag, bucketingValue) { | ||
| const hashValue = await _hash(flag.key, bucketingValue, 'variant'); | ||
| const matchingVariant = this.variantLookupTable(flag).find((variant)=>hashValue >= variant.valueMin && hashValue < variant.valueMax); | ||
| if (matchingVariant) return matchingVariant.key; | ||
| return getFeatureFlagVariant(flag.key, bucketingValue, flag.filters?.multivariate?.variants || []); | ||
| } | ||
| variantLookupTable(flag) { | ||
| const lookupTable = []; | ||
| let valueMin = 0; | ||
| let valueMax = 0; | ||
| const flagFilters = flag.filters || {}; | ||
| const multivariates = flagFilters.multivariate?.variants || []; | ||
| multivariates.forEach((variant)=>{ | ||
| valueMax = valueMin + variant.rollout_percentage / 100.0; | ||
| lookupTable.push({ | ||
| valueMin, | ||
| valueMax, | ||
| key: variant.key | ||
| }); | ||
| valueMin = valueMax; | ||
| }); | ||
| return lookupTable; | ||
| return getFeatureFlagVariantLookupTable(flag.filters?.multivariate?.variants || []); | ||
| } | ||
@@ -512,131 +472,10 @@ updateFlagState(flagData) { | ||
| } | ||
| async function _hash(key, bucketingValue, salt = '') { | ||
| const hashString = await hashSHA1(`${key}.${bucketingValue}${salt}`); | ||
| return parseInt(hashString.slice(0, 15), 16) / LONG_SCALE; | ||
| } | ||
| function matchProperty(property, propertyValues, warnFunction) { | ||
| const key = property.key; | ||
| const value = property.value; | ||
| const operator = property.operator || 'exact'; | ||
| if (key in propertyValues) { | ||
| if ('is_not_set' === operator) return false; | ||
| } else { | ||
| if ('is_not_set' === operator) return true; | ||
| throw new InconclusiveMatchError(`Property ${key} not found in propertyValues`); | ||
| } | ||
| const overrideValue = propertyValues[key]; | ||
| if (null == overrideValue && !NULL_VALUES_ALLOWED_OPERATORS.includes(operator)) { | ||
| if (warnFunction) warnFunction(`Property ${key} cannot have a value of null/undefined with the ${operator} operator`); | ||
| return false; | ||
| } | ||
| function computeExactMatch(value, overrideValue) { | ||
| if (Array.isArray(value)) return value.map((val)=>String(val).toLowerCase()).includes(String(overrideValue).toLowerCase()); | ||
| return String(value).toLowerCase() === String(overrideValue).toLowerCase(); | ||
| } | ||
| function compare(lhs, rhs, operator) { | ||
| if ('gt' === operator) return lhs > rhs; | ||
| if ('gte' === operator) return lhs >= rhs; | ||
| if ('lt' === operator) return lhs < rhs; | ||
| if ('lte' === operator) return lhs <= rhs; | ||
| throw new Error(`Invalid operator: ${operator}`); | ||
| } | ||
| switch(operator){ | ||
| case 'exact': | ||
| return computeExactMatch(value, overrideValue); | ||
| case 'is_not': | ||
| return !computeExactMatch(value, overrideValue); | ||
| case 'is_set': | ||
| return key in propertyValues; | ||
| case 'icontains': | ||
| return String(overrideValue).toLowerCase().includes(String(value).toLowerCase()); | ||
| case 'not_icontains': | ||
| return !String(overrideValue).toLowerCase().includes(String(value).toLowerCase()); | ||
| case 'starts_with': | ||
| return String(overrideValue).toLowerCase().startsWith(String(value).toLowerCase()); | ||
| case 'not_starts_with': | ||
| return !String(overrideValue).toLowerCase().startsWith(String(value).toLowerCase()); | ||
| case 'ends_with': | ||
| return String(overrideValue).toLowerCase().endsWith(String(value).toLowerCase()); | ||
| case 'not_ends_with': | ||
| return !String(overrideValue).toLowerCase().endsWith(String(value).toLowerCase()); | ||
| case 'regex': | ||
| return isValidRegex(String(value)) && null !== String(overrideValue).match(String(value)); | ||
| case 'not_regex': | ||
| return isValidRegex(String(value)) && null === String(overrideValue).match(String(value)); | ||
| case 'gt': | ||
| case 'gte': | ||
| case 'lt': | ||
| case 'lte': | ||
| { | ||
| const parsedValue = 'number' == typeof value ? value : parseFloat(String(value)); | ||
| let parsedOverride; | ||
| parsedOverride = 'number' == typeof overrideValue ? overrideValue : null != overrideValue ? parseFloat(String(overrideValue)) : NaN; | ||
| if (Number.isFinite(parsedValue) && Number.isFinite(parsedOverride)) return compare(parsedOverride, parsedValue, operator); | ||
| return compare(String(overrideValue), String(value), operator); | ||
| } | ||
| case 'is_date_after': | ||
| case 'is_date_before': | ||
| { | ||
| if ('boolean' == typeof value) throw new InconclusiveMatchError("Date operations cannot be performed on boolean values"); | ||
| let parsedDate = relativeDateParseForFeatureFlagMatching(String(value)); | ||
| if (null == parsedDate) parsedDate = convertToDateTime(value); | ||
| if (null == parsedDate) throw new InconclusiveMatchError(`Invalid date: ${value}`); | ||
| const overrideDate = convertToDateTime(overrideValue); | ||
| if ([ | ||
| 'is_date_before' | ||
| ].includes(operator)) return overrideDate < parsedDate; | ||
| return overrideDate > parsedDate; | ||
| } | ||
| case 'semver_eq': | ||
| { | ||
| const cmp = compareSemverTuples(parseSemver(String(overrideValue)), parseSemver(String(value))); | ||
| return 0 === cmp; | ||
| } | ||
| case 'semver_neq': | ||
| { | ||
| const cmp = compareSemverTuples(parseSemver(String(overrideValue)), parseSemver(String(value))); | ||
| return 0 !== cmp; | ||
| } | ||
| case 'semver_gt': | ||
| { | ||
| const cmp = compareSemverTuples(parseSemver(String(overrideValue)), parseSemver(String(value))); | ||
| return cmp > 0; | ||
| } | ||
| case 'semver_gte': | ||
| { | ||
| const cmp = compareSemverTuples(parseSemver(String(overrideValue)), parseSemver(String(value))); | ||
| return cmp >= 0; | ||
| } | ||
| case 'semver_lt': | ||
| { | ||
| const cmp = compareSemverTuples(parseSemver(String(overrideValue)), parseSemver(String(value))); | ||
| return cmp < 0; | ||
| } | ||
| case 'semver_lte': | ||
| { | ||
| const cmp = compareSemverTuples(parseSemver(String(overrideValue)), parseSemver(String(value))); | ||
| return cmp <= 0; | ||
| } | ||
| case 'semver_tilde': | ||
| { | ||
| const overrideParsed = parseSemver(String(overrideValue)); | ||
| const { lower, upper } = computeTildeBounds(String(value)); | ||
| return compareSemverTuples(overrideParsed, lower) >= 0 && compareSemverTuples(overrideParsed, upper) < 0; | ||
| } | ||
| case 'semver_caret': | ||
| { | ||
| const overrideParsed = parseSemver(String(overrideValue)); | ||
| const { lower, upper } = computeCaretBounds(String(value)); | ||
| return compareSemverTuples(overrideParsed, lower) >= 0 && compareSemverTuples(overrideParsed, upper) < 0; | ||
| } | ||
| case 'semver_wildcard': | ||
| { | ||
| const overrideParsed = parseSemver(String(overrideValue)); | ||
| const { lower, upper } = computeWildcardBounds(String(value)); | ||
| return compareSemverTuples(overrideParsed, lower) >= 0 && compareSemverTuples(overrideParsed, upper) < 0; | ||
| } | ||
| default: | ||
| throw new InconclusiveMatchError(`Unknown operator: ${operator}`); | ||
| } | ||
| return matchFeatureFlagProperty(property, propertyValues, { | ||
| warnFunction | ||
| }); | ||
| } | ||
| function parseSemver(value) { | ||
| return parseFeatureFlagSemver(value, 'strict'); | ||
| } | ||
| function checkCohortExists(cohortId, cohortProperties) { | ||
@@ -698,158 +537,2 @@ if (!(cohortId in cohortProperties)) throw new RequiresServerEvaluation(`cohort ${cohortId} not found in local cohorts - likely a static cohort that requires server evaluation`); | ||
| } | ||
| function isValidRegex(regex) { | ||
| try { | ||
| new RegExp(regex); | ||
| return true; | ||
| } catch (err) { | ||
| return false; | ||
| } | ||
| } | ||
| function parseSemverNumericIdentifier(part, raw) { | ||
| if (!/^\d+$/.test(part)) throw new InconclusiveMatchError(`Invalid semver: ${raw}`); | ||
| if (part.length > 1 && '0' === part[0]) throw new InconclusiveMatchError(`Invalid semver: ${raw}`); | ||
| return parseInt(part, 10); | ||
| } | ||
| function parseSemver(value) { | ||
| const text = String(value).trim().replace(/^[vV]/, ''); | ||
| const baseVersion = text.split('-')[0].split('+')[0]; | ||
| if (!baseVersion || baseVersion.startsWith('.')) throw new InconclusiveMatchError(`Invalid semver: ${value}`); | ||
| const parts = baseVersion.split('.'); | ||
| const parsePart = (part)=>{ | ||
| if (void 0 === part || '' === part) return 0; | ||
| return parseSemverNumericIdentifier(part, value); | ||
| }; | ||
| const major = parsePart(parts[0]); | ||
| const minor = parsePart(parts[1]); | ||
| const patch = parsePart(parts[2]); | ||
| return [ | ||
| major, | ||
| minor, | ||
| patch | ||
| ]; | ||
| } | ||
| function compareSemverTuples(a, b) { | ||
| for(let i = 0; i < 3; i++){ | ||
| if (a[i] < b[i]) return -1; | ||
| if (a[i] > b[i]) return 1; | ||
| } | ||
| return 0; | ||
| } | ||
| function computeTildeBounds(value) { | ||
| const parsed = parseSemver(value); | ||
| const lower = [ | ||
| parsed[0], | ||
| parsed[1], | ||
| parsed[2] | ||
| ]; | ||
| const upper = [ | ||
| parsed[0], | ||
| parsed[1] + 1, | ||
| 0 | ||
| ]; | ||
| return { | ||
| lower, | ||
| upper | ||
| }; | ||
| } | ||
| function computeCaretBounds(value) { | ||
| const parsed = parseSemver(value); | ||
| const [major, minor, patch] = parsed; | ||
| const lower = [ | ||
| major, | ||
| minor, | ||
| patch | ||
| ]; | ||
| let upper; | ||
| upper = major > 0 ? [ | ||
| major + 1, | ||
| 0, | ||
| 0 | ||
| ] : minor > 0 ? [ | ||
| 0, | ||
| minor + 1, | ||
| 0 | ||
| ] : [ | ||
| 0, | ||
| 0, | ||
| patch + 1 | ||
| ]; | ||
| return { | ||
| lower, | ||
| upper | ||
| }; | ||
| } | ||
| function computeWildcardBounds(value) { | ||
| const text = String(value).trim().replace(/^[vV]/, ''); | ||
| const cleanedText = text.replace(/\.\*$/, '').replace(/\*$/, ''); | ||
| if (!cleanedText) throw new InconclusiveMatchError(`Invalid wildcard semver: ${value}`); | ||
| const parts = cleanedText.split('.'); | ||
| const parseWildcardPart = (part)=>{ | ||
| try { | ||
| return parseSemverNumericIdentifier(part, value); | ||
| } catch { | ||
| throw new InconclusiveMatchError(`Invalid wildcard semver: ${value}`); | ||
| } | ||
| }; | ||
| const major = parseWildcardPart(parts[0]); | ||
| let lower; | ||
| let upper; | ||
| if (1 === parts.length) { | ||
| lower = [ | ||
| major, | ||
| 0, | ||
| 0 | ||
| ]; | ||
| upper = [ | ||
| major + 1, | ||
| 0, | ||
| 0 | ||
| ]; | ||
| } else { | ||
| const minor = parseWildcardPart(parts[1]); | ||
| lower = [ | ||
| major, | ||
| minor, | ||
| 0 | ||
| ]; | ||
| upper = [ | ||
| major, | ||
| minor + 1, | ||
| 0 | ||
| ]; | ||
| } | ||
| return { | ||
| lower, | ||
| upper | ||
| }; | ||
| } | ||
| function convertToDateTime(value) { | ||
| if (value instanceof Date) return value; | ||
| if ('string' == typeof value || 'number' == typeof value) { | ||
| const date = new Date(value); | ||
| if (!isNaN(date.valueOf())) return date; | ||
| throw new InconclusiveMatchError(`${value} is in an invalid date format`); | ||
| } | ||
| throw new InconclusiveMatchError(`The date provided ${value} must be a string, number, or date object`); | ||
| } | ||
| function relativeDateParseForFeatureFlagMatching(value) { | ||
| const regex = /^-?(?<number>[0-9]+)(?<interval>[a-z])$/; | ||
| const match = value.match(regex); | ||
| const parsedDt = new Date(new Date().toISOString()); | ||
| if (!match) return null; | ||
| { | ||
| if (!match.groups) return null; | ||
| const number = parseInt(match.groups['number']); | ||
| if (number >= 10000) return null; | ||
| const interval = match.groups['interval']; | ||
| if ('h' == interval) parsedDt.setUTCHours(parsedDt.getUTCHours() - number); | ||
| else if ('d' == interval) parsedDt.setUTCDate(parsedDt.getUTCDate() - number); | ||
| else if ('w' == interval) parsedDt.setUTCDate(parsedDt.getUTCDate() - 7 * number); | ||
| else if ('m' == interval) parsedDt.setUTCMonth(parsedDt.getUTCMonth() - number); | ||
| else { | ||
| if ('y' != interval) return null; | ||
| parsedDt.setUTCFullYear(parsedDt.getUTCFullYear() - number); | ||
| } | ||
| return parsedDt; | ||
| } | ||
| } | ||
| export { ClientError, FeatureFlagsPoller, InconclusiveMatchError, RequiresServerEvaluation, matchProperty, parseSemver, relativeDateParseForFeatureFlagMatching }; |
+4
-3
@@ -96,5 +96,6 @@ import type { PostHogCoreOptions, ExceptionRateLimiterConfig, FeatureFlagValue, JsonType, Metrics, MetricsConfig, PostHogFetchOptions, PostHogFetchResponse, PostHogFlagsAndPayloadsResponse, Properties } from '@posthog/core'; | ||
| * Restrict local evaluation, the `/flags` request, and the returned snapshot to these keys. | ||
| * `evaluateFlags()` falls back remotely when a requested key is missing from local definitions | ||
| * unless `onlyEvaluateLocally` is true. Remote evaluation responses are not cached, so a key | ||
| * missing both locally and remotely costs one `/flags` request per `evaluateFlags()` call. | ||
| * An empty array returns an empty snapshot without evaluating flags; omitting this option | ||
| * evaluates all flags. `evaluateFlags()` falls back remotely when a requested key is missing | ||
| * from local definitions unless `onlyEvaluateLocally` is true. Remote evaluation responses are | ||
| * not cached, so a key missing both locally and remotely costs one `/flags` request per call. | ||
| */ | ||
@@ -101,0 +102,0 @@ flagKeys?: string[]; |
@@ -1,1 +0,1 @@ | ||
| {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../src/types.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EACV,kBAAkB,EAClB,0BAA0B,EAC1B,gBAAgB,EAChB,QAAQ,EACR,OAAO,EACP,aAAa,EACb,mBAAmB,EACnB,oBAAoB,EACpB,+BAA+B,EAC/B,UAAU,EACX,MAAM,eAAe,CAAA;AACtB,OAAO,EAAE,WAAW,EAAE,cAAc,EAAE,MAAM,4BAA4B,CAAA;AAExE,OAAO,KAAK,EAAE,sBAAsB,EAAE,MAAM,4BAA4B,CAAA;AACxE,OAAO,KAAK,EAAE,2BAA2B,EAAE,MAAM,kCAAkC,CAAA;AAEnF,MAAM,MAAM,eAAe,GAAG;IAC5B,UAAU,EAAE,MAAM,CAAA;IAClB,UAAU,CAAC,EAAE,MAAM,CAAC,MAAM,GAAG,MAAM,EAAE,GAAG,CAAC,CAAA;IACzC,YAAY,CAAC,EAAE,OAAO,CAAA;CACvB,CAAA;AAED,MAAM,MAAM,0BAA0B,GAAG;IACvC,UAAU,EAAE,MAAM,CAAA;IAClB,UAAU,CAAC,EAAE,MAAM,CAAC,MAAM,GAAG,MAAM,EAAE,GAAG,CAAC,CAAA;IACzC,cAAc,CAAC,EAAE,MAAM,CAAC,MAAM,GAAG,MAAM,EAAE,GAAG,CAAC,CAAA;CAC9C,CAAA;AAED,MAAM,MAAM,4BAA4B,GAAG;IACzC,UAAU,EAAE,MAAM,CAAA;IAClB,UAAU,EAAE,MAAM,GAAG,MAAM,EAAE,CAAA;CAC9B,CAAA;AAED,MAAM,MAAM,uBAAuB,GAAG;IACpC,mBAAmB,CAAC,EAAE,OAAO,CAAA;IAC7B,gBAAgB,CAAC,EAAE,UAAU,CAAA;IAC7B,eAAe,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,UAAU,CAAC,CAAA;IAC5C,QAAQ,CAAC,EAAE,MAAM,EAAE,CAAA;CACpB,CAAA;AAED,MAAM,MAAM,YAAY,GAAG,IAAI,CAAC,eAAe,EAAE,YAAY,CAAC,GAAG;IAC/D,UAAU,CAAC,EAAE,MAAM,CAAA;IACnB,KAAK,EAAE,MAAM,CAAA;IACb,MAAM,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,GAAG,MAAM,CAAC,CAAA;IACxC;;;;OAIG;IACH,KAAK,CAAC,EAAE,sBAAsB,CAAA;IAC9B;;;;OAIG;IACH,gBAAgB,CAAC,EAAE,OAAO,GAAG,uBAAuB,CAAA;IACpD,gHAAgH;IAChH,SAAS,CAAC,EAAE,IAAI,CAAA;IAChB,iFAAiF;IACjF,IAAI,CAAC,EAAE,MAAM,CAAA;IACb;;;;OAIG;IACH,+BAA+B,CAAC,EAAE,OAAO,CAAA;CAC1C,CAAA;AAED,MAAM,MAAM,oBAAoB,GAAG;IACjC,SAAS,EAAE,MAAM,CAAA;IACjB,QAAQ,EAAE,MAAM,CAAA;IAChB,UAAU,CAAC,EAAE,MAAM,CAAC,MAAM,GAAG,MAAM,EAAE,GAAG,CAAC,CAAA;IACzC,UAAU,CAAC,EAAE,MAAM,CAAA;IACnB,YAAY,CAAC,EAAE,OAAO,CAAA;CACvB,CAAA;AAED,MAAM,MAAM,aAAa,GAAG;IAC1B,IAAI,EAAE,KAAK,GAAG,IAAI,CAAA;IAClB,MAAM,EAAE,aAAa,EAAE,GAAG,YAAY,EAAE,CAAA;CACzC,CAAA;AAED,MAAM,MAAM,YAAY,GAAG;IACzB,GAAG,EAAE,MAAM,CAAA;IACX,IAAI,CAAC,EAAE,MAAM,CAAA;IACb,KAAK,EAAE,iBAAiB,CAAA;IACxB,QAAQ,CAAC,EAAE,MAAM,CAAA;IACjB,QAAQ,CAAC,EAAE,OAAO,CAAA;IAClB,gBAAgB,CAAC,EAAE,MAAM,EAAE,CAAA;CAC5B,CAAA;AAED,MAAM,MAAM,iBAAiB,GAAG,MAAM,GAAG,MAAM,GAAG,CAAC,MAAM,GAAG,MAAM,CAAC,EAAE,GAAG,OAAO,CAAA;AAE/E;;;;;;;;GAQG;AACH,MAAM,MAAM,2BAA2B,GACnC,KAAK,GACL,MAAM,EAAE,GACR,MAAM,CAAC,MAAM,EAAE,gBAAgB,CAAC,GAChC,0BAA0B,CAAA;AAE9B,MAAM,MAAM,yBAAyB,GAAG;IACtC,MAAM,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAA;IAC/B,gBAAgB,CAAC,EAAE,UAAU,CAAA;IAC7B,eAAe,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,UAAU,CAAC,CAAA;IAC5C,iFAAiF;IACjF,mBAAmB,CAAC,EAAE,OAAO,CAAA;IAC7B,YAAY,CAAC,EAAE,OAAO,CAAA;CACvB,CAAA;AACD,MAAM,MAAM,qBAAqB,GAAG,yBAAyB,GAAG;IAC9D,qBAAqB,CAAC,EAAE,OAAO,CAAA;CAChC,CAAA;AAED,MAAM,MAAM,eAAe,GAAG,yBAAyB,GAAG;IACxD;;;;;OAKG;IACH,QAAQ,CAAC,EAAE,MAAM,EAAE,CAAA;CACpB,CAAA;AAED,MAAM,MAAM,0BAA0B,GAAG;IACvC;;;;;OAKG;IACH,KAAK,CAAC,EAAE,KAAK,GAAG,MAAM,EAAE,GAAG,MAAM,CAAC,MAAM,EAAE,gBAAgB,CAAC,CAAA;IAC3D;;;;OAIG;IACH,QAAQ,CAAC,EAAE,KAAK,GAAG,MAAM,CAAC,MAAM,EAAE,QAAQ,CAAC,CAAA;CAC5C,CAAA;AAED,MAAM,MAAM,oBAAoB,GAAG;IACjC,UAAU,EAAE,YAAY,EAAE,CAAA;IAC1B,kBAAkB,CAAC,EAAE,MAAM,CAAA;IAC3B,OAAO,CAAC,EAAE,MAAM,CAAA;IAChB,4BAA4B,CAAC,EAAE,MAAM,GAAG,IAAI,CAAA;CAC7C,CAAA;AAED,MAAM,MAAM,8BAA8B,GAAG,aAAa,GAAG,WAAW,GAAG,EAAE,GAAG,IAAI,CAAA;AAEpF,MAAM,MAAM,YAAY,GAAG,CAAC,KAAK,EAAE,YAAY,GAAG,IAAI,KAAK,YAAY,GAAG,IAAI,CAAA;AAE9E,MAAM,MAAM,cAAc,GAAG,IAAI,CAAC,kBAAkB,EAAE,aAAa,GAAG,eAAe,GAAG,cAAc,CAAC,GAAG;IACxG,WAAW,CAAC,EAAE,QAAQ,CAAA;IACtB;;;;OAIG;IACH,aAAa,CAAC,EAAE,MAAM,CAAA;IACtB;;;;OAIG;IACH,YAAY,CAAC,EAAE,MAAM,CAAA;IACrB;;;;;;;;;OASG;IACH,OAAO,CAAC,EAAE,aAAa,CAAA;IACvB;;;;;;;;;;;;OAYG;IACH,SAAS,CAAC,EAAE,MAAM,CAAA;IAClB;;OAEG;IACH,cAAc,CAAC,EAAE,MAAM,CAAA;IACvB,WAAW,CAAC,EAAE,OAAO,CAAA;IACrB,0BAA0B,CAAC,EAAE,OAAO,CAAA;IAEpC,2BAA2B,CAAC,EAAE,MAAM,CAAA;IAEpC,YAAY,CAAC,EAAE,MAAM,CAAA;IACrB,KAAK,CAAC,EAAE,CAAC,GAAG,EAAE,MAAM,EAAE,OAAO,EAAE,mBAAmB,KAAK,OAAO,CAAC,oBAAoB,CAAC,CAAA;IAGpF,qBAAqB,CAAC,EAAE,OAAO,CAAA;IAC/B;;;;;;;;;;;;;;;;;;;;;;OAsBG;IACH,2BAA2B,CAAC,EAAE,2BAA2B,CAAA;IACzD;;;;OAIG;IACH,WAAW,CAAC,EAAE,YAAY,GAAG,YAAY,EAAE,CAAA;IAC3C;;;;;;;;;OASG;IACH,kBAAkB,CAAC,EAAE,SAAS,MAAM,EAAE,CAAA;IACtC;;;OAGG;IACH,sBAAsB,CAAC,EAAE,SAAS,MAAM,EAAE,CAAA;IAC1C;;;;;OAKG;IACH,yBAAyB,CAAC,EAAE,MAAM,EAAE,CAAA;IACpC;;;;;;;;;;;;;;;;OAgBG;IACH,+BAA+B,CAAC,EAAE,OAAO,CAAA;IACzC;;;;;;;;;OASG;IACH,qBAAqB,CAAC,EAAE,OAAO,CAAA;IAC/B;;;;;;OAMG;IACH,uBAAuB,CAAC,EAAE,OAAO,CAAA;IACjC;;;;;;;;;;;OAWG;IACH,SAAS,CAAC,EAAE,CAAC,OAAO,EAAE,OAAO,CAAC,OAAO,CAAC,KAAK,IAAI,CAAA;IAC/C;;;;;;OAMG;IACH,mBAAmB,CAAC,EAAE,MAAM,CAAA;IAC5B;;;;;;OAMG;IACH,kBAAkB,CAAC,EAAE,MAAM,CAAA;IAC3B;;;;;;;;;;;;;;;OAeG;IACH,QAAQ,CAAC,EAAE,OAAO,CAAA;IAClB;;;;;OAKG;IACH,mBAAmB,CAAC,EAAE,OAAO,CAAA;CAC9B,GAAG,0BAA0B,CAAA;AAE9B,MAAM,MAAM,kBAAkB,GAAG;IAC/B,EAAE,EAAE,MAAM,CAAA;IACV,IAAI,EAAE,MAAM,CAAA;IACZ,GAAG,EAAE,MAAM,CAAA;IACX,oBAAoB,CAAC,EAAE,8BAA8B,CAAA;IACrD,OAAO,CAAC,EAAE;QACR,4BAA4B,CAAC,EAAE,MAAM,CAAA;QACrC,MAAM,CAAC,EAAE,oBAAoB,EAAE,CAAA;QAC/B,YAAY,CAAC,EAAE;YACb,QAAQ,EAAE;gBACR,GAAG,EAAE,MAAM,CAAA;gBACX,kBAAkB,EAAE,MAAM,CAAA;aAC3B,EAAE,CAAA;SACJ,CAAA;QACD,QAAQ,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAA;QAIjC,UAAU,CAAC,EAAE,OAAO,CAAA;KACrB,CAAA;IACD,OAAO,EAAE,OAAO,CAAA;IAChB,MAAM,EAAE,OAAO,CAAA;IACf,kBAAkB,EAAE,IAAI,GAAG,MAAM,CAAA;IACjC,4BAA4B,EAAE,OAAO,CAAA;IACrC,cAAc,EAAE,MAAM,EAAE,CAAA;IACxB,8FAA8F;IAC9F,cAAc,CAAC,EAAE,OAAO,CAAA;CACzB,CAAA;AAED;;;;;;;;;;;;GAYG;AACH,eAAO,MAAM,gBAAgB;;;;;CAKnB,CAAA;AAEV,MAAM,MAAM,oBAAoB,GAAG,CAAC,OAAO,gBAAgB,CAAC,CAAC,MAAM,OAAO,gBAAgB,CAAC,GAAG,MAAM,CAAA;AAEpG;;GAEG;AACH,MAAM,MAAM,iBAAiB,GAAG;IAC9B,GAAG,EAAE,MAAM,CAAA;IACX,OAAO,EAAE,OAAO,CAAA;IAChB,OAAO,EAAE,MAAM,GAAG,SAAS,CAAA;IAC3B,OAAO,EAAE,QAAQ,GAAG,SAAS,CAAA;CAC9B,CAAA;AAED,MAAM,WAAW,QAAQ;IACvB;;;;;;;;;;;OAWG;IACH,OAAO,CAAC,EAAE,UAAU,EAAE,KAAK,EAAE,UAAU,EAAE,MAAM,EAAE,KAAK,EAAE,gBAAgB,EAAE,EAAE,YAAY,GAAG,IAAI,CAAA;IAE/F;;;;;;;;OAQG;IACH,gBAAgB,CAAC,EAAE,UAAU,EAAE,KAAK,EAAE,UAAU,EAAE,MAAM,EAAE,KAAK,EAAE,gBAAgB,EAAE,EAAE,YAAY,GAAG,OAAO,CAAC,IAAI,CAAC,CAAA;IAEjH;;;;;;;;;;OAUG;IACH,SAAS,CAAC,EAAE,UAAU,EAAE,KAAK,EAAE,UAAU,EAAE,MAAM,EAAE,KAAK,EAAE,gBAAgB,EAAE,EAAE,YAAY,GAAG,MAAM,GAAG,SAAS,CAAA;IAE/G;;;;;;;;;OASG;IACH,kBAAkB,CAAC,EACjB,UAAU,EACV,KAAK,EACL,UAAU,EACV,MAAM,EACN,KAAK,EACL,gBAAgB,GACjB,EAAE,YAAY,GAAG,OAAO,CAAC,MAAM,GAAG,SAAS,CAAC,CAAA;IAE7C;;;;;;OAMG;IACH,QAAQ,CAAC,EAAE,UAAU,EAAE,UAAU,EAAE,EAAE,eAAe,GAAG,IAAI,CAAA;IAE3D;;;;;OAKG;IACH,iBAAiB,CAAC,EAAE,UAAU,EAAE,UAAU,EAAE,EAAE,eAAe,GAAG,OAAO,CAAC,IAAI,CAAC,CAAA;IAE7E;;;;;OAKG;IACH,mBAAmB,CAAC,EAAE,UAAU,EAAE,UAAU,EAAE,cAAc,EAAE,EAAE,0BAA0B,GAAG,IAAI,CAAA;IAEjG;;;;OAIG;IACH,qBAAqB,CAAC,EAAE,UAAU,EAAE,UAAU,EAAE,EAAE,4BAA4B,GAAG,IAAI,CAAA;IAErF;;;;;;;;;;OAUG;IACH,KAAK,CAAC,IAAI,EAAE;QAAE,UAAU,EAAE,MAAM,CAAC;QAAC,KAAK,EAAE,MAAM,CAAA;KAAE,GAAG,IAAI,CAAA;IAExD;;;;;OAKG;IACH,cAAc,CAAC,IAAI,EAAE;QAAE,UAAU,EAAE,MAAM,CAAC;QAAC,KAAK,EAAE,MAAM,CAAA;KAAE,GAAG,OAAO,CAAC,IAAI,CAAC,CAAA;IAE1E;;;;;;;;;;;;;;;;;;OAkBG;IACH,gBAAgB,CACd,GAAG,EAAE,MAAM,EACX,UAAU,EAAE,MAAM,EAClB,OAAO,CAAC,EAAE;QACR,MAAM,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAA;QAC/B,gBAAgB,CAAC,EAAE,UAAU,CAAA;QAC7B,eAAe,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,UAAU,CAAC,CAAA;QAC5C,mBAAmB,CAAC,EAAE,OAAO,CAAA;QAC7B,qBAAqB,CAAC,EAAE,OAAO,CAAA;KAChC,GACA,OAAO,CAAC,OAAO,GAAG,SAAS,CAAC,CAAA;IAE/B;;;;;;;;;;;;;;;;;;OAkBG;IACH,cAAc,CACZ,GAAG,EAAE,MAAM,EACX,UAAU,EAAE,MAAM,EAClB,OAAO,CAAC,EAAE;QACR,MAAM,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAA;QAC/B,gBAAgB,CAAC,EAAE,UAAU,CAAA;QAC7B,eAAe,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,UAAU,CAAC,CAAA;QAC5C,mBAAmB,CAAC,EAAE,OAAO,CAAA;QAC7B,qBAAqB,CAAC,EAAE,OAAO,CAAA;KAChC,GACA,OAAO,CAAC,gBAAgB,GAAG,SAAS,CAAC,CAAA;IAExC;;;;;;;;;;;;;;;;;;;;;;;;;;;;OA4BG;IACH,qBAAqB,CACnB,GAAG,EAAE,MAAM,EACX,UAAU,EAAE,MAAM,EAClB,UAAU,CAAC,EAAE,gBAAgB,EAC7B,OAAO,CAAC,EAAE;QACR,mBAAmB,CAAC,EAAE,OAAO,CAAA;KAC9B,GACA,OAAO,CAAC,QAAQ,GAAG,SAAS,CAAC,CAAA;IAEhC;;OAEG;IACH,WAAW,CAAC,OAAO,CAAC,EAAE,eAAe,GAAG,OAAO,CAAC,MAAM,CAAC,MAAM,EAAE,gBAAgB,CAAC,CAAC,CAAA;IAEjF;;;;;;OAMG;IACH,WAAW,CAAC,UAAU,EAAE,MAAM,EAAE,OAAO,CAAC,EAAE,eAAe,GAAG,OAAO,CAAC,MAAM,CAAC,MAAM,EAAE,gBAAgB,CAAC,CAAC,CAAA;IAErG;;OAEG;IACH,sBAAsB,CAAC,OAAO,CAAC,EAAE,eAAe,GAAG,OAAO,CAAC,+BAA+B,CAAC,CAAA;IAE3F;;;;;;OAMG;IACH,sBAAsB,CAAC,UAAU,EAAE,MAAM,EAAE,OAAO,CAAC,EAAE,eAAe,GAAG,OAAO,CAAC,+BAA+B,CAAC,CAAA;IAE/G;;OAEG;IACH,oBAAoB,CAAC,GAAG,EAAE,MAAM,EAAE,OAAO,CAAC,EAAE,qBAAqB,GAAG,OAAO,CAAC,iBAAiB,GAAG,SAAS,CAAC,CAAA;IAE1G;;;;;;;;;;;;;;;;;;OAkBG;IACH,oBAAoB,CAClB,GAAG,EAAE,MAAM,EACX,UAAU,EAAE,MAAM,EAClB,OAAO,CAAC,EAAE,qBAAqB,GAC9B,OAAO,CAAC,iBAAiB,GAAG,SAAS,CAAC,CAAA;IAEzC;;;;;;;;;;;;;;;;;;;;OAoBG;IACH,aAAa,CAAC,OAAO,CAAC,EAAE,eAAe,GAAG,OAAO,CAAC,sBAAsB,CAAC,CAAA;IACzE;;;;;OAKG;IACH,aAAa,CAAC,UAAU,EAAE,MAAM,EAAE,OAAO,CAAC,EAAE,eAAe,GAAG,OAAO,CAAC,sBAAsB,CAAC,CAAA;IAE7F;;;;;;;OAOG;IACH,aAAa,CAAC,EAAE,SAAS,EAAE,QAAQ,EAAE,UAAU,EAAE,EAAE,oBAAoB,GAAG,IAAI,CAAA;IAE9E;;;;;;;OAOG;IACH,sBAAsB,CAAC,EAAE,SAAS,EAAE,QAAQ,EAAE,UAAU,EAAE,EAAE,oBAAoB,GAAG,OAAO,CAAC,IAAI,CAAC,CAAA;IAEhG;;;OAGG;IACH,kBAAkB,IAAI,OAAO,CAAC,IAAI,CAAC,CAAA;IAEnC;;;;;;;;;;;;;;;;;;;;;;;OAuBG;IACH,oBAAoB,CAAC,SAAS,EAAE,2BAA2B,GAAG,IAAI,CAAA;IAElE;;;;;;OAMG;IACH,WAAW,CAAC,CAAC,EAAE,IAAI,EAAE,OAAO,CAAC,WAAW,CAAC,EAAE,EAAE,EAAE,MAAM,CAAC,EAAE,OAAO,CAAC,EAAE,cAAc,GAAG,CAAC,CAAA;IAEpF;;;;;;OAMG;IACH,YAAY,CAAC,IAAI,EAAE,OAAO,CAAC,WAAW,CAAC,EAAE,OAAO,CAAC,EAAE,cAAc,GAAG,IAAI,CAAA;IAExE;;;OAGG;IACH,UAAU,IAAI,WAAW,GAAG,SAAS,CAAA;IAErC;;;;OAIG;IACH,QAAQ,CAAC,OAAO,EAAE,OAAO,CAAA;IAEzB;;;;;OAKG;IACH,QAAQ,CAAC,iBAAiB,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAAA;IAEnD;;;;OAIG;IACH,2BAA2B,CAAC,SAAS,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC,OAAO,CAAC,CAAA;IAEjE;;;OAGG;IACH,sBAAsB,IAAI,OAAO,CAAA;CAClC"} | ||
| {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../src/types.ts"],"names":[],"mappings":"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"} |
@@ -1,2 +0,2 @@ | ||
| export declare const version = "5.51.1"; | ||
| export declare const version = "5.51.2"; | ||
| //# sourceMappingURL=version.d.ts.map |
+1
-1
@@ -29,3 +29,3 @@ "use strict"; | ||
| }); | ||
| const version = '5.51.1'; | ||
| const version = '5.51.2'; | ||
| exports.version = __webpack_exports__.version; | ||
@@ -32,0 +32,0 @@ for(var __webpack_i__ in __webpack_exports__)if (-1 === [ |
+1
-1
@@ -1,2 +0,2 @@ | ||
| const version = '5.51.1'; | ||
| const version = '5.51.2'; | ||
| export { version }; |
+2
-2
| { | ||
| "name": "posthog-node", | ||
| "version": "5.51.1", | ||
| "version": "5.51.2", | ||
| "bugs": { | ||
@@ -31,3 +31,3 @@ "url": "https://github.com/PostHog/posthog-js/issues" | ||
| "dependencies": { | ||
| "@posthog/core": "^1.48.9" | ||
| "@posthog/core": "^1.48.11" | ||
| }, | ||
@@ -34,0 +34,0 @@ "devDependencies": { |
| /// <reference lib="dom" /> | ||
| export async function hashSHA1(text: string): Promise<string> { | ||
| const subtle = globalThis.crypto?.subtle | ||
| if (!subtle) { | ||
| throw new Error('SubtleCrypto API not available') | ||
| } | ||
| const hashBuffer = await subtle.digest('SHA-1', new TextEncoder().encode(text)) | ||
| const hashArray = Array.from(new Uint8Array(hashBuffer)) | ||
| return hashArray.map((byte) => byte.toString(16).padStart(2, '0')).join('') | ||
| } | ||
| export { hashSHA1 } from '@posthog/core' |
| import { FeatureFlagCondition, FlagProperty, FlagPropertyValue, PostHogFeatureFlag, PropertyGroup } from '../../types' | ||
| import type { FeatureFlagValue, JsonType, PostHogFetchOptions, PostHogFetchResponse } from '@posthog/core' | ||
| import { raceWithTimeout, safeSetTimeout } from '@posthog/core' | ||
| import { hashSHA1 } from './crypto' | ||
| import { | ||
| getFeatureFlagHash, | ||
| getFeatureFlagVariant, | ||
| getFeatureFlagVariantLookupTable, | ||
| InconclusiveMatchError, | ||
| matchFeatureFlagProperty, | ||
| parseFeatureFlagSemver, | ||
| raceWithTimeout, | ||
| relativeDateParseForFeatureFlagMatching, | ||
| resolveFeatureFlagPayload, | ||
| safeSetTimeout, | ||
| } from '@posthog/core' | ||
| import { FlagDefinitionCacheProvider, FlagDefinitionCacheData } from './cache' | ||
@@ -9,10 +19,2 @@ | ||
| // eslint-disable-next-line | ||
| const LONG_SCALE = 0xfffffffffffffff | ||
| // Operators that should still run their switch case when the property value is null/undefined. | ||
| // `is_not` may legitimately compare against null; `is_set` only cares about key presence and | ||
| // must not be short-circuited by the null guard in `matchProperty`. | ||
| const NULL_VALUES_ALLOWED_OPERATORS = ['is_not', 'is_set'] | ||
| // Outcome of evaluating a single condition group. `out_of_rollout_bound` means the group's property | ||
@@ -42,9 +44,2 @@ // filters matched (or there were none) but the rollout percentage excluded the user — the only case | ||
| class InconclusiveMatchError extends Error { | ||
| constructor(message: string) { | ||
| super(message) | ||
| setCustomErrorPrototype(this, InconclusiveMatchError) | ||
| } | ||
| } | ||
| class RequiresServerEvaluation extends Error { | ||
@@ -383,30 +378,3 @@ constructor(message: string) { | ||
| private getFeatureFlagPayload(key: string, flagValue: FeatureFlagValue): JsonType | null { | ||
| let payload: JsonType | null = null | ||
| if (flagValue !== false && flagValue !== null && flagValue !== undefined) { | ||
| if (typeof flagValue == 'boolean') { | ||
| payload = this.featureFlagsByKey?.[key]?.filters?.payloads?.[flagValue.toString()] || null | ||
| } else if (typeof flagValue == 'string') { | ||
| payload = this.featureFlagsByKey?.[key]?.filters?.payloads?.[flagValue] || null | ||
| } | ||
| if (payload !== null && payload !== undefined) { | ||
| // If payload is already an object, return it directly | ||
| if (typeof payload === 'object') { | ||
| return payload | ||
| } | ||
| // If payload is a string, try to parse it as JSON | ||
| if (typeof payload === 'string') { | ||
| try { | ||
| return JSON.parse(payload) | ||
| } catch { | ||
| // If parsing fails, return the string as is | ||
| return payload | ||
| } | ||
| } | ||
| // For other types, return as is | ||
| return payload | ||
| } | ||
| } | ||
| return null | ||
| return resolveFeatureFlagPayload(this.featureFlagsByKey?.[key]?.filters?.payloads, flagValue) | ||
| } | ||
@@ -646,3 +614,6 @@ | ||
| // user was targeted but excluded by rollout — the server-side engine's `OutOfRolloutBound`. | ||
| if (rolloutPercentage != undefined && (await _hash(flag.key, bucketingValue)) > rolloutPercentage / 100.0) { | ||
| if ( | ||
| rolloutPercentage != undefined && | ||
| (await getFeatureFlagHash(flag.key, bucketingValue)) > rolloutPercentage / 100.0 | ||
| ) { | ||
| return 'out_of_rollout_bound' | ||
@@ -655,29 +626,7 @@ } | ||
| async getMatchingVariant(flag: PostHogFeatureFlag, bucketingValue: string): Promise<FeatureFlagValue | undefined> { | ||
| const hashValue = await _hash(flag.key, bucketingValue, 'variant') | ||
| const matchingVariant = this.variantLookupTable(flag).find((variant) => { | ||
| return hashValue >= variant.valueMin && hashValue < variant.valueMax | ||
| }) | ||
| if (matchingVariant) { | ||
| return matchingVariant.key | ||
| } | ||
| return undefined | ||
| return getFeatureFlagVariant(flag.key, bucketingValue, flag.filters?.multivariate?.variants || []) | ||
| } | ||
| variantLookupTable(flag: PostHogFeatureFlag): { valueMin: number; valueMax: number; key: string }[] { | ||
| const lookupTable: { valueMin: number; valueMax: number; key: string }[] = [] | ||
| let valueMin = 0 | ||
| let valueMax = 0 | ||
| const flagFilters = flag.filters || {} | ||
| const multivariates: { | ||
| key: string | ||
| rollout_percentage: number | ||
| }[] = flagFilters.multivariate?.variants || [] | ||
| multivariates.forEach((variant) => { | ||
| valueMax = valueMin + variant.rollout_percentage / 100.0 | ||
| lookupTable.push({ valueMin, valueMax, key: variant.key }) | ||
| valueMin = valueMax | ||
| }) | ||
| return lookupTable | ||
| return getFeatureFlagVariantLookupTable(flag.filters?.multivariate?.variants || []) | ||
| } | ||
@@ -1086,11 +1035,2 @@ | ||
| // # This function takes a bucketing identifier and a feature flag key and returns a float between 0 and 1. | ||
| // # Given the same bucketing identifier and key, it'll always return the same float. These floats are | ||
| // # uniformly distributed between 0 and 1, so if we want to show this feature to 20% of traffic | ||
| // # we can do _hash(key, bucketing_identifier) < 0.2 | ||
| async function _hash(key: string, bucketingValue: string, salt: string = ''): Promise<number> { | ||
| const hashString = await hashSHA1(`${key}.${bucketingValue}${salt}`) | ||
| return parseInt(hashString.slice(0, 15), 16) / LONG_SCALE | ||
| } | ||
| function matchProperty( | ||
@@ -1101,158 +1041,7 @@ property: FeatureFlagCondition['properties'][number], | ||
| ): boolean { | ||
| const key = property.key | ||
| const value = property.value | ||
| const operator = property.operator || 'exact' | ||
| return matchFeatureFlagProperty(property, propertyValues, { warnFunction }) | ||
| } | ||
| if (!(key in propertyValues)) { | ||
| // When the property is genuinely absent we can answer `is_not_set` locally — no need to | ||
| // bail out as inconclusive and force the flag to return undefined. | ||
| if (operator === 'is_not_set') { | ||
| return true | ||
| } | ||
| throw new InconclusiveMatchError(`Property ${key} not found in propertyValues`) | ||
| } else if (operator === 'is_not_set') { | ||
| return false | ||
| } | ||
| const overrideValue = propertyValues[key] | ||
| if (overrideValue == null && !NULL_VALUES_ALLOWED_OPERATORS.includes(operator)) { | ||
| // if the value is null, just fail the feature flag comparison | ||
| // this isn't an InconclusiveMatchError because the property value was provided. | ||
| if (warnFunction) { | ||
| warnFunction(`Property ${key} cannot have a value of null/undefined with the ${operator} operator`) | ||
| } | ||
| return false | ||
| } | ||
| function computeExactMatch(value: any, overrideValue: any): boolean { | ||
| if (Array.isArray(value)) { | ||
| return value.map((val) => String(val).toLowerCase()).includes(String(overrideValue).toLowerCase()) | ||
| } | ||
| return String(value).toLowerCase() === String(overrideValue).toLowerCase() | ||
| } | ||
| function compare(lhs: any, rhs: any, operator: string): boolean { | ||
| if (operator === 'gt') { | ||
| return lhs > rhs | ||
| } else if (operator === 'gte') { | ||
| return lhs >= rhs | ||
| } else if (operator === 'lt') { | ||
| return lhs < rhs | ||
| } else if (operator === 'lte') { | ||
| return lhs <= rhs | ||
| } else { | ||
| throw new Error(`Invalid operator: ${operator}`) | ||
| } | ||
| } | ||
| switch (operator) { | ||
| case 'exact': | ||
| return computeExactMatch(value, overrideValue) | ||
| case 'is_not': | ||
| return !computeExactMatch(value, overrideValue) | ||
| case 'is_set': | ||
| return key in propertyValues | ||
| case 'icontains': | ||
| return String(overrideValue).toLowerCase().includes(String(value).toLowerCase()) | ||
| case 'not_icontains': | ||
| return !String(overrideValue).toLowerCase().includes(String(value).toLowerCase()) | ||
| case 'starts_with': | ||
| return String(overrideValue).toLowerCase().startsWith(String(value).toLowerCase()) | ||
| case 'not_starts_with': | ||
| return !String(overrideValue).toLowerCase().startsWith(String(value).toLowerCase()) | ||
| case 'ends_with': | ||
| return String(overrideValue).toLowerCase().endsWith(String(value).toLowerCase()) | ||
| case 'not_ends_with': | ||
| return !String(overrideValue).toLowerCase().endsWith(String(value).toLowerCase()) | ||
| case 'regex': | ||
| return isValidRegex(String(value)) && String(overrideValue).match(String(value)) !== null | ||
| case 'not_regex': | ||
| return isValidRegex(String(value)) && String(overrideValue).match(String(value)) === null | ||
| case 'gt': | ||
| case 'gte': | ||
| case 'lt': | ||
| case 'lte': { | ||
| // Try a numeric comparison first; only fall back to lexicographic when one side genuinely | ||
| // isn't a number. `parseFloat` returns NaN for non-numeric strings, so `Number.isFinite` | ||
| // is the right guard — `NaN != null` would slip through and produce nonsense comparisons | ||
| // like `NaN > 5`. Likewise, when a person property arrives as the string `"10"` we want | ||
| // `"10" > "9"` to evaluate numerically (true), not lexicographically (false). | ||
| const parsedValue = typeof value === 'number' ? value : parseFloat(String(value)) | ||
| let parsedOverride: number | ||
| if (typeof overrideValue === 'number') { | ||
| parsedOverride = overrideValue | ||
| } else if (overrideValue != null) { | ||
| parsedOverride = parseFloat(String(overrideValue)) | ||
| } else { | ||
| parsedOverride = NaN | ||
| } | ||
| if (Number.isFinite(parsedValue) && Number.isFinite(parsedOverride)) { | ||
| return compare(parsedOverride, parsedValue, operator) | ||
| } | ||
| return compare(String(overrideValue), String(value), operator) | ||
| } | ||
| case 'is_date_after': | ||
| case 'is_date_before': { | ||
| // Boolean values should never be used with date operations | ||
| if (typeof value === 'boolean') { | ||
| throw new InconclusiveMatchError(`Date operations cannot be performed on boolean values`) | ||
| } | ||
| let parsedDate = relativeDateParseForFeatureFlagMatching(String(value)) | ||
| if (parsedDate == null) { | ||
| parsedDate = convertToDateTime(value) | ||
| } | ||
| if (parsedDate == null) { | ||
| throw new InconclusiveMatchError(`Invalid date: ${value}`) | ||
| } | ||
| const overrideDate = convertToDateTime(overrideValue) | ||
| if (['is_date_before'].includes(operator)) { | ||
| return overrideDate < parsedDate | ||
| } | ||
| return overrideDate > parsedDate | ||
| } | ||
| case 'semver_eq': { | ||
| const cmp = compareSemverTuples(parseSemver(String(overrideValue)), parseSemver(String(value))) | ||
| return cmp === 0 | ||
| } | ||
| case 'semver_neq': { | ||
| const cmp = compareSemverTuples(parseSemver(String(overrideValue)), parseSemver(String(value))) | ||
| return cmp !== 0 | ||
| } | ||
| case 'semver_gt': { | ||
| const cmp = compareSemverTuples(parseSemver(String(overrideValue)), parseSemver(String(value))) | ||
| return cmp > 0 | ||
| } | ||
| case 'semver_gte': { | ||
| const cmp = compareSemverTuples(parseSemver(String(overrideValue)), parseSemver(String(value))) | ||
| return cmp >= 0 | ||
| } | ||
| case 'semver_lt': { | ||
| const cmp = compareSemverTuples(parseSemver(String(overrideValue)), parseSemver(String(value))) | ||
| return cmp < 0 | ||
| } | ||
| case 'semver_lte': { | ||
| const cmp = compareSemverTuples(parseSemver(String(overrideValue)), parseSemver(String(value))) | ||
| return cmp <= 0 | ||
| } | ||
| case 'semver_tilde': { | ||
| const overrideParsed = parseSemver(String(overrideValue)) | ||
| const { lower, upper } = computeTildeBounds(String(value)) | ||
| return compareSemverTuples(overrideParsed, lower) >= 0 && compareSemverTuples(overrideParsed, upper) < 0 | ||
| } | ||
| case 'semver_caret': { | ||
| const overrideParsed = parseSemver(String(overrideValue)) | ||
| const { lower, upper } = computeCaretBounds(String(value)) | ||
| return compareSemverTuples(overrideParsed, lower) >= 0 && compareSemverTuples(overrideParsed, upper) < 0 | ||
| } | ||
| case 'semver_wildcard': { | ||
| const overrideParsed = parseSemver(String(overrideValue)) | ||
| const { lower, upper } = computeWildcardBounds(String(value)) | ||
| return compareSemverTuples(overrideParsed, lower) >= 0 && compareSemverTuples(overrideParsed, upper) < 0 | ||
| } | ||
| default: | ||
| throw new InconclusiveMatchError(`Unknown operator: ${operator}`) | ||
| } | ||
| function parseSemver(value: string): [number, number, number] { | ||
| return parseFeatureFlagSemver(value, 'strict') | ||
| } | ||
@@ -1406,200 +1195,2 @@ | ||
| function isValidRegex(regex: string): boolean { | ||
| try { | ||
| new RegExp(regex) | ||
| return true | ||
| } catch (err) { | ||
| return false | ||
| } | ||
| } | ||
| type SemverTuple = [number, number, number] | ||
| /** | ||
| * Parse a single numeric identifier from a semver string. | ||
| * Per semver 2.0.0 §2, numeric identifiers MUST NOT include leading zeros. | ||
| */ | ||
| function parseSemverNumericIdentifier(part: string, raw: string): number { | ||
| if (!/^\d+$/.test(part)) { | ||
| throw new InconclusiveMatchError(`Invalid semver: ${raw}`) | ||
| } | ||
| if (part.length > 1 && part[0] === '0') { | ||
| throw new InconclusiveMatchError(`Invalid semver: ${raw}`) | ||
| } | ||
| return parseInt(part, 10) | ||
| } | ||
| /** | ||
| * Parse a version string into a [major, minor, patch] tuple. | ||
| * - Strips leading/trailing whitespace | ||
| * - Strips 'v' or 'V' prefix | ||
| * - Strips pre-release and build metadata (-alpha, +build) | ||
| * - Defaults missing components to 0 | ||
| * - Ignores extra components beyond the third | ||
| * - Throws InconclusiveMatchError for invalid input | ||
| */ | ||
| function parseSemver(value: string): SemverTuple { | ||
| const text = String(value).trim().replace(/^[vV]/, '') | ||
| // Strip pre-release and build metadata | ||
| const baseVersion = text.split('-')[0].split('+')[0] | ||
| if (!baseVersion || baseVersion.startsWith('.')) { | ||
| throw new InconclusiveMatchError(`Invalid semver: ${value}`) | ||
| } | ||
| const parts = baseVersion.split('.') | ||
| const parsePart = (part: string | undefined): number => { | ||
| if (part === undefined || part === '') { | ||
| return 0 | ||
| } | ||
| return parseSemverNumericIdentifier(part, value) | ||
| } | ||
| const major = parsePart(parts[0]) | ||
| const minor = parsePart(parts[1]) | ||
| const patch = parsePart(parts[2]) | ||
| return [major, minor, patch] | ||
| } | ||
| /** | ||
| * Compare two semver tuples. | ||
| * Returns -1 if a < b, 0 if a == b, 1 if a > b | ||
| */ | ||
| function compareSemverTuples(a: SemverTuple, b: SemverTuple): number { | ||
| for (let i = 0; i < 3; i++) { | ||
| if (a[i] < b[i]) return -1 | ||
| if (a[i] > b[i]) return 1 | ||
| } | ||
| return 0 | ||
| } | ||
| /** | ||
| * Compute bounds for tilde operator: ~X.Y.Z means >=X.Y.Z and <X.(Y+1).0 | ||
| */ | ||
| function computeTildeBounds(value: string): { lower: SemverTuple; upper: SemverTuple } { | ||
| const parsed = parseSemver(value) | ||
| const lower: SemverTuple = [parsed[0], parsed[1], parsed[2]] | ||
| const upper: SemverTuple = [parsed[0], parsed[1] + 1, 0] | ||
| return { lower, upper } | ||
| } | ||
| /** | ||
| * Compute bounds for caret operator: | ||
| * - ^X.Y.Z where X > 0: >=X.Y.Z <(X+1).0.0 | ||
| * - ^0.Y.Z where Y > 0: >=0.Y.Z <0.(Y+1).0 | ||
| * - ^0.0.Z: >=0.0.Z <0.0.(Z+1) | ||
| */ | ||
| function computeCaretBounds(value: string): { lower: SemverTuple; upper: SemverTuple } { | ||
| const parsed = parseSemver(value) | ||
| const [major, minor, patch] = parsed | ||
| const lower: SemverTuple = [major, minor, patch] | ||
| let upper: SemverTuple | ||
| if (major > 0) { | ||
| upper = [major + 1, 0, 0] | ||
| } else if (minor > 0) { | ||
| upper = [0, minor + 1, 0] | ||
| } else { | ||
| upper = [0, 0, patch + 1] | ||
| } | ||
| return { lower, upper } | ||
| } | ||
| /** | ||
| * Compute bounds for wildcard operator: | ||
| * - "X.*" or "X" with wildcard: >=X.0.0 <(X+1).0.0 | ||
| * - "X.Y.*": >=X.Y.0 <X.(Y+1).0 | ||
| */ | ||
| function computeWildcardBounds(value: string): { lower: SemverTuple; upper: SemverTuple } { | ||
| const text = String(value).trim().replace(/^[vV]/, '') | ||
| // Remove trailing .* or * | ||
| const cleanedText = text.replace(/\.\*$/, '').replace(/\*$/, '') | ||
| if (!cleanedText) { | ||
| throw new InconclusiveMatchError(`Invalid wildcard semver: ${value}`) | ||
| } | ||
| const parts = cleanedText.split('.') | ||
| const parseWildcardPart = (part: string): number => { | ||
| try { | ||
| return parseSemverNumericIdentifier(part, value) | ||
| } catch { | ||
| throw new InconclusiveMatchError(`Invalid wildcard semver: ${value}`) | ||
| } | ||
| } | ||
| const major = parseWildcardPart(parts[0]) | ||
| let lower: SemverTuple | ||
| let upper: SemverTuple | ||
| if (parts.length === 1) { | ||
| // X.* pattern | ||
| lower = [major, 0, 0] | ||
| upper = [major + 1, 0, 0] | ||
| } else { | ||
| // X.Y.* pattern | ||
| const minor = parseWildcardPart(parts[1]) | ||
| lower = [major, minor, 0] | ||
| upper = [major, minor + 1, 0] | ||
| } | ||
| return { lower, upper } | ||
| } | ||
| function convertToDateTime(value: FlagPropertyValue | Date): Date { | ||
| if (value instanceof Date) { | ||
| return value | ||
| } else if (typeof value === 'string' || typeof value === 'number') { | ||
| const date = new Date(value) | ||
| if (!isNaN(date.valueOf())) { | ||
| return date | ||
| } | ||
| throw new InconclusiveMatchError(`${value} is in an invalid date format`) | ||
| } else { | ||
| throw new InconclusiveMatchError(`The date provided ${value} must be a string, number, or date object`) | ||
| } | ||
| } | ||
| function relativeDateParseForFeatureFlagMatching(value: string): Date | null { | ||
| const regex = /^-?(?<number>[0-9]+)(?<interval>[a-z])$/ | ||
| const match = value.match(regex) | ||
| const parsedDt = new Date(new Date().toISOString()) | ||
| if (match) { | ||
| if (!match.groups) { | ||
| return null | ||
| } | ||
| const number = parseInt(match.groups['number']) | ||
| if (number >= 10000) { | ||
| // Guard against overflow, disallow numbers greater than 10_000 | ||
| return null | ||
| } | ||
| const interval = match.groups['interval'] | ||
| if (interval == 'h') { | ||
| parsedDt.setUTCHours(parsedDt.getUTCHours() - number) | ||
| } else if (interval == 'd') { | ||
| parsedDt.setUTCDate(parsedDt.getUTCDate() - number) | ||
| } else if (interval == 'w') { | ||
| parsedDt.setUTCDate(parsedDt.getUTCDate() - number * 7) | ||
| } else if (interval == 'm') { | ||
| parsedDt.setUTCMonth(parsedDt.getUTCMonth() - number) | ||
| } else if (interval == 'y') { | ||
| parsedDt.setUTCFullYear(parsedDt.getUTCFullYear() - number) | ||
| } else { | ||
| return null | ||
| } | ||
| return parsedDt | ||
| } else { | ||
| return null | ||
| } | ||
| } | ||
| export { | ||
@@ -1606,0 +1197,0 @@ FeatureFlagsPoller, |
+4
-3
@@ -124,5 +124,6 @@ import type { | ||
| * Restrict local evaluation, the `/flags` request, and the returned snapshot to these keys. | ||
| * `evaluateFlags()` falls back remotely when a requested key is missing from local definitions | ||
| * unless `onlyEvaluateLocally` is true. Remote evaluation responses are not cached, so a key | ||
| * missing both locally and remotely costs one `/flags` request per `evaluateFlags()` call. | ||
| * An empty array returns an empty snapshot without evaluating flags; omitting this option | ||
| * evaluates all flags. `evaluateFlags()` falls back remotely when a requested key is missing | ||
| * from local definitions unless `onlyEvaluateLocally` is true. Remote evaluation responses are | ||
| * not cached, so a key missing both locally and remotely costs one `/flags` request per call. | ||
| */ | ||
@@ -129,0 +130,0 @@ flagKeys?: string[] |
+1
-1
@@ -1,1 +0,1 @@ | ||
| export const version = '5.51.1' | ||
| export const version = '5.51.2' |
Sorry, the diff of this file is too big to display
811232
-4.48%17617
-5.39%Updated