@kameleoon/javascript-sdk-core 3.4.1 → 3.6.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/clientConfiguration/clientConfiguration.d.ts +2 -2
- package/dist/clientConfiguration/clientConfiguration.js +1 -1
- package/dist/clientConfiguration/clientConfiguration.js.map +1 -1
- package/dist/clientConfiguration/types.d.ts +0 -4
- package/dist/clientConfiguration/types.js.map +1 -1
- package/dist/index.d.ts +1 -1
- package/dist/index.js +1 -1
- package/dist/index.js.map +1 -1
- package/dist/kameleoonClient.js +1 -1
- package/dist/kameleoonClient.js.map +1 -1
- package/dist/kameleoonUtils.d.ts +2 -1
- package/dist/kameleoonUtils.js +1 -1
- package/dist/kameleoonUtils.js.map +1 -1
- package/dist/requester/constants.d.ts +3 -0
- package/dist/requester/constants.js +1 -1
- package/dist/requester/constants.js.map +1 -1
- package/dist/requester/index.d.ts +1 -1
- package/dist/requester/index.js +1 -1
- package/dist/requester/index.js.map +1 -1
- package/dist/requester/requester.d.ts +4 -4
- package/dist/requester/requester.js +1 -1
- package/dist/requester/requester.js.map +1 -1
- package/dist/types.d.ts +4 -1
- package/dist/types.js.map +1 -1
- package/dist/utilities/utilities.js +1 -1
- package/dist/utilities/utilities.js.map +1 -1
- package/package.json +1 -1
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"requester.js","names":["Requester","a","b","siteCode","environment","packageInfo","requestDispatcher","_classCallCheck","_defineProperty","_createClass","key","value","apply","arguments","_asyncToGenerator","_regeneratorRuntime","mark","timeStamp","c","d","e","f","g","h","wrap","i","prev","next","environmentParam","UrlFirstParameter","Environment","timeStampParam","UrlParameter","Ts","requestUrl","URL","CLIENT_CONFIGURATION","headers","Header","SdkType","type","toLowerCase","SdkVersion","version","getClientConfiguration","response","sent","abrupt","Ok","Err","KameleoonError","KameleoonException","MaximumRetriesReached","t0","stop","DATA_MAP","Key","encodeURI","getRemoteData","visitorCode","filters","j","k","l","m","n","o","p","q","r","s","t","u","v","w","customData","previousVisitAmount","currentVisit","conversions","geolocation","experiments","pageViews","device","browser","operatingSystem","customDataParameter","CustomData","conversionsParameter","Conversion","geolocationParameter","Geolocation","experimentsParameter","Experiment","pageViewsParameter","Page","staticDataParameter","StaticData","currentVisitParameter","CurrentVisit","VISIT_DATA","VisitorCode","MaxNumberPreviousVisits","dataUrl","variationDataUrl","userAgent","isUnallocated","url","getTrackingUrl","unallocatedAddition","UrlEventType","Activity","Nonce","Utilities","getNonce","bodyAddition","extendedBody","UserAgent","track","body","isMappingIdentifier","requestBody","versionWithCore","encodeURIComponent","concat","identifierParameter","MappingValue","VISIT_EVENT","SdkName","exports"],"sources":["../../src/requester/requester.ts"],"sourcesContent":["import { Err, Ok, Result } from 'ts-res';\nimport { Environment, ExternalPackageInfoType } from 'src/types';\nimport { KameleoonError, KameleoonException } from 'src/kameleoonError';\nimport { ConfigurationDataType, JSONType } from 'src/clientConfiguration';\nimport { Utilities, VisitorDataFiltersType } from 'src/utilities';\nimport {\n URL,\n UrlParameter,\n Header,\n UrlEventType,\n UrlFirstParameter,\n} from './constants';\nimport {\n RequesterParamsType,\n TrackDataParamsType,\n IExternalRequestDispatcher,\n GetVisitorDataResultType,\n TrackExperimentParamsType,\n HeadersType,\n} from './types';\n\nexport interface IRequester {\n getClientConfiguration: () => Promise<\n Result<ConfigurationDataType, KameleoonError>\n >;\n getRemoteData: (key: string) => Promise<Result<JSONType, KameleoonError>>;\n trackData: ({\n visitorCode,\n body,\n userAgent,\n }: TrackDataParamsType) => Promise<Result<boolean, KameleoonError>>;\n trackExperiment: ({\n visitorCode,\n dataUrl,\n variationDataUrl,\n isUnallocated,\n isTargetedRule,\n userAgent,\n }: TrackExperimentParamsType) => Promise<Result<boolean, KameleoonError>>;\n}\n\nexport class Requester implements IRequester {\n private siteCode: string;\n private environment?: Environment;\n private requestDispatcher: IExternalRequestDispatcher;\n private packageInfo: ExternalPackageInfoType;\n\n constructor({\n siteCode,\n environment,\n packageInfo,\n requestDispatcher,\n }: RequesterParamsType) {\n this.requestDispatcher = requestDispatcher;\n this.siteCode = siteCode;\n this.environment = environment;\n this.packageInfo = packageInfo;\n }\n\n public async getClientConfiguration(\n timeStamp?: number,\n ): Promise<Result<ConfigurationDataType, KameleoonError>> {\n const environmentParam = this.environment\n ? UrlFirstParameter.Environment + this.environment\n : '';\n let timeStampParam = '';\n\n if (timeStamp) {\n if (environmentParam) {\n timeStampParam = UrlParameter.Ts + timeStamp;\n } else {\n timeStampParam = UrlFirstParameter.Ts + timeStamp;\n }\n }\n\n const requestUrl =\n URL.CLIENT_CONFIGURATION +\n this.siteCode +\n environmentParam +\n timeStampParam;\n\n const headers: HeadersType = {\n [Header.SdkType]: this.packageInfo.type.toLowerCase(),\n [Header.SdkVersion]: this.packageInfo.version,\n };\n\n try {\n const response = await this.requestDispatcher.getClientConfiguration(\n requestUrl,\n headers,\n );\n\n if (response) {\n return Ok(response as ConfigurationDataType);\n }\n\n return Err(new KameleoonError(KameleoonException.MaximumRetriesReached));\n } catch (error) {\n return Err(error as KameleoonError);\n }\n }\n\n public async getRemoteData(\n key: string,\n ): Promise<Result<JSONType, KameleoonError>> {\n const requestUrl: string =\n URL.DATA_MAP + this.siteCode + UrlParameter.Key + encodeURI(key);\n\n try {\n const response = await this.requestDispatcher.getRemoteData(requestUrl);\n return Ok(response);\n } catch (error) {\n return Err(error as KameleoonError);\n }\n }\n\n public async getVisitorData(\n visitorCode: string,\n filters: VisitorDataFiltersType,\n ): Promise<Result<GetVisitorDataResultType, KameleoonError>> {\n const {\n customData,\n previousVisitAmount,\n currentVisit,\n conversions,\n geolocation,\n experiments,\n pageViews,\n device,\n browser,\n operatingSystem,\n } = filters;\n\n const customDataParameter = customData\n ? UrlParameter.CustomData + true\n : '';\n const conversionsParameter = conversions\n ? UrlParameter.Conversion + true\n : '';\n const geolocationParameter = geolocation\n ? UrlParameter.Geolocation + true\n : '';\n const experimentsParameter = experiments\n ? UrlParameter.Experiment + true\n : '';\n const pageViewsParameter = pageViews ? UrlParameter.Page + true : '';\n const staticDataParameter = Boolean(device || browser || operatingSystem)\n ? UrlParameter.StaticData + true\n : '';\n const currentVisitParameter = currentVisit\n ? UrlParameter.CurrentVisit + true\n : '';\n\n const requestUrl: string =\n URL.VISIT_DATA +\n this.siteCode +\n UrlParameter.VisitorCode +\n visitorCode +\n UrlParameter.MaxNumberPreviousVisits +\n previousVisitAmount +\n customDataParameter +\n conversionsParameter +\n geolocationParameter +\n experimentsParameter +\n pageViewsParameter +\n staticDataParameter +\n currentVisitParameter;\n\n try {\n const response = await this.requestDispatcher.getRemoteData(requestUrl);\n return Ok(response as GetVisitorDataResultType);\n } catch (error) {\n return Err(error as KameleoonError);\n }\n }\n\n public async trackExperiment({\n visitorCode,\n dataUrl,\n variationDataUrl,\n userAgent,\n isUnallocated,\n }: TrackExperimentParamsType): Promise<Result<boolean, KameleoonError>> {\n const url = this.getTrackingUrl(visitorCode);\n\n const unallocatedAddition = !dataUrl\n ? UrlEventType.Activity + UrlParameter.Nonce + Utilities.getNonce()\n : '';\n\n const bodyAddition = isUnallocated ? unallocatedAddition : variationDataUrl;\n\n const extendedBody = bodyAddition ? dataUrl + '\\n' + bodyAddition : dataUrl;\n\n const headers: HeadersType | undefined = userAgent\n ? {\n [Header.UserAgent]: userAgent,\n }\n : undefined;\n\n try {\n const response = await this.requestDispatcher.track({\n url,\n headers,\n body: extendedBody,\n });\n\n return Ok(response);\n } catch (error) {\n return Err(error as KameleoonError);\n }\n }\n\n public async trackData({\n visitorCode,\n body,\n userAgent,\n isMappingIdentifier,\n }: TrackDataParamsType): Promise<Result<boolean, KameleoonError>> {\n const url = this.getTrackingUrl(visitorCode, isMappingIdentifier);\n\n const requestBody =\n body || UrlEventType.Activity + UrlParameter.Nonce + Utilities.getNonce();\n\n const headers = userAgent\n ? {\n [Header.UserAgent]: userAgent,\n }\n : undefined;\n\n try {\n const response = await this.requestDispatcher.track({\n url,\n headers,\n body: requestBody,\n });\n\n return Ok(response);\n } catch (error) {\n return Err(error as KameleoonError);\n }\n }\n\n private getTrackingUrl(\n visitorCode: string,\n isMappingIdentifier?: boolean,\n ): string {\n const { type, version } = this.packageInfo;\n\n const versionWithCore = encodeURIComponent(\n `${version}/${process.env.npm_package_version}`,\n );\n\n const identifierParameter = isMappingIdentifier\n ? UrlParameter.MappingValue\n : UrlParameter.VisitorCode;\n\n return (\n URL.VISIT_EVENT +\n this.siteCode +\n identifierParameter +\n visitorCode +\n UrlParameter.SdkName +\n type.toLowerCase() +\n UrlParameter.SdkVersion +\n versionWithCore\n );\n }\n}\n"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"requester.js","names":["Requester","a","b","siteCode","environment","packageInfo","requestDispatcher","_classCallCheck","_defineProperty","_createClass","key","value","apply","arguments","_asyncToGenerator","_regeneratorRuntime","mark","timeStamp","c","d","e","f","g","h","wrap","i","prev","next","environmentParam","UrlFirstParameter","Environment","timeStampParam","UrlParameter","Ts","requestUrl","URL","CLIENT_CONFIGURATION","headers","Header","SdkType","type","toLowerCase","SdkVersion","version","getClientConfiguration","response","sent","abrupt","Ok","Err","KameleoonError","KameleoonException","MaximumRetriesReached","t0","stop","DATA_MAP","Key","encodeURI","getRemoteData","visitorCode","filters","j","k","l","m","n","o","p","q","r","s","t","u","v","w","customData","previousVisitAmount","currentVisit","conversions","geolocation","experiments","pageViews","device","browser","operatingSystem","customDataParameter","CustomData","conversionsParameter","Conversion","geolocationParameter","Geolocation","experimentsParameter","Experiment","pageViewsParameter","Page","staticDataParameter","StaticData","currentVisitParameter","CurrentVisit","VISIT_DATA","VisitorCode","MaxNumberPreviousVisits","dataUrl","variationDataUrl","userAgent","isUnallocated","url","getTrackingUrl","unallocatedAddition","UrlEventType","Activity","Nonce","Utilities","getNonce","bodyAddition","extendedBody","UserAgent","track","body","isMappingIdentifier","requestBody","versionWithCore","encodeURIComponent","concat","identifierParameter","MappingValue","VISIT_EVENT","SdkName","exports"],"sources":["../../src/requester/requester.ts"],"sourcesContent":["import { Err, Ok, Result } from 'ts-res';\nimport { Environment, ExternalPackageInfoType } from 'src/types';\nimport { KameleoonError, KameleoonException } from 'src/kameleoonError';\nimport { ConfigurationDataType, JSONType } from 'src/clientConfiguration';\nimport { Utilities, VisitorDataFiltersType } from 'src/utilities';\nimport {\n URL,\n UrlParameter,\n Header,\n UrlEventType,\n UrlFirstParameter,\n} from './constants';\nimport {\n RequesterParamsType,\n TrackDataParamsType,\n IExternalRequestDispatcher,\n GetVisitorDataResultType,\n TrackExperimentParamsType,\n HeadersType,\n} from './types';\n\nexport interface IRequester {\n getClientConfiguration: () => Promise<\n Result<ConfigurationDataType, KameleoonError>\n >;\n getRemoteData: (key: string) => Promise<Result<JSONType, KameleoonError>>;\n trackData: ({\n visitorCode,\n body,\n userAgent,\n }: TrackDataParamsType) => Promise<Result<boolean, void>>;\n trackExperiment: ({\n visitorCode,\n dataUrl,\n variationDataUrl,\n isUnallocated,\n isTargetedRule,\n userAgent,\n }: TrackExperimentParamsType) => Promise<Result<boolean, void>>;\n}\n\nexport class Requester implements IRequester {\n private siteCode: string;\n private environment?: Environment;\n private requestDispatcher: IExternalRequestDispatcher;\n private packageInfo: ExternalPackageInfoType;\n\n constructor({\n siteCode,\n environment,\n packageInfo,\n requestDispatcher,\n }: RequesterParamsType) {\n this.requestDispatcher = requestDispatcher;\n this.siteCode = siteCode;\n this.environment = environment;\n this.packageInfo = packageInfo;\n }\n\n public async getClientConfiguration(\n timeStamp?: number,\n ): Promise<Result<ConfigurationDataType, KameleoonError>> {\n const environmentParam = this.environment\n ? UrlFirstParameter.Environment + this.environment\n : '';\n let timeStampParam = '';\n\n if (timeStamp) {\n if (environmentParam) {\n timeStampParam = UrlParameter.Ts + timeStamp;\n } else {\n timeStampParam = UrlFirstParameter.Ts + timeStamp;\n }\n }\n\n const requestUrl =\n URL.CLIENT_CONFIGURATION +\n this.siteCode +\n environmentParam +\n timeStampParam;\n\n const headers: HeadersType = {\n [Header.SdkType]: this.packageInfo.type.toLowerCase(),\n [Header.SdkVersion]: this.packageInfo.version,\n };\n\n try {\n const response = await this.requestDispatcher.getClientConfiguration(\n requestUrl,\n headers,\n );\n\n if (response) {\n return Ok(response as ConfigurationDataType);\n }\n\n return Err(new KameleoonError(KameleoonException.MaximumRetriesReached));\n } catch (error) {\n return Err(error as KameleoonError);\n }\n }\n\n public async getRemoteData(\n key: string,\n ): Promise<Result<JSONType, KameleoonError>> {\n const requestUrl: string =\n URL.DATA_MAP + this.siteCode + UrlParameter.Key + encodeURI(key);\n\n try {\n const response = await this.requestDispatcher.getRemoteData(requestUrl);\n return Ok(response);\n } catch (error) {\n return Err(error as KameleoonError);\n }\n }\n\n public async getVisitorData(\n visitorCode: string,\n filters: VisitorDataFiltersType,\n ): Promise<Result<GetVisitorDataResultType, KameleoonError>> {\n const {\n customData,\n previousVisitAmount,\n currentVisit,\n conversions,\n geolocation,\n experiments,\n pageViews,\n device,\n browser,\n operatingSystem,\n } = filters;\n\n const customDataParameter = customData\n ? UrlParameter.CustomData + true\n : '';\n const conversionsParameter = conversions\n ? UrlParameter.Conversion + true\n : '';\n const geolocationParameter = geolocation\n ? UrlParameter.Geolocation + true\n : '';\n const experimentsParameter = experiments\n ? UrlParameter.Experiment + true\n : '';\n const pageViewsParameter = pageViews ? UrlParameter.Page + true : '';\n const staticDataParameter = Boolean(device || browser || operatingSystem)\n ? UrlParameter.StaticData + true\n : '';\n const currentVisitParameter = currentVisit\n ? UrlParameter.CurrentVisit + true\n : '';\n\n const requestUrl: string =\n URL.VISIT_DATA +\n this.siteCode +\n UrlParameter.VisitorCode +\n visitorCode +\n UrlParameter.MaxNumberPreviousVisits +\n previousVisitAmount +\n customDataParameter +\n conversionsParameter +\n geolocationParameter +\n experimentsParameter +\n pageViewsParameter +\n staticDataParameter +\n currentVisitParameter;\n\n try {\n const response = await this.requestDispatcher.getRemoteData(requestUrl);\n return Ok(response as GetVisitorDataResultType);\n } catch (error) {\n return Err(error as KameleoonError);\n }\n }\n\n public async trackExperiment({\n visitorCode,\n dataUrl,\n variationDataUrl,\n userAgent,\n isUnallocated,\n }: TrackExperimentParamsType): Promise<Result<boolean, void>> {\n const url = this.getTrackingUrl(visitorCode);\n\n const unallocatedAddition = !dataUrl\n ? UrlEventType.Activity + UrlParameter.Nonce + Utilities.getNonce()\n : '';\n\n const bodyAddition = isUnallocated ? unallocatedAddition : variationDataUrl;\n\n const extendedBody = bodyAddition ? dataUrl + '\\n' + bodyAddition : dataUrl;\n\n const headers: HeadersType | undefined = userAgent\n ? {\n [Header.UserAgent]: userAgent,\n }\n : undefined;\n\n try {\n const response = await this.requestDispatcher.track({\n url,\n headers,\n body: extendedBody,\n });\n\n return Ok(response);\n } catch (_) {\n return Err();\n }\n }\n\n public async trackData({\n visitorCode,\n body,\n userAgent,\n isMappingIdentifier,\n }: TrackDataParamsType): Promise<Result<boolean, void>> {\n const url = this.getTrackingUrl(visitorCode, isMappingIdentifier);\n\n const requestBody =\n body || UrlEventType.Activity + UrlParameter.Nonce + Utilities.getNonce();\n\n const headers = userAgent\n ? {\n [Header.UserAgent]: userAgent,\n }\n : undefined;\n\n try {\n const response = await this.requestDispatcher.track({\n url,\n headers,\n body: requestBody,\n });\n\n return Ok(response);\n } catch (_) {\n return Err();\n }\n }\n\n private getTrackingUrl(\n visitorCode: string,\n isMappingIdentifier?: boolean,\n ): string {\n const { type, version } = this.packageInfo;\n\n const versionWithCore = encodeURIComponent(\n `${version}/${process.env.npm_package_version}`,\n );\n\n const identifierParameter = isMappingIdentifier\n ? UrlParameter.MappingValue\n : UrlParameter.VisitorCode;\n\n return (\n URL.VISIT_EVENT +\n this.siteCode +\n identifierParameter +\n visitorCode +\n UrlParameter.SdkName +\n type.toLowerCase() +\n UrlParameter.SdkVersion +\n versionWithCore\n );\n }\n}\n"],"mappings":"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"}
|
package/dist/types.d.ts
CHANGED
|
@@ -19,12 +19,15 @@ import { VisitorCodeManager } from './visitorCodeManager';
|
|
|
19
19
|
* - React/React Native SDK: `undefined` (no cleanup)
|
|
20
20
|
* - NodeJS SDK: `30`
|
|
21
21
|
*
|
|
22
|
-
*
|
|
22
|
+
* @param {string | undefined} domain - domain which cookie belongs to
|
|
23
|
+
* @param {number | undefined} requestTimeout - timeout in _milliseconds_ for requests
|
|
24
|
+
* @defaultvalue `10_000` (10 seconds)
|
|
23
25
|
* */
|
|
24
26
|
export type SDKConfigurationType = {
|
|
25
27
|
updateInterval?: number;
|
|
26
28
|
environment?: Environment;
|
|
27
29
|
targetingDataCleanupInterval?: number;
|
|
30
|
+
requestTimeout?: number;
|
|
28
31
|
domain?: string;
|
|
29
32
|
};
|
|
30
33
|
/**
|
package/dist/types.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"types.js","names":["Environment","Production","Staging","Development","exports","VariableType","BOOLEAN","NUMBER","STRING","JSON","Milliseconds","Second","Minute","Hour","Day","Week","Month"],"sources":["../src/types.ts"],"sourcesContent":["import { ConfigurationDataType, JSONType } from './clientConfiguration/types';\nimport { SdkLanguageType } from './constants';\nimport { IExternalEventSourceConstructor } from './eventSource';\nimport { IExternalStorageConstructor } from './storage';\nimport { IExternalRequestDispatcher } from './requester';\nimport { VisitorDataFiltersType } from './utilities';\nimport { VisitorCodeManager } from './visitorCodeManager';\n\n/**\n * @param {number} updateInterval - update interval in _minutes_ for sdk configuration, minimum value is 1 minute\n * @defaultvalue 60\n *\n * @param {Environment} environment - feature flag environment\n * @defaultvalue Environment.Production\n *\n * @param {number | undefined} targetingDataCleanupInterval - interval in _minutes_ for cleaning up targeting data, minimum value is 1 minute\n * Note: if not specified, default value will be used\n * @defaultvalue\n * - JavaScript SDK: `undefined` (no cleanup)\n * - React/React Native SDK: `undefined` (no cleanup)\n * - NodeJS SDK: `30`\n *\n * @param {string | undefined} domain - domain which cookie belongs to\n * */\nexport type SDKConfigurationType = {\n updateInterval?: number;\n environment?: Environment;\n targetingDataCleanupInterval?: number;\n domain?: string;\n};\n\n/**\n * @param {string} siteCode - client's siteCode defined on Kameleoon platform\n * @param {Partial<SDKConfigurationType>} configuration - client's configuration\n * @param {InternalSDKConfigurationType} internalConfiguration - internal configuration for sdk core to be initialized with certain parameters to certain type of JavaScript SDK\n * */\nexport type SDKCoreParameters = {\n siteCode: string;\n configuration?: Partial<SDKConfigurationType>;\n internalConfiguration: InternalSDKConfigurationType;\n};\n\n/**\n * @param {SdkLanguageType} type - type of the SDK\n * @param {string} version - version of the package\n * */\nexport type ExternalPackageInfoType = {\n type: SdkLanguageType;\n version: string;\n};\n\n/**\n * @param {IExternalStorage | undefined} externalStorage - external file system storage implemented outside client initialization\n * @param {IExternalEventSourceConstructor | undefined} externalEventSource - constructor for building external event source implementation\n * @param {ExternalPackageInfoType} externalPackageInfo - external package info, used to get package version and name\n * @param {ConfigurationDataType} externalClientConfiguration - external fetched client configuration\n * @param {IExternalRequestDispatcher} externalRequestDispatcher - external request dispatcher, used to track data or get data\n * @param {VisitorCodeManager} externalVisitorCodeManager - external visitor code manager, used to get or generate visitor code\n * @param {number} targetingDataCleanupInterval - interval in *minutes* for cleaning up targeting data, minimum value is 1 minute\n * */\nexport type InternalSDKConfigurationType = {\n externalStorage: IExternalStorageConstructor;\n externalEventSource: IExternalEventSourceConstructor;\n externalVisitorCodeManager: VisitorCodeManager;\n externalPackageInfo: ExternalPackageInfoType;\n externalRequestDispatcher: IExternalRequestDispatcher;\n externalClientConfiguration?: ConfigurationDataType;\n};\n\n/**\n * @readonly\n * @enum {string} an Enum containing all possible variants of environment, passed as an argument to KameleoonClient `configuration`s `environment` field\n * */\nexport enum Environment {\n Production = 'production',\n Staging = 'staging',\n Development = 'development',\n}\n\n/**\n * @readonly\n * @enum {string} an Enum containing all possible variants of feature variable types\n * */\nexport enum VariableType {\n BOOLEAN = 'BOOLEAN',\n NUMBER = 'NUMBER',\n STRING = 'STRING',\n JSON = 'JSON',\n}\n\nexport type BooleanVariableType = {\n key: string;\n type: VariableType.BOOLEAN;\n value: boolean;\n};\n\nexport type NumberVariableType = {\n key: string;\n type: VariableType.NUMBER;\n value: number;\n};\n\nexport type StringVariableType = {\n key: string;\n type: VariableType.STRING;\n value: string;\n};\n\nexport type JSONVariableType = {\n key: string;\n type: VariableType.JSON;\n value: JSONType;\n};\n\n/**\n * @type FeatureVariableResultType - tuple of possible feature variable result types, each possible variation is an object containing `key`, `type` and `value` fields, `type` can be checked against `VariableType` enum, if the `type` is `VariableType.BOOLEAN` then the `value` type will be `boolean` and so on.\n * */\nexport type FeatureVariableResultType =\n | BooleanVariableType\n | NumberVariableType\n | StringVariableType\n | JSONVariableType;\n\n/**\n * @type FeatureFlagVariableType - tuple of possible feature variable result types, each possible variation is an object containing `type` and `value` fields, `type` can be checked against `VariableType` enum, if the `type` is `VariableType.BOOLEAN` then the `value` type will be `boolean` and so on.\n * */\nexport type FeatureFlagVariableType = Omit<FeatureVariableResultType, 'key'>;\n\n/**\n * @readonly\n * @enum {number} a helper Enum for getting milliseconds for a second/minute/hour/day/week/month.\n * Month is considered in average of 30 days\n * */\nexport enum Milliseconds {\n Second = 1000,\n Minute = 60 * Milliseconds.Second,\n Hour = 60 * Milliseconds.Minute,\n Day = 24 * Milliseconds.Hour,\n Week = 7 * Milliseconds.Day,\n Month = 30 * Milliseconds.Day,\n}\n\n/**\n * @param {string} visitorCode - unique visitor identifier, shouldn't exceed 255 characters\n * @param {number} goalId - an id of a goal to track\n * @param {number | undefined} revenue - an optional parameter for revenue, default value is `0`\n * @param {boolean | undefined} isUniqueIdentifier - an optional parameter for specifying if the visitorCode is a unique identifier, default value is `false`\n * */\nexport type TrackConversionParamsType = {\n visitorCode: string;\n goalId: number;\n revenue?: number;\n isUniqueIdentifier?: boolean;\n};\n\n/**\n * @param {string} visitorCode - unique visitor identifier, shouldn't exceed 255 characters\n * @param {boolean | undefined} shouldAddData - optional parameter for adding retrieved data to the storage like `addData` method does, default value is `true`\n * @param {VisitorDataFiltersType | undefined} filters - optional parameter for specifying the filters for which data should be retrieved from what visit, by default only current and latest previous visits' `customData` is retrieved\n * */\nexport type RemoteVisitorDataParamsType = {\n visitorCode: string;\n shouldAddData?: boolean;\n filters?: VisitorDataFiltersType;\n};\n\nexport type FeatureFlagType = {\n id: number;\n key: string;\n};\n\n/**\n * @param {string} visitorCode - unique visitor identifier, shouldn't exceed 255 characters\n * @param {string} featureKey - key of the feature flag to look for, can be found on Kameleoon Platform\n * @param {string} variableKey - key of the variable to be found for a feature flag with provided `featureKey`, can be found on Kameleoon Platform\n * */\nexport type GetFeatureFlagVariableParamsType = {\n visitorCode: string;\n featureKey: string;\n variableKey: string;\n};\n\n/**\n * @param {string} visitorCode - unique visitor identification string, can't exceed 255 characters length\n * @param {number} customDataIndex - index of the custom data in the warehouse audience\n * @param {string | undefined} warehouseKey - unique key to identify the warehouse data (usually internal user ID)\n * If not specified, the `visitorCode` will be used as a `warehouseKey`\n * */\nexport type GetVisitorWarehouseAudienceParamsType = {\n visitorCode: string;\n customDataIndex: number;\n warehouseKey?: string;\n};\n\nexport type WarehouseAudienceType = {\n // --- Note ---\n // Using `unknown` type here because we don't care about the type of the value\n warehouseAudiences: Record<string, unknown>;\n};\n\n/**\n * @param {string} visitorCode - unique visitor identifier, shouldn't exceed 255 characters\n * @param {string | undefined} domain - domain which cookie belongs to\n * */\nexport type GetResultCookieParametersType = {\n visitorCode: string;\n domain?: string;\n};\n\nexport type TrackingCacheItemType = {\n [experimentId: number]: { variationId: number; expirationTime: number };\n};\n\n/**\n * @param {string} visitorCode - unique visitor identifier, shouldn't exceed 255 characters\n * @param {boolean} consent - a value representing the legal consent status. - 'true' indicates the\n * visitor has given legal consent. - 'false' indicates the visitor has withdrawn or not\n * provided legal consent.\n * @param {(visitorCode: string) => void} setData - a callback to set a visitor code in cookie\n * */\nexport type SetUserConsentParametersType = {\n visitorCode: string;\n consent: boolean;\n setData: (visitorCode: string) => void;\n};\n\n/**\n * @param {string | undefined} defaultVisitorCode - visitor code to be used in case there is no visitor code in cookies\n * @param {(visitorCode: string) => void} setData - a callback to set a visitor code in cookie\n * @param {() => string} getData - a callback to get a visitor code from cookie\n * */\nexport type GetVisitorCodeParamtersType = {\n defaultVisitorCode?: string;\n setData: (visitorCode: string) => void;\n getData: () => string;\n};\n"],"mappings":"4IAyEY,CAAAA,WAAW,UAAXA,CAAW,QAAX,CAAAA,CAAW,CAAAC,UAAA,cAAXD,CAAW,CAAAE,OAAA,WAAXF,CAAW,CAAAG,WAAA,eAAXH,CAAW,MAAAI,OAAA,CAAAJ,WAAA,CAAAA,WAAA,IAUX,CAAAK,YAAY,UAAZA,CAAY,QAAZ,CAAAA,CAAY,CAAAC,OAAA,WAAZD,CAAY,CAAAE,MAAA,UAAZF,CAAY,CAAAG,MAAA,UAAZH,CAAY,CAAAI,IAAA,QAAZJ,CAAY,MAAAD,OAAA,CAAAC,YAAA,CAAAA,YAAA,IAkDZ,CAAAK,YAAY,UAAZA,CAAY,QAAZ,CAAAA,CAAY,CAAZA,CAAY,CAAAC,MAAA,gBAAZD,CAAY,CAAZA,CAAY,CAAAE,MAAA,CAEb,EAAE,CAAGF,CAAY,CAACC,MAAM,WAFvBD,CAAY,CAAZA,CAAY,CAAAG,IAAA,CAGf,EAAE,CAAGH,CAAY,CAACE,MAAM,SAHrBF,CAAY,CAAZA,CAAY,CAAAI,GAAA,CAIhB,EAAE,CAAGJ,CAAY,CAACG,IAAI,QAJlBH,CAAY,CAAZA,CAAY,CAAAK,IAAA,CAKf,CAAC,CAAGL,CAAY,CAACI,GAAG,SALjBJ,CAAY,CAAZA,CAAY,CAAAM,KAAA,CAMd,EAAE,CAAGN,CAAY,CAACI,GAAG,UANnBJ,CAAY,MAAAN,OAAA,CAAAM,YAAA,CAAAA,YAAA"}
|
|
1
|
+
{"version":3,"file":"types.js","names":["Environment","Production","Staging","Development","exports","VariableType","BOOLEAN","NUMBER","STRING","JSON","Milliseconds","Second","Minute","Hour","Day","Week","Month"],"sources":["../src/types.ts"],"sourcesContent":["import { ConfigurationDataType, JSONType } from './clientConfiguration/types';\nimport { SdkLanguageType } from './constants';\nimport { IExternalEventSourceConstructor } from './eventSource';\nimport { IExternalStorageConstructor } from './storage';\nimport { IExternalRequestDispatcher } from './requester';\nimport { VisitorDataFiltersType } from './utilities';\nimport { VisitorCodeManager } from './visitorCodeManager';\n\n/**\n * @param {number} updateInterval - update interval in _minutes_ for sdk configuration, minimum value is 1 minute\n * @defaultvalue 60\n *\n * @param {Environment} environment - feature flag environment\n * @defaultvalue Environment.Production\n *\n * @param {number | undefined} targetingDataCleanupInterval - interval in _minutes_ for cleaning up targeting data, minimum value is 1 minute\n * Note: if not specified, default value will be used\n * @defaultvalue\n * - JavaScript SDK: `undefined` (no cleanup)\n * - React/React Native SDK: `undefined` (no cleanup)\n * - NodeJS SDK: `30`\n *\n * @param {string | undefined} domain - domain which cookie belongs to\n * @param {number | undefined} requestTimeout - timeout in _milliseconds_ for requests\n * @defaultvalue `10_000` (10 seconds)\n * */\nexport type SDKConfigurationType = {\n updateInterval?: number;\n environment?: Environment;\n targetingDataCleanupInterval?: number;\n requestTimeout?: number;\n domain?: string;\n};\n\n/**\n * @param {string} siteCode - client's siteCode defined on Kameleoon platform\n * @param {Partial<SDKConfigurationType>} configuration - client's configuration\n * @param {InternalSDKConfigurationType} internalConfiguration - internal configuration for sdk core to be initialized with certain parameters to certain type of JavaScript SDK\n * */\nexport type SDKCoreParameters = {\n siteCode: string;\n configuration?: Partial<SDKConfigurationType>;\n internalConfiguration: InternalSDKConfigurationType;\n};\n\n/**\n * @param {SdkLanguageType} type - type of the SDK\n * @param {string} version - version of the package\n * */\nexport type ExternalPackageInfoType = {\n type: SdkLanguageType;\n version: string;\n};\n\n/**\n * @param {IExternalStorage | undefined} externalStorage - external file system storage implemented outside client initialization\n * @param {IExternalEventSourceConstructor | undefined} externalEventSource - constructor for building external event source implementation\n * @param {ExternalPackageInfoType} externalPackageInfo - external package info, used to get package version and name\n * @param {ConfigurationDataType} externalClientConfiguration - external fetched client configuration\n * @param {IExternalRequestDispatcher} externalRequestDispatcher - external request dispatcher, used to track data or get data\n * @param {VisitorCodeManager} externalVisitorCodeManager - external visitor code manager, used to get or generate visitor code\n * @param {number} targetingDataCleanupInterval - interval in *minutes* for cleaning up targeting data, minimum value is 1 minute\n * */\nexport type InternalSDKConfigurationType = {\n externalStorage: IExternalStorageConstructor;\n externalEventSource: IExternalEventSourceConstructor;\n externalVisitorCodeManager: VisitorCodeManager;\n externalPackageInfo: ExternalPackageInfoType;\n externalRequestDispatcher: IExternalRequestDispatcher;\n externalClientConfiguration?: ConfigurationDataType;\n};\n\n/**\n * @readonly\n * @enum {string} an Enum containing all possible variants of environment, passed as an argument to KameleoonClient `configuration`s `environment` field\n * */\nexport enum Environment {\n Production = 'production',\n Staging = 'staging',\n Development = 'development',\n}\n\n/**\n * @readonly\n * @enum {string} an Enum containing all possible variants of feature variable types\n * */\nexport enum VariableType {\n BOOLEAN = 'BOOLEAN',\n NUMBER = 'NUMBER',\n STRING = 'STRING',\n JSON = 'JSON',\n}\n\nexport type BooleanVariableType = {\n key: string;\n type: VariableType.BOOLEAN;\n value: boolean;\n};\n\nexport type NumberVariableType = {\n key: string;\n type: VariableType.NUMBER;\n value: number;\n};\n\nexport type StringVariableType = {\n key: string;\n type: VariableType.STRING;\n value: string;\n};\n\nexport type JSONVariableType = {\n key: string;\n type: VariableType.JSON;\n value: JSONType;\n};\n\n/**\n * @type FeatureVariableResultType - tuple of possible feature variable result types, each possible variation is an object containing `key`, `type` and `value` fields, `type` can be checked against `VariableType` enum, if the `type` is `VariableType.BOOLEAN` then the `value` type will be `boolean` and so on.\n * */\nexport type FeatureVariableResultType =\n | BooleanVariableType\n | NumberVariableType\n | StringVariableType\n | JSONVariableType;\n\n/**\n * @type FeatureFlagVariableType - tuple of possible feature variable result types, each possible variation is an object containing `type` and `value` fields, `type` can be checked against `VariableType` enum, if the `type` is `VariableType.BOOLEAN` then the `value` type will be `boolean` and so on.\n * */\nexport type FeatureFlagVariableType = Omit<FeatureVariableResultType, 'key'>;\n\n/**\n * @readonly\n * @enum {number} a helper Enum for getting milliseconds for a second/minute/hour/day/week/month.\n * Month is considered in average of 30 days\n * */\nexport enum Milliseconds {\n Second = 1000,\n Minute = 60 * Milliseconds.Second,\n Hour = 60 * Milliseconds.Minute,\n Day = 24 * Milliseconds.Hour,\n Week = 7 * Milliseconds.Day,\n Month = 30 * Milliseconds.Day,\n}\n\n/**\n * @param {string} visitorCode - unique visitor identifier, shouldn't exceed 255 characters\n * @param {number} goalId - an id of a goal to track\n * @param {number | undefined} revenue - an optional parameter for revenue, default value is `0`\n * @param {boolean | undefined} isUniqueIdentifier - an optional parameter for specifying if the visitorCode is a unique identifier, default value is `false`\n * */\nexport type TrackConversionParamsType = {\n visitorCode: string;\n goalId: number;\n revenue?: number;\n isUniqueIdentifier?: boolean;\n};\n\n/**\n * @param {string} visitorCode - unique visitor identifier, shouldn't exceed 255 characters\n * @param {boolean | undefined} shouldAddData - optional parameter for adding retrieved data to the storage like `addData` method does, default value is `true`\n * @param {VisitorDataFiltersType | undefined} filters - optional parameter for specifying the filters for which data should be retrieved from what visit, by default only current and latest previous visits' `customData` is retrieved\n * */\nexport type RemoteVisitorDataParamsType = {\n visitorCode: string;\n shouldAddData?: boolean;\n filters?: VisitorDataFiltersType;\n};\n\nexport type FeatureFlagType = {\n id: number;\n key: string;\n};\n\n/**\n * @param {string} visitorCode - unique visitor identifier, shouldn't exceed 255 characters\n * @param {string} featureKey - key of the feature flag to look for, can be found on Kameleoon Platform\n * @param {string} variableKey - key of the variable to be found for a feature flag with provided `featureKey`, can be found on Kameleoon Platform\n * */\nexport type GetFeatureFlagVariableParamsType = {\n visitorCode: string;\n featureKey: string;\n variableKey: string;\n};\n\n/**\n * @param {string} visitorCode - unique visitor identification string, can't exceed 255 characters length\n * @param {number} customDataIndex - index of the custom data in the warehouse audience\n * @param {string | undefined} warehouseKey - unique key to identify the warehouse data (usually internal user ID)\n * If not specified, the `visitorCode` will be used as a `warehouseKey`\n * */\nexport type GetVisitorWarehouseAudienceParamsType = {\n visitorCode: string;\n customDataIndex: number;\n warehouseKey?: string;\n};\n\nexport type WarehouseAudienceType = {\n // --- Note ---\n // Using `unknown` type here because we don't care about the type of the value\n warehouseAudiences: Record<string, unknown>;\n};\n\n/**\n * @param {string} visitorCode - unique visitor identifier, shouldn't exceed 255 characters\n * @param {string | undefined} domain - domain which cookie belongs to\n * */\nexport type GetResultCookieParametersType = {\n visitorCode: string;\n domain?: string;\n};\n\nexport type TrackingCacheItemType = {\n [experimentId: number]: { variationId: number; expirationTime: number };\n};\n\n/**\n * @param {string} visitorCode - unique visitor identifier, shouldn't exceed 255 characters\n * @param {boolean} consent - a value representing the legal consent status. - 'true' indicates the\n * visitor has given legal consent. - 'false' indicates the visitor has withdrawn or not\n * provided legal consent.\n * @param {(visitorCode: string) => void} setData - a callback to set a visitor code in cookie\n * */\nexport type SetUserConsentParametersType = {\n visitorCode: string;\n consent: boolean;\n setData: (visitorCode: string) => void;\n};\n\n/**\n * @param {string | undefined} defaultVisitorCode - visitor code to be used in case there is no visitor code in cookies\n * @param {(visitorCode: string) => void} setData - a callback to set a visitor code in cookie\n * @param {() => string} getData - a callback to get a visitor code from cookie\n * */\nexport type GetVisitorCodeParamtersType = {\n defaultVisitorCode?: string;\n setData: (visitorCode: string) => void;\n getData: () => string;\n};\n"],"mappings":"4IA4EY,CAAAA,WAAW,UAAXA,CAAW,QAAX,CAAAA,CAAW,CAAAC,UAAA,cAAXD,CAAW,CAAAE,OAAA,WAAXF,CAAW,CAAAG,WAAA,eAAXH,CAAW,MAAAI,OAAA,CAAAJ,WAAA,CAAAA,WAAA,IAUX,CAAAK,YAAY,UAAZA,CAAY,QAAZ,CAAAA,CAAY,CAAAC,OAAA,WAAZD,CAAY,CAAAE,MAAA,UAAZF,CAAY,CAAAG,MAAA,UAAZH,CAAY,CAAAI,IAAA,QAAZJ,CAAY,MAAAD,OAAA,CAAAC,YAAA,CAAAA,YAAA,IAkDZ,CAAAK,YAAY,UAAZA,CAAY,QAAZ,CAAAA,CAAY,CAAZA,CAAY,CAAAC,MAAA,gBAAZD,CAAY,CAAZA,CAAY,CAAAE,MAAA,CAEb,EAAE,CAAGF,CAAY,CAACC,MAAM,WAFvBD,CAAY,CAAZA,CAAY,CAAAG,IAAA,CAGf,EAAE,CAAGH,CAAY,CAACE,MAAM,SAHrBF,CAAY,CAAZA,CAAY,CAAAI,GAAA,CAIhB,EAAE,CAAGJ,CAAY,CAACG,IAAI,QAJlBH,CAAY,CAAZA,CAAY,CAAAK,IAAA,CAKf,CAAC,CAAGL,CAAY,CAACI,GAAG,SALjBJ,CAAY,CAAZA,CAAY,CAAAM,KAAA,CAMd,EAAE,CAAGN,CAAY,CAACI,GAAG,UANnBJ,CAAY,MAAAN,OAAA,CAAAM,YAAA,CAAAA,YAAA"}
|
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
"use strict";Object.defineProperty(exports,"__esModule",{value:!0}),exports.Utilities=void 0;var _tsRes=require("ts-res"),_kameleoonError=require("../kameleoonError"),_types=require("../types"),_kameleoonData=require("../kameleoonData"),_constants=require("../constants"),_requester=require("../requester"),_targeting=require("../targeting"),_constants2=require("./constants"),_types2=require("./types"),_excluded=["timestamp","isExperiment"];function _typeof(a){"@babel/helpers - typeof";return _typeof="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(a){return typeof a}:function(a){return a&&"function"==typeof Symbol&&a.constructor===Symbol&&a!==Symbol.prototype?"symbol":typeof a},_typeof(a)}function _objectWithoutProperties(a,b){if(null==a)return{};var c,d,e=_objectWithoutPropertiesLoose(a,b);if(Object.getOwnPropertySymbols){var f=Object.getOwnPropertySymbols(a);for(d=0;d<f.length;d++)c=f[d],0<=b.indexOf(c)||Object.prototype.propertyIsEnumerable.call(a,c)&&(e[c]=a[c])}return e}function _objectWithoutPropertiesLoose(a,b){if(null==a)return{};var c,d,e={},f=Object.keys(a);for(d=0;d<f.length;d++)c=f[d],0<=b.indexOf(c)||(e[c]=a[c]);return e}function ownKeys(a,b){var c=Object.keys(a);if(Object.getOwnPropertySymbols){var d=Object.getOwnPropertySymbols(a);b&&(d=d.filter(function(b){return Object.getOwnPropertyDescriptor(a,b).enumerable})),c.push.apply(c,d)}return c}function _objectSpread(a){for(var b,c=1;c<arguments.length;c++)b=null==arguments[c]?{}:arguments[c],c%2?ownKeys(Object(b),!0).forEach(function(c){_defineProperty(a,c,b[c])}):Object.getOwnPropertyDescriptors?Object.defineProperties(a,Object.getOwnPropertyDescriptors(b)):ownKeys(Object(b)).forEach(function(c){Object.defineProperty(a,c,Object.getOwnPropertyDescriptor(b,c))});return a}function _toConsumableArray(a){return _arrayWithoutHoles(a)||_iterableToArray(a)||_unsupportedIterableToArray(a)||_nonIterableSpread()}function _nonIterableSpread(){throw new TypeError("Invalid attempt to spread non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}function _iterableToArray(a){if("undefined"!=typeof Symbol&&null!=a[Symbol.iterator]||null!=a["@@iterator"])return Array.from(a)}function _arrayWithoutHoles(a){if(Array.isArray(a))return _arrayLikeToArray(a)}function _defineProperty(a,b,c){return b=_toPropertyKey(b),b in a?Object.defineProperty(a,b,{value:c,enumerable:!0,configurable:!0,writable:!0}):a[b]=c,a}function _regeneratorRuntime(){"use strict";function a(a,b,c){return Object.defineProperty(a,b,{value:c,enumerable:!0,configurable:!0,writable:!0}),a[b]}function b(a,b,c,e){var f=b&&b.prototype instanceof d?b:d,g=Object.create(f.prototype),h=new m(e||[]);return s(g,"_invoke",{value:i(a,c,h)}),g}function c(a,b,c){try{return{type:"normal",arg:a.call(b,c)}}catch(a){return{type:"throw",arg:a}}}function d(){}function e(){}function f(){}function g(b){["next","throw","return"].forEach(function(c){a(b,c,function(a){return this._invoke(c,a)})})}function h(a,b){function d(e,f,g,h){var i=c(a[e],a,f);if("throw"!==i.type){var j=i.arg,k=j.value;return k&&"object"==_typeof(k)&&r.call(k,"__await")?b.resolve(k.__await).then(function(a){d("next",a,g,h)},function(a){d("throw",a,g,h)}):b.resolve(k).then(function(a){j.value=a,g(j)},function(a){return d("throw",a,g,h)})}h(i.arg)}var e;s(this,"_invoke",{value:function value(a,c){function f(){return new b(function(b,e){d(a,c,b,e)})}return e=e?e.then(f,f):f()}})}function i(a,b,d){var e="suspendedStart";return function(f,g){if("executing"==e)throw new Error("Generator is already running");if("completed"==e){if("throw"===f)throw g;return o()}for(d.method=f,d.arg=g;;){var h=d.delegate;if(h){var i=j(h,d);if(i){if(i===x)continue;return i}}if("next"===d.method)d.sent=d._sent=d.arg;else if("throw"===d.method){if("suspendedStart"==e)throw e="completed",d.arg;d.dispatchException(d.arg)}else"return"===d.method&&d.abrupt("return",d.arg);e="executing";var k=c(a,b,d);if("normal"===k.type){if(e=d.done?"completed":"suspendedYield",k.arg===x)continue;return{value:k.arg,done:d.done}}"throw"===k.type&&(e="completed",d.method="throw",d.arg=k.arg)}}}function j(a,b){var d=b.method,e=a.iterator[d];if(void 0===e)return b.delegate=null,"throw"===d&&a.iterator.return&&(b.method="return",b.arg=void 0,j(a,b),"throw"===b.method)||"return"!==d&&(b.method="throw",b.arg=new TypeError("The iterator does not provide a '"+d+"' method")),x;var f=c(e,a.iterator,b.arg);if("throw"===f.type)return b.method="throw",b.arg=f.arg,b.delegate=null,x;var g=f.arg;return g?g.done?(b[a.resultName]=g.value,b.next=a.nextLoc,"return"!==b.method&&(b.method="next",b.arg=void 0),b.delegate=null,x):g:(b.method="throw",b.arg=new TypeError("iterator result is not an object"),b.delegate=null,x)}function k(a){var b={tryLoc:a[0]};1 in a&&(b.catchLoc=a[1]),2 in a&&(b.finallyLoc=a[2],b.afterLoc=a[3]),this.tryEntries.push(b)}function l(a){var b=a.completion||{};b.type="normal",delete b.arg,a.completion=b}function m(a){this.tryEntries=[{tryLoc:"root"}],a.forEach(k,this),this.reset(!0)}function n(a){if(a){var b=a[u];if(b)return b.call(a);if("function"==typeof a.next)return a;if(!isNaN(a.length)){var c=-1,d=function b(){for(;++c<a.length;)if(r.call(a,c))return b.value=a[c],b.done=!1,b;return b.value=void 0,b.done=!0,b};return d.next=d}}return{next:o}}function o(){return{value:void 0,done:!0}}_regeneratorRuntime=function(){return p};var p={},q=Object.prototype,r=q.hasOwnProperty,s=Object.defineProperty||function(a,b,c){a[b]=c.value},t="function"==typeof Symbol?Symbol:{},u=t.iterator||"@@iterator",v=t.asyncIterator||"@@asyncIterator",w=t.toStringTag||"@@toStringTag";try{a({},"")}catch(b){a=function(a,b,c){return a[b]=c}}p.wrap=b;var x={},y={};a(y,u,function(){return this});var z=Object.getPrototypeOf,A=z&&z(z(n([])));A&&A!==q&&r.call(A,u)&&(y=A);var B=f.prototype=d.prototype=Object.create(y);return e.prototype=f,s(B,"constructor",{value:f,configurable:!0}),s(f,"constructor",{value:e,configurable:!0}),e.displayName=a(f,w,"GeneratorFunction"),p.isGeneratorFunction=function(a){var b="function"==typeof a&&a.constructor;return!!b&&(b===e||"GeneratorFunction"===(b.displayName||b.name))},p.mark=function(b){return Object.setPrototypeOf?Object.setPrototypeOf(b,f):(b.__proto__=f,a(b,w,"GeneratorFunction")),b.prototype=Object.create(B),b},p.awrap=function(a){return{__await:a}},g(h.prototype),a(h.prototype,v,function(){return this}),p.AsyncIterator=h,p.async=function(a,c,d,e,f){void 0===f&&(f=Promise);var g=new h(b(a,c,d,e),f);return p.isGeneratorFunction(c)?g:g.next().then(function(a){return a.done?a.value:g.next()})},g(B),a(B,w,"Generator"),a(B,u,function(){return this}),a(B,"toString",function(){return"[object Generator]"}),p.keys=function(a){var b=Object(a),c=[];for(var d in b)c.push(d);return c.reverse(),function a(){for(;c.length;){var d=c.pop();if(d in b)return a.value=d,a.done=!1,a}return a.done=!0,a}},p.values=n,m.prototype={constructor:m,reset:function reset(a){if(this.prev=0,this.next=0,this.sent=this._sent=void 0,this.done=!1,this.delegate=null,this.method="next",this.arg=void 0,this.tryEntries.forEach(l),!a)for(var b in this)"t"===b.charAt(0)&&r.call(this,b)&&!isNaN(+b.slice(1))&&(this[b]=void 0)},stop:function stop(){this.done=!0;var a=this.tryEntries[0].completion;if("throw"===a.type)throw a.arg;return this.rval},dispatchException:function dispatchException(a){function b(b,d){return f.type="throw",f.arg=a,c.next=b,d&&(c.method="next",c.arg=void 0),!!d}if(this.done)throw a;for(var c=this,d=this.tryEntries.length-1;0<=d;--d){var e=this.tryEntries[d],f=e.completion;if("root"===e.tryLoc)return b("end");if(e.tryLoc<=this.prev){var g=r.call(e,"catchLoc"),h=r.call(e,"finallyLoc");if(g&&h){if(this.prev<e.catchLoc)return b(e.catchLoc,!0);if(this.prev<e.finallyLoc)return b(e.finallyLoc)}else if(!g){if(!h)throw new Error("try statement without catch or finally");if(this.prev<e.finallyLoc)return b(e.finallyLoc)}else if(this.prev<e.catchLoc)return b(e.catchLoc,!0)}}},abrupt:function abrupt(a,b){for(var c,d=this.tryEntries.length-1;0<=d;--d)if(c=this.tryEntries[d],c.tryLoc<=this.prev&&r.call(c,"finallyLoc")&&this.prev<c.finallyLoc){var e=c;break}e&&("break"===a||"continue"===a)&&e.tryLoc<=b&&b<=e.finallyLoc&&(e=null);var f=e?e.completion:{};return f.type=a,f.arg=b,e?(this.method="next",this.next=e.finallyLoc,x):this.complete(f)},complete:function complete(a,b){if("throw"===a.type)throw a.arg;return"break"===a.type||"continue"===a.type?this.next=a.arg:"return"===a.type?(this.rval=this.arg=a.arg,this.method="return",this.next="end"):"normal"===a.type&&b&&(this.next=b),x},finish:function finish(a){for(var b,c=this.tryEntries.length-1;0<=c;--c)if(b=this.tryEntries[c],b.finallyLoc===a)return this.complete(b.completion,b.afterLoc),l(b),x},catch:function _catch(a){for(var b,c=this.tryEntries.length-1;0<=c;--c)if(b=this.tryEntries[c],b.tryLoc===a){var d=b.completion;if("throw"===d.type){var e=d.arg;l(b)}return e}throw new Error("illegal catch attempt")},delegateYield:function delegateYield(a,b,c){return this.delegate={iterator:n(a),resultName:b,nextLoc:c},"next"===this.method&&(this.arg=void 0),x}},p}function _slicedToArray(a,b){return _arrayWithHoles(a)||_iterableToArrayLimit(a,b)||_unsupportedIterableToArray(a,b)||_nonIterableRest()}function _nonIterableRest(){throw new TypeError("Invalid attempt to destructure non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}function _iterableToArrayLimit(a,b){var c=null==a?null:"undefined"!=typeof Symbol&&a[Symbol.iterator]||a["@@iterator"];if(null!=c){var d,e,f,g,h=[],i=!0,j=!1;try{if(f=(c=c.call(a)).next,0===b){if(Object(c)!==c)return;i=!1}else for(;!(i=(d=f.call(c)).done)&&(h.push(d.value),h.length!==b);i=!0);}catch(a){j=!0,e=a}finally{try{if(!i&&null!=c.return&&(g=c.return(),Object(g)!==g))return}finally{if(j)throw e}}return h}}function _arrayWithHoles(a){if(Array.isArray(a))return a}function asyncGeneratorStep(a,b,c,d,e,f,g){try{var h=a[f](g),i=h.value}catch(a){return void c(a)}h.done?b(i):Promise.resolve(i).then(d,e)}function _asyncToGenerator(a){return function(){var b=this,c=arguments;return new Promise(function(d,e){function f(a){asyncGeneratorStep(h,d,e,f,g,"next",a)}function g(a){asyncGeneratorStep(h,d,e,f,g,"throw",a)}var h=a.apply(b,c);f(void 0)})}}function _createForOfIteratorHelper(a,b){var c="undefined"!=typeof Symbol&&a[Symbol.iterator]||a["@@iterator"];if(!c){if(Array.isArray(a)||(c=_unsupportedIterableToArray(a))||b&&a&&"number"==typeof a.length){c&&(a=c);var d=0,e=function(){};return{s:e,n:function n(){return d>=a.length?{done:!0}:{done:!1,value:a[d++]}},e:function e(a){throw a},f:e}}throw new TypeError("Invalid attempt to iterate non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}var f,g=!0,h=!1;return{s:function s(){c=c.call(a)},n:function n(){var a=c.next();return g=a.done,a},e:function e(a){h=!0,f=a},f:function f(){try{g||null==c.return||c.return()}finally{if(h)throw f}}}}function _unsupportedIterableToArray(a,b){if(a){if("string"==typeof a)return _arrayLikeToArray(a,b);var c=Object.prototype.toString.call(a).slice(8,-1);return"Object"===c&&a.constructor&&(c=a.constructor.name),"Map"===c||"Set"===c?Array.from(a):"Arguments"===c||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(c)?_arrayLikeToArray(a,b):void 0}}function _arrayLikeToArray(a,b){(null==b||b>a.length)&&(b=a.length);for(var c=0,d=Array(b);c<b;c++)d[c]=a[c];return d}function _classCallCheck(a,b){if(!(a instanceof b))throw new TypeError("Cannot call a class as a function")}function _defineProperties(a,b){for(var c,d=0;d<b.length;d++)c=b[d],c.enumerable=c.enumerable||!1,c.configurable=!0,"value"in c&&(c.writable=!0),Object.defineProperty(a,_toPropertyKey(c.key),c)}function _createClass(a,b,c){return b&&_defineProperties(a.prototype,b),c&&_defineProperties(a,c),Object.defineProperty(a,"prototype",{writable:!1}),a}function _toPropertyKey(a){var b=_toPrimitive(a,"string");return"symbol"===_typeof(b)?b:b+""}function _toPrimitive(a,b){if("object"!==_typeof(a)||null===a)return a;var c=a[Symbol.toPrimitive];if(c!==void 0){var d=c.call(a,b||"default");if("object"!==_typeof(d))return d;throw new TypeError("@@toPrimitive must return a primitive value.")}return("string"===b?String:Number)(a)}var Utilities=function(){function a(){_classCallCheck(this,a)}return _createClass(a,null,[{key:"checkTargeting",value:function checkTargeting(a){var b=a.segment,c=a.visitorCode,d=a.targetingData,e=a.experimentId,f=a.variationConfiguration,g=a.clientConfiguration,h=a.packageInfo,i=a.dataManager;if(!b||!b.conditionsData.firstLevel.length)return(0,_tsRes.Ok)(!0);if(!f)return(0,_tsRes.Err)(new _kameleoonError.KameleoonError(_kameleoonError.KameleoonException.Initialization));var j={},k=f.getStoredVariations(c);k.ok&&(j=k.data);var l=i.getTree(b),m=void 0,n=void 0,o=void 0;l.hasTargetingType(_targeting.TargetingType.SEGMENT)&&(m=i.trees,n=g.segments),l.hasTargetingType(_targeting.TargetingType.TARGET_FEATURE_FLAG)&&(o=g.ruleMap);var p=l.evaluate({variationData:j,sdkInfo:h,segments:n,ruleMap:o,trees:m,targetingData:d,experimentId:e,visitorCode:c});return p}},{key:"validateVisitorCode",value:function validateVisitorCode(a){return 0===a.length?(0,_tsRes.Err)(new _kameleoonError.KameleoonError(_kameleoonError.KameleoonException.VisitorCodeEmpty)):a.length>_constants2.VISITOR_CODE_MAX_LENGTH?(0,_tsRes.Err)(new _kameleoonError.KameleoonError(_kameleoonError.KameleoonException.VisitorCodeMaxLength)):(0,_tsRes.Ok)()}},{key:"getDataUrl",value:function getDataUrl(b){function c(b){if(b.url){var c=b.data.type===_kameleoonData.KameleoonData.Conversion;if(f||c){var d=c?"":_requester.UrlParameter.Nonce+a.getNonce();h.push(b.url+d+"\n")}}}var d=b.visitorCode,e=b.dataManager,f=b.isConsentProvided,g=e.getUnsentData(d),h=[];if(!g||!g.size)return"";var i,j=_createForOfIteratorHelper(g.values());try{for(j.s();!(i=j.n()).done;){var k=i.value;Array.isArray(k)?k.forEach(function(a){return c(a)}):c(k)}}catch(a){j.e(a)}finally{j.f()}return h.join("")}},{key:"getVariationDataUrlAndSentExperimentIds",value:function getVariationDataUrlAndSentExperimentIds(b){var c=b.visitorCode,d=b.isConsentProvided,e=b.variationConfiguration,f=[],g=new Set,h=e.getUnsentData(c);h.ok&&h.data.length&&h.data.forEach(function(b){(b.isTargetedRule||d)&&(f.push(_requester.UrlEventType.Experiment+_requester.UrlParameter.Id+b.experimentId+_requester.UrlParameter.VariationId+b.variationId+_requester.UrlParameter.Nonce+a.getNonce()+"\n"),g.add(b.experimentId+""))});var i=f.join(""),j=Array.from(g);return[i,j]}},{key:"trackFeatureExperiment",value:function(){function a(){return b.apply(this,arguments)}var b=_asyncToGenerator(_regeneratorRuntime().mark(function b(a){var c,d,e,f,g,h,i,j,k,l,m,n,o,p,q,r,s,t,u,v,w,x;return _regeneratorRuntime().wrap(function y(b){for(;1;)switch(b.prev=b.next){case 0:if(c=a.featureFlagVariation,d=a.dataManager,e=a.visitorCode,f=a.requester,g=a.isOfflineModeOn,h=a.isConsentProvided,i=a.offlineTrackingStorage,j=a.variationConfiguration,k=c.variationId,l=c.rule,m=c.isTargetedRule,n=this.getUserAgent(e,d),o=this.getDataUrl({visitorCode:e,dataManager:d,isConsentProvided:h}),p=k||0,q=l?l.experimentId:0,r=this.getVariationDataUrlAndSentExperimentIds({visitorCode:e,isConsentProvided:h,variationConfiguration:j}),s=_slicedToArray(r,2),t=s[0],u=s[1],h||o||l){b.next=9;break}return b.abrupt("return");case 9:return v=null===k,w={visitorCode:e,dataUrl:o,variationDataUrl:t,experimentId:q,variationId:p,userAgent:n,isUnallocated:v},b.next=13,f.trackExperiment(w);case 13:x=b.sent,x.ok&&(h?d.clearUnsentData(e):d.clearUnsentDataByKey(e,_kameleoonData.KameleoonData.Conversion),u.forEach(function(a){j.markUnsentDataAsSent(e,a)})),!x.ok&&g&&this.addItemToOfflineTracking({item:w,storage:i,isExperiment:!0});case 16:case"end":return b.stop();}},b,this)}));return a}()},{key:"convertTimeUnit",value:function convertTimeUnit(a,b){var c,d=(c={},_defineProperty(c,_types2.TimeUnit.Minute,_types.Milliseconds.Minute),_defineProperty(c,_types2.TimeUnit.Hour,_types.Milliseconds.Hour),_defineProperty(c,_types2.TimeUnit.Day,_types.Milliseconds.Day),_defineProperty(c,_types2.TimeUnit.Week,_types.Milliseconds.Week),_defineProperty(c,_types2.TimeUnit.Month,_types.Milliseconds.Month),c);return a/d[b]}},{key:"parseFeatureVariable",value:function parseFeatureVariable(a){var b=a.key,c=a.type,d=a.value;switch(c){case _types.VariableType.BOOLEAN:return(0,_tsRes.Ok)({key:b,type:c,value:!!d});case _types.VariableType.STRING:return(0,_tsRes.Ok)({key:b,type:c,value:d+""});case _types.VariableType.NUMBER:var e=+d;return Number.isNaN(e)?(0,_tsRes.Err)(new _kameleoonError.KameleoonError(_kameleoonError.KameleoonException.NumberParse,d+"")):(0,_tsRes.Ok)({key:b,type:c,value:e});case _types.VariableType.JSON:try{var f=JSON.parse(a.value+"");return(0,_tsRes.Ok)({key:b,type:c,value:f})}catch(a){return(0,_tsRes.Err)(new _kameleoonError.KameleoonError(_kameleoonError.KameleoonException.JSONParse,a))}default:(0,_kameleoonError.exhaustCheck)(c);}}},{key:"parseVisitorData",value:function parseVisitorData(a){var b=a.data,c=a.filters,d=a.visitorCode,e=a.variationConfiguration,f=b.currentVisit,g=b.previousVisits,h=c.browser,j=c.customData,k=c.operatingSystem,l=c.conversions,m=c.device,n=c.geolocation,o=c.experiments,p=c.pageViews,q=[];if(f&&q.push(f),g&&q.push.apply(q,_toConsumableArray(g)),!q)return{visitorData:[]};var r=[];if(p){var s=_kameleoonData.PageView._listFromVisits(q);s.length&&r.push.apply(r,_toConsumableArray(s))}if(h){var t=_kameleoonData.Browser._fromVisits(q);t&&r.push(t)}if(o){for(var u,v={},w=q.length-1;0<=w;w--)if(u=q[w],!!u.experimentEvents){var x,y=_createForOfIteratorHelper(u.experimentEvents);try{for(y.s();!(x=y.n()).done;){var z=x.value,A=z.data,B=A.id,C=A.variationId;v[B]={variationId:C,isTargetedRule:!1,isSent:!1}}}catch(a){y.e(a)}finally{y.f()}}e.updateStoredVariations(d,v)}if(m){var D=_kameleoonData.Device._fromVisits(q);D&&r.push(D)}if(n){var E=_kameleoonData.GeolocationData._fromVisits(q);E&&r.push(E)}if(j&&r.push.apply(r,_toConsumableArray(_kameleoonData.CustomData._listFromVisits(q))),k){var F=_kameleoonData.OperatingSystem._fromVisits(q);F&&r.push(F)}l&&r.push.apply(r,_toConsumableArray(_kameleoonData.Conversion._listFromVisits(q)));var G,H=_kameleoonData.VisitsData._fromRemoteVisits(q,!!f);return H&&(G=H),{visitorData:r,visitsData:G}}},{key:"parseRegExp",value:function parseRegExp(a){if("/"===a[0]){var b=a.split("/"),c=_slicedToArray(b,3),d=c[0],e=c[1],f=c[2];return new RegExp(e,f)}return new RegExp(a)}},{key:"getUserAgent",value:function getUserAgent(a,b){var c=b.storedTargetingData,d=c&&c[a];if(d){var e=d[_kameleoonData.KameleoonData.UserAgent];if(e)return e.value}}},{key:"isCustomData",value:function isCustomData(a){return a.data.type===_kameleoonData.KameleoonData.CustomData}},{key:"insertInOrderedListMutably",value:function insertInOrderedListMutably(a){var b=a.list,c=a.element,d=a.order;if(!b.includes(c)){var e=b.findIndex(function(a){return d===_types2.Order.Ascending?a>=c:a<=c});-1===e?b.push(c):b.splice(e,0,c)}}},{key:"updateCache",value:function updateCache(a){var b=a.cacheManager,c=a.visitorCode,d=a.experimentId,e=a.variationId,f=b.getAliveItem(c),g=f?_objectSpread({},f):{};g[d]={variationId:e,expirationTime:Date.now()+_constants.CACHE_ITEM_LIFETIME*_types.Milliseconds.Second},b.add({key:c,data:g,lifetime:_constants.CACHE_ITEM_LIFETIME})}},{key:"getTrackingCode",value:function getTrackingCode(a,b){var c="window.kameleoonQueue=window.kameleoonQueue||[];",d=a.getAliveItem(b);if(!d)return c;var e={};return Object.entries(d).forEach(function(a){var b=_slicedToArray(a,2),d=b[0],f=b[1],g=f.variationId,h=f.expirationTime;h>Date.now()&&(c+="window.kameleoonQueue.push(['Experiments.assignVariation',".concat(d,",").concat(g,"]);"),c+="window.kameleoonQueue.push(['Experiments.trigger',".concat(d,",true]);"),e[+d]={variationId:g,expirationTime:h})}),a.add({key:b,data:e,lifetime:_constants.CACHE_ITEM_LIFETIME}),c}},{key:"trackData",value:function(){function a(a){return b.apply(this,arguments)}var b=_asyncToGenerator(_regeneratorRuntime().mark(function b(a){var c,d,e,f,g,h,i,j,k,l,m,n;return _regeneratorRuntime().wrap(function o(b){for(;1;)switch(b.prev=b.next){case 0:return c=a.visitorCode,d=a.dataManager,e=a.requester,f=a.isOfflineModeOn,g=a.offlineTrackingStorage,h=a.isConsentProvided,i=a.isMappingIdentifier,b.next=3,this.sendOfflineTracking({requester:e,storage:g});case 3:if(j=this.getDataUrl({visitorCode:c,dataManager:d,isConsentProvided:h}),h||j){b.next=6;break}return b.abrupt("return");case 6:return k=this.getUserAgent(c,d),l={visitorCode:c,body:j,userAgent:k,isMappingIdentifier:i},b.next=10,e.trackData(l);case 10:m=b.sent,n=function cleanup(){return h?d.clearUnsentData(c):d.clearUnsentDataByKey(c,_kameleoonData.KameleoonData.Conversion)},m.ok&&n(),!m.ok&&f&&this.addItemToOfflineTracking({item:l,storage:g,isExperiment:!1,onSuccess:n});case 14:case"end":return b.stop();}},b,this)}));return a}()},{key:"getNonce",value:function getNonce(){for(var a,b=_constants2.HEX_CHARACTERS.length,c="",d=0;d<b;d++)a=Math.floor(Math.random()*b),c+=_constants2.HEX_CHARACTERS.substring(a,a+1);return c}},{key:"compareSemVer",value:function compareSemVer(a){var b=a.version,c=a.compareVersion,d=a.operator,e=this.validateVersion(b),f=this.validateVersion(c);if(!e.ok)return(0,_tsRes.Err)(e.error);if(!f.ok)return(0,_tsRes.Err)(f.error);var g=_slicedToArray(e.data,3),h=g[0],i=g[1],j=g[2],k=_slicedToArray(f.data,3),l=k[0],m=k[1],n=k[2],o=h===l,p=i===m,q=j===n;switch(d){case _targeting.VersionMatchType.EQUAL:return(0,_tsRes.Ok)(o&&p&&q);case _targeting.VersionMatchType.GREATER:return(0,_tsRes.Ok)(h>l||o&&i>m||o&&p&&j>n);case _targeting.VersionMatchType.LOWER:return(0,_tsRes.Ok)(h<l||o&&i<m||o&&p&&j<n);default:(0,_kameleoonError.exhaustCheck)(d);}}},{key:"generateRandomString",value:function generateRandomString(a){var b="abcdefghijklmnopqrstuvwxyz0123456789",c=[];if(0>a)return"";for(var d=0;d<a;d++)c.push("abcdefghijklmnopqrstuvwxyz0123456789"[Math.floor(36*Math.random())]);return c.join("")}},{key:"sendOfflineTracking",value:function(){function a(a){return b.apply(this,arguments)}var b=_asyncToGenerator(_regeneratorRuntime().mark(function b(a){var c,d,e,f,g,h,i,j,k,l,m,n;return _regeneratorRuntime().wrap(function o(b){for(;1;)switch(b.prev=b.next){case 0:if(c=a.requester,d=a.storage,e=d.read(),!(e.ok&&e.data.requestParameters)){b.next=33;break}f=e.data.requestParameters,g=[],h=_createForOfIteratorHelper(f),b.prev=6,h.s();case 8:if((i=h.n()).done){b.next=24;break}if(j=i.value,k=j.timestamp,l=j.isExperiment,m=_objectWithoutProperties(j,_excluded),n=void 0,!l){b.next=18;break}return b.next=15,c.trackExperiment(m);case 15:n=b.sent,b.next=21;break;case 18:return b.next=20,c.trackData(m);case 20:n=b.sent;case 21:n.ok&&n.data&&g.push(k);case 22:b.next=8;break;case 24:b.next=29;break;case 26:b.prev=26,b.t0=b["catch"](6),h.e(b.t0);case 29:return b.prev=29,h.f(),b.finish(29);case 32:this.deleteFromOfflineTracking({storage:d,timestamps:g});case 33:case"end":return b.stop();}},b,this,[[6,26,29,32]])}));return a}()},{key:"addItemToOfflineTracking",value:function addItemToOfflineTracking(a){var b=a.item,c=a.isExperiment,d=a.storage,e=a.onSuccess,f=d.read(),g=f.ok?f.data:{},h=g.requestParameters,i=_objectSpread(_objectSpread({},b),{},{timestamp:new Date().getTime(),isExperiment:c}),j=h?[].concat(_toConsumableArray(h),[i]):[i],k=d.write({requestParameters:j});k.ok&&e&&e()}},{key:"deleteFromOfflineTracking",value:function deleteFromOfflineTracking(a){var b=a.timestamps,c=a.storage,d=c.read();if(d.ok){var e=d.data.requestParameters,f=null===e||void 0===e?void 0:e.filter(function(a){return!b.includes(a.timestamp)});c.write({requestParameters:f})}}},{key:"validateVersion",value:function validateVersion(a){for(var b=a.split(".").map(function(a){return parseInt(a,10)});3>b.length;)b.push(0);return b.some(function(a){return isNaN(a)})?(0,_tsRes.Err)(new _kameleoonError.KameleoonError(_kameleoonError.KameleoonException.SemanticVersionParse,a)):(0,_tsRes.Ok)(b.slice(0,3))}}]),a}();exports.Utilities=Utilities;
|
|
1
|
+
"use strict";Object.defineProperty(exports,"__esModule",{value:!0}),exports.Utilities=void 0;var _tsRes=require("ts-res"),_kameleoonError=require("../kameleoonError"),_types=require("../types"),_kameleoonData=require("../kameleoonData"),_constants=require("../constants"),_requester=require("../requester"),_targeting=require("../targeting"),_constants2=require("./constants"),_types2=require("./types"),_excluded=["timestamp","isExperiment"];function _typeof(a){"@babel/helpers - typeof";return _typeof="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(a){return typeof a}:function(a){return a&&"function"==typeof Symbol&&a.constructor===Symbol&&a!==Symbol.prototype?"symbol":typeof a},_typeof(a)}function _objectWithoutProperties(a,b){if(null==a)return{};var c,d,e=_objectWithoutPropertiesLoose(a,b);if(Object.getOwnPropertySymbols){var f=Object.getOwnPropertySymbols(a);for(d=0;d<f.length;d++)c=f[d],0<=b.indexOf(c)||Object.prototype.propertyIsEnumerable.call(a,c)&&(e[c]=a[c])}return e}function _objectWithoutPropertiesLoose(a,b){if(null==a)return{};var c,d,e={},f=Object.keys(a);for(d=0;d<f.length;d++)c=f[d],0<=b.indexOf(c)||(e[c]=a[c]);return e}function ownKeys(a,b){var c=Object.keys(a);if(Object.getOwnPropertySymbols){var d=Object.getOwnPropertySymbols(a);b&&(d=d.filter(function(b){return Object.getOwnPropertyDescriptor(a,b).enumerable})),c.push.apply(c,d)}return c}function _objectSpread(a){for(var b,c=1;c<arguments.length;c++)b=null==arguments[c]?{}:arguments[c],c%2?ownKeys(Object(b),!0).forEach(function(c){_defineProperty(a,c,b[c])}):Object.getOwnPropertyDescriptors?Object.defineProperties(a,Object.getOwnPropertyDescriptors(b)):ownKeys(Object(b)).forEach(function(c){Object.defineProperty(a,c,Object.getOwnPropertyDescriptor(b,c))});return a}function _toConsumableArray(a){return _arrayWithoutHoles(a)||_iterableToArray(a)||_unsupportedIterableToArray(a)||_nonIterableSpread()}function _nonIterableSpread(){throw new TypeError("Invalid attempt to spread non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}function _iterableToArray(a){if("undefined"!=typeof Symbol&&null!=a[Symbol.iterator]||null!=a["@@iterator"])return Array.from(a)}function _arrayWithoutHoles(a){if(Array.isArray(a))return _arrayLikeToArray(a)}function _defineProperty(a,b,c){return b=_toPropertyKey(b),b in a?Object.defineProperty(a,b,{value:c,enumerable:!0,configurable:!0,writable:!0}):a[b]=c,a}function _regeneratorRuntime(){"use strict";function a(a,b,c){return Object.defineProperty(a,b,{value:c,enumerable:!0,configurable:!0,writable:!0}),a[b]}function b(a,b,c,e){var f=b&&b.prototype instanceof d?b:d,g=Object.create(f.prototype),h=new m(e||[]);return s(g,"_invoke",{value:i(a,c,h)}),g}function c(a,b,c){try{return{type:"normal",arg:a.call(b,c)}}catch(a){return{type:"throw",arg:a}}}function d(){}function e(){}function f(){}function g(b){["next","throw","return"].forEach(function(c){a(b,c,function(a){return this._invoke(c,a)})})}function h(a,b){function d(e,f,g,h){var i=c(a[e],a,f);if("throw"!==i.type){var j=i.arg,k=j.value;return k&&"object"==_typeof(k)&&r.call(k,"__await")?b.resolve(k.__await).then(function(a){d("next",a,g,h)},function(a){d("throw",a,g,h)}):b.resolve(k).then(function(a){j.value=a,g(j)},function(a){return d("throw",a,g,h)})}h(i.arg)}var e;s(this,"_invoke",{value:function value(a,c){function f(){return new b(function(b,e){d(a,c,b,e)})}return e=e?e.then(f,f):f()}})}function i(a,b,d){var e="suspendedStart";return function(f,g){if("executing"==e)throw new Error("Generator is already running");if("completed"==e){if("throw"===f)throw g;return o()}for(d.method=f,d.arg=g;;){var h=d.delegate;if(h){var i=j(h,d);if(i){if(i===x)continue;return i}}if("next"===d.method)d.sent=d._sent=d.arg;else if("throw"===d.method){if("suspendedStart"==e)throw e="completed",d.arg;d.dispatchException(d.arg)}else"return"===d.method&&d.abrupt("return",d.arg);e="executing";var k=c(a,b,d);if("normal"===k.type){if(e=d.done?"completed":"suspendedYield",k.arg===x)continue;return{value:k.arg,done:d.done}}"throw"===k.type&&(e="completed",d.method="throw",d.arg=k.arg)}}}function j(a,b){var d=b.method,e=a.iterator[d];if(void 0===e)return b.delegate=null,"throw"===d&&a.iterator.return&&(b.method="return",b.arg=void 0,j(a,b),"throw"===b.method)||"return"!==d&&(b.method="throw",b.arg=new TypeError("The iterator does not provide a '"+d+"' method")),x;var f=c(e,a.iterator,b.arg);if("throw"===f.type)return b.method="throw",b.arg=f.arg,b.delegate=null,x;var g=f.arg;return g?g.done?(b[a.resultName]=g.value,b.next=a.nextLoc,"return"!==b.method&&(b.method="next",b.arg=void 0),b.delegate=null,x):g:(b.method="throw",b.arg=new TypeError("iterator result is not an object"),b.delegate=null,x)}function k(a){var b={tryLoc:a[0]};1 in a&&(b.catchLoc=a[1]),2 in a&&(b.finallyLoc=a[2],b.afterLoc=a[3]),this.tryEntries.push(b)}function l(a){var b=a.completion||{};b.type="normal",delete b.arg,a.completion=b}function m(a){this.tryEntries=[{tryLoc:"root"}],a.forEach(k,this),this.reset(!0)}function n(a){if(a){var b=a[u];if(b)return b.call(a);if("function"==typeof a.next)return a;if(!isNaN(a.length)){var c=-1,d=function b(){for(;++c<a.length;)if(r.call(a,c))return b.value=a[c],b.done=!1,b;return b.value=void 0,b.done=!0,b};return d.next=d}}return{next:o}}function o(){return{value:void 0,done:!0}}_regeneratorRuntime=function(){return p};var p={},q=Object.prototype,r=q.hasOwnProperty,s=Object.defineProperty||function(a,b,c){a[b]=c.value},t="function"==typeof Symbol?Symbol:{},u=t.iterator||"@@iterator",v=t.asyncIterator||"@@asyncIterator",w=t.toStringTag||"@@toStringTag";try{a({},"")}catch(b){a=function(a,b,c){return a[b]=c}}p.wrap=b;var x={},y={};a(y,u,function(){return this});var z=Object.getPrototypeOf,A=z&&z(z(n([])));A&&A!==q&&r.call(A,u)&&(y=A);var B=f.prototype=d.prototype=Object.create(y);return e.prototype=f,s(B,"constructor",{value:f,configurable:!0}),s(f,"constructor",{value:e,configurable:!0}),e.displayName=a(f,w,"GeneratorFunction"),p.isGeneratorFunction=function(a){var b="function"==typeof a&&a.constructor;return!!b&&(b===e||"GeneratorFunction"===(b.displayName||b.name))},p.mark=function(b){return Object.setPrototypeOf?Object.setPrototypeOf(b,f):(b.__proto__=f,a(b,w,"GeneratorFunction")),b.prototype=Object.create(B),b},p.awrap=function(a){return{__await:a}},g(h.prototype),a(h.prototype,v,function(){return this}),p.AsyncIterator=h,p.async=function(a,c,d,e,f){void 0===f&&(f=Promise);var g=new h(b(a,c,d,e),f);return p.isGeneratorFunction(c)?g:g.next().then(function(a){return a.done?a.value:g.next()})},g(B),a(B,w,"Generator"),a(B,u,function(){return this}),a(B,"toString",function(){return"[object Generator]"}),p.keys=function(a){var b=Object(a),c=[];for(var d in b)c.push(d);return c.reverse(),function a(){for(;c.length;){var d=c.pop();if(d in b)return a.value=d,a.done=!1,a}return a.done=!0,a}},p.values=n,m.prototype={constructor:m,reset:function reset(a){if(this.prev=0,this.next=0,this.sent=this._sent=void 0,this.done=!1,this.delegate=null,this.method="next",this.arg=void 0,this.tryEntries.forEach(l),!a)for(var b in this)"t"===b.charAt(0)&&r.call(this,b)&&!isNaN(+b.slice(1))&&(this[b]=void 0)},stop:function stop(){this.done=!0;var a=this.tryEntries[0].completion;if("throw"===a.type)throw a.arg;return this.rval},dispatchException:function dispatchException(a){function b(b,d){return f.type="throw",f.arg=a,c.next=b,d&&(c.method="next",c.arg=void 0),!!d}if(this.done)throw a;for(var c=this,d=this.tryEntries.length-1;0<=d;--d){var e=this.tryEntries[d],f=e.completion;if("root"===e.tryLoc)return b("end");if(e.tryLoc<=this.prev){var g=r.call(e,"catchLoc"),h=r.call(e,"finallyLoc");if(g&&h){if(this.prev<e.catchLoc)return b(e.catchLoc,!0);if(this.prev<e.finallyLoc)return b(e.finallyLoc)}else if(!g){if(!h)throw new Error("try statement without catch or finally");if(this.prev<e.finallyLoc)return b(e.finallyLoc)}else if(this.prev<e.catchLoc)return b(e.catchLoc,!0)}}},abrupt:function abrupt(a,b){for(var c,d=this.tryEntries.length-1;0<=d;--d)if(c=this.tryEntries[d],c.tryLoc<=this.prev&&r.call(c,"finallyLoc")&&this.prev<c.finallyLoc){var e=c;break}e&&("break"===a||"continue"===a)&&e.tryLoc<=b&&b<=e.finallyLoc&&(e=null);var f=e?e.completion:{};return f.type=a,f.arg=b,e?(this.method="next",this.next=e.finallyLoc,x):this.complete(f)},complete:function complete(a,b){if("throw"===a.type)throw a.arg;return"break"===a.type||"continue"===a.type?this.next=a.arg:"return"===a.type?(this.rval=this.arg=a.arg,this.method="return",this.next="end"):"normal"===a.type&&b&&(this.next=b),x},finish:function finish(a){for(var b,c=this.tryEntries.length-1;0<=c;--c)if(b=this.tryEntries[c],b.finallyLoc===a)return this.complete(b.completion,b.afterLoc),l(b),x},catch:function _catch(a){for(var b,c=this.tryEntries.length-1;0<=c;--c)if(b=this.tryEntries[c],b.tryLoc===a){var d=b.completion;if("throw"===d.type){var e=d.arg;l(b)}return e}throw new Error("illegal catch attempt")},delegateYield:function delegateYield(a,b,c){return this.delegate={iterator:n(a),resultName:b,nextLoc:c},"next"===this.method&&(this.arg=void 0),x}},p}function _slicedToArray(a,b){return _arrayWithHoles(a)||_iterableToArrayLimit(a,b)||_unsupportedIterableToArray(a,b)||_nonIterableRest()}function _nonIterableRest(){throw new TypeError("Invalid attempt to destructure non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}function _iterableToArrayLimit(a,b){var c=null==a?null:"undefined"!=typeof Symbol&&a[Symbol.iterator]||a["@@iterator"];if(null!=c){var d,e,f,g,h=[],i=!0,j=!1;try{if(f=(c=c.call(a)).next,0===b){if(Object(c)!==c)return;i=!1}else for(;!(i=(d=f.call(c)).done)&&(h.push(d.value),h.length!==b);i=!0);}catch(a){j=!0,e=a}finally{try{if(!i&&null!=c.return&&(g=c.return(),Object(g)!==g))return}finally{if(j)throw e}}return h}}function _arrayWithHoles(a){if(Array.isArray(a))return a}function asyncGeneratorStep(a,b,c,d,e,f,g){try{var h=a[f](g),i=h.value}catch(a){return void c(a)}h.done?b(i):Promise.resolve(i).then(d,e)}function _asyncToGenerator(a){return function(){var b=this,c=arguments;return new Promise(function(d,e){function f(a){asyncGeneratorStep(h,d,e,f,g,"next",a)}function g(a){asyncGeneratorStep(h,d,e,f,g,"throw",a)}var h=a.apply(b,c);f(void 0)})}}function _createForOfIteratorHelper(a,b){var c="undefined"!=typeof Symbol&&a[Symbol.iterator]||a["@@iterator"];if(!c){if(Array.isArray(a)||(c=_unsupportedIterableToArray(a))||b&&a&&"number"==typeof a.length){c&&(a=c);var d=0,e=function(){};return{s:e,n:function n(){return d>=a.length?{done:!0}:{done:!1,value:a[d++]}},e:function e(a){throw a},f:e}}throw new TypeError("Invalid attempt to iterate non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}var f,g=!0,h=!1;return{s:function s(){c=c.call(a)},n:function n(){var a=c.next();return g=a.done,a},e:function e(a){h=!0,f=a},f:function f(){try{g||null==c.return||c.return()}finally{if(h)throw f}}}}function _unsupportedIterableToArray(a,b){if(a){if("string"==typeof a)return _arrayLikeToArray(a,b);var c=Object.prototype.toString.call(a).slice(8,-1);return"Object"===c&&a.constructor&&(c=a.constructor.name),"Map"===c||"Set"===c?Array.from(a):"Arguments"===c||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(c)?_arrayLikeToArray(a,b):void 0}}function _arrayLikeToArray(a,b){(null==b||b>a.length)&&(b=a.length);for(var c=0,d=Array(b);c<b;c++)d[c]=a[c];return d}function _classCallCheck(a,b){if(!(a instanceof b))throw new TypeError("Cannot call a class as a function")}function _defineProperties(a,b){for(var c,d=0;d<b.length;d++)c=b[d],c.enumerable=c.enumerable||!1,c.configurable=!0,"value"in c&&(c.writable=!0),Object.defineProperty(a,_toPropertyKey(c.key),c)}function _createClass(a,b,c){return b&&_defineProperties(a.prototype,b),c&&_defineProperties(a,c),Object.defineProperty(a,"prototype",{writable:!1}),a}function _toPropertyKey(a){var b=_toPrimitive(a,"string");return"symbol"===_typeof(b)?b:b+""}function _toPrimitive(a,b){if("object"!==_typeof(a)||null===a)return a;var c=a[Symbol.toPrimitive];if(c!==void 0){var d=c.call(a,b||"default");if("object"!==_typeof(d))return d;throw new TypeError("@@toPrimitive must return a primitive value.")}return("string"===b?String:Number)(a)}var Utilities=function(){function a(){_classCallCheck(this,a)}return _createClass(a,null,[{key:"checkTargeting",value:function checkTargeting(a){var b=a.segment,c=a.visitorCode,d=a.targetingData,e=a.experimentId,f=a.variationConfiguration,g=a.clientConfiguration,h=a.packageInfo,i=a.dataManager;if(!b||!b.conditionsData.firstLevel.length)return(0,_tsRes.Ok)(!0);if(!f)return(0,_tsRes.Err)(new _kameleoonError.KameleoonError(_kameleoonError.KameleoonException.Initialization));var j={},k=f.getStoredVariations(c);k.ok&&(j=k.data);var l=i.getTree(b),m=void 0,n=void 0,o=void 0;l.hasTargetingType(_targeting.TargetingType.SEGMENT)&&(m=i.trees,n=g.segments),l.hasTargetingType(_targeting.TargetingType.TARGET_FEATURE_FLAG)&&(o=g.ruleMap);var p=l.evaluate({variationData:j,sdkInfo:h,segments:n,ruleMap:o,trees:m,targetingData:d,experimentId:e,visitorCode:c});return p}},{key:"validateVisitorCode",value:function validateVisitorCode(a){return 0===a.length?(0,_tsRes.Err)(new _kameleoonError.KameleoonError(_kameleoonError.KameleoonException.VisitorCodeEmpty)):a.length>_constants2.VISITOR_CODE_MAX_LENGTH?(0,_tsRes.Err)(new _kameleoonError.KameleoonError(_kameleoonError.KameleoonException.VisitorCodeMaxLength)):(0,_tsRes.Ok)()}},{key:"getDataUrl",value:function getDataUrl(b){function c(b){if(b.url){var c=b.data.type===_kameleoonData.KameleoonData.Conversion;if(f||c){var d=c?"":_requester.UrlParameter.Nonce+a.getNonce();h.push(b.url+d+"\n")}}}var d=b.visitorCode,e=b.dataManager,f=b.isConsentProvided,g=e.getUnsentData(d),h=[];if(!g||!g.size)return"";var i,j=_createForOfIteratorHelper(g.values());try{for(j.s();!(i=j.n()).done;){var k=i.value;Array.isArray(k)?k.forEach(function(a){return c(a)}):c(k)}}catch(a){j.e(a)}finally{j.f()}return h.join("")}},{key:"getVariationDataUrlAndSentExperimentIds",value:function getVariationDataUrlAndSentExperimentIds(b){var c=b.visitorCode,d=b.isConsentProvided,e=b.variationConfiguration,f=[],g=new Set,h=e.getUnsentData(c);h.ok&&h.data.length&&h.data.forEach(function(b){(b.isTargetedRule||d)&&(f.push(_requester.UrlEventType.Experiment+_requester.UrlParameter.Id+b.experimentId+_requester.UrlParameter.VariationId+b.variationId+_requester.UrlParameter.Nonce+a.getNonce()+"\n"),g.add(b.experimentId+""))});var i=f.join(""),j=Array.from(g);return[i,j]}},{key:"trackFeatureExperiment",value:function(){function a(){return b.apply(this,arguments)}var b=_asyncToGenerator(_regeneratorRuntime().mark(function b(a){var c,d,e,f,g,h,i,j,k,l,m,n,o,p,q,r,s,t,u,v,w;return _regeneratorRuntime().wrap(function x(b){for(;1;)switch(b.prev=b.next){case 0:if(c=a.featureFlagVariation,d=a.dataManager,e=a.visitorCode,f=a.requester,g=a.isOfflineModeOn,h=a.isConsentProvided,i=a.offlineTrackingStorage,j=a.variationConfiguration,k=c.variationId,l=c.rule,m=this.getUserAgent(e,d),n=this.getDataUrl({visitorCode:e,dataManager:d,isConsentProvided:h}),o=k||0,p=l?l.experimentId:0,q=this.getVariationDataUrlAndSentExperimentIds({visitorCode:e,isConsentProvided:h,variationConfiguration:j}),r=_slicedToArray(q,2),s=r[0],t=r[1],h||n||l){b.next=9;break}return b.abrupt("return");case 9:return u=null===k,v={visitorCode:e,dataUrl:n,variationDataUrl:s,experimentId:p,variationId:o,userAgent:m,isUnallocated:u},b.next=13,f.trackExperiment(v);case 13:w=b.sent,w.ok&&(h?d.clearUnsentData(e):d.clearUnsentDataByKey(e,_kameleoonData.KameleoonData.Conversion),t.forEach(function(a){j.markUnsentDataAsSent(e,a)})),!w.ok&&g&&this.addItemToOfflineTracking({item:v,storage:i,isExperiment:!0});case 16:case"end":return b.stop();}},b,this)}));return a}()},{key:"convertTimeUnit",value:function convertTimeUnit(a,b){var c,d=(c={},_defineProperty(c,_types2.TimeUnit.Minute,_types.Milliseconds.Minute),_defineProperty(c,_types2.TimeUnit.Hour,_types.Milliseconds.Hour),_defineProperty(c,_types2.TimeUnit.Day,_types.Milliseconds.Day),_defineProperty(c,_types2.TimeUnit.Week,_types.Milliseconds.Week),_defineProperty(c,_types2.TimeUnit.Month,_types.Milliseconds.Month),c);return a/d[b]}},{key:"parseFeatureVariable",value:function parseFeatureVariable(a){var b=a.key,c=a.type,d=a.value;switch(c){case _types.VariableType.BOOLEAN:return(0,_tsRes.Ok)({key:b,type:c,value:!!d});case _types.VariableType.STRING:return(0,_tsRes.Ok)({key:b,type:c,value:d+""});case _types.VariableType.NUMBER:var e=+d;return Number.isNaN(e)?(0,_tsRes.Err)(new _kameleoonError.KameleoonError(_kameleoonError.KameleoonException.NumberParse,d+"")):(0,_tsRes.Ok)({key:b,type:c,value:e});case _types.VariableType.JSON:try{var f=JSON.parse(a.value+"");return(0,_tsRes.Ok)({key:b,type:c,value:f})}catch(a){return(0,_tsRes.Err)(new _kameleoonError.KameleoonError(_kameleoonError.KameleoonException.JSONParse,a))}default:(0,_kameleoonError.exhaustCheck)(c);}}},{key:"parseVisitorData",value:function parseVisitorData(a){var b=a.data,c=a.filters,d=a.visitorCode,e=a.variationConfiguration,f=b.currentVisit,g=b.previousVisits,h=c.browser,j=c.customData,k=c.operatingSystem,l=c.conversions,m=c.device,n=c.geolocation,o=c.experiments,p=c.pageViews,q=[];if(f&&q.push(f),g&&q.push.apply(q,_toConsumableArray(g)),!q)return{visitorData:[]};var r=[];if(p){var s=_kameleoonData.PageView._listFromVisits(q);s.length&&r.push.apply(r,_toConsumableArray(s))}if(h){var t=_kameleoonData.Browser._fromVisits(q);t&&r.push(t)}if(o){for(var u,v={},w=q.length-1;0<=w;w--)if(u=q[w],!!u.experimentEvents){var x,y=_createForOfIteratorHelper(u.experimentEvents);try{for(y.s();!(x=y.n()).done;){var z=x.value,A=z.data,B=A.id,C=A.variationId;v[B]={variationId:C,isTargetedRule:!1,isSent:!1}}}catch(a){y.e(a)}finally{y.f()}}e.updateStoredVariations(d,v)}if(m){var D=_kameleoonData.Device._fromVisits(q);D&&r.push(D)}if(n){var E=_kameleoonData.GeolocationData._fromVisits(q);E&&r.push(E)}if(j&&r.push.apply(r,_toConsumableArray(_kameleoonData.CustomData._listFromVisits(q))),k){var F=_kameleoonData.OperatingSystem._fromVisits(q);F&&r.push(F)}l&&r.push.apply(r,_toConsumableArray(_kameleoonData.Conversion._listFromVisits(q)));var G,H=_kameleoonData.VisitsData._fromRemoteVisits(q,!!f);return H&&(G=H),{visitorData:r,visitsData:G}}},{key:"parseRegExp",value:function parseRegExp(a){if("/"===a[0]){var b=a.split("/"),c=_slicedToArray(b,3),d=c[0],e=c[1],f=c[2];return new RegExp(e,f)}return new RegExp(a)}},{key:"getUserAgent",value:function getUserAgent(a,b){var c=b.storedTargetingData,d=c&&c[a];if(d){var e=d[_kameleoonData.KameleoonData.UserAgent];if(e)return e.value}}},{key:"isCustomData",value:function isCustomData(a){return a.data.type===_kameleoonData.KameleoonData.CustomData}},{key:"insertInOrderedListMutably",value:function insertInOrderedListMutably(a){var b=a.list,c=a.element,d=a.order;if(!b.includes(c)){var e=b.findIndex(function(a){return d===_types2.Order.Ascending?a>=c:a<=c});-1===e?b.push(c):b.splice(e,0,c)}}},{key:"updateCache",value:function updateCache(a){var b=a.cacheManager,c=a.visitorCode,d=a.experimentId,e=a.variationId,f=b.getAliveItem(c),g=f?_objectSpread({},f):{};g[d]={variationId:e,expirationTime:Date.now()+_constants.CACHE_ITEM_LIFETIME*_types.Milliseconds.Second},b.add({key:c,data:g,lifetime:_constants.CACHE_ITEM_LIFETIME})}},{key:"getTrackingCode",value:function getTrackingCode(a,b){var c="window.kameleoonQueue=window.kameleoonQueue||[];",d=a.getAliveItem(b);if(!d)return c;var e={};return Object.entries(d).forEach(function(a){var b=_slicedToArray(a,2),d=b[0],f=b[1],g=f.variationId,h=f.expirationTime;h>Date.now()&&(c+="window.kameleoonQueue.push(['Experiments.assignVariation',".concat(d,",").concat(g,"]);"),c+="window.kameleoonQueue.push(['Experiments.trigger',".concat(d,",true]);"),e[+d]={variationId:g,expirationTime:h})}),a.add({key:b,data:e,lifetime:_constants.CACHE_ITEM_LIFETIME}),c}},{key:"trackData",value:function(){function a(a){return b.apply(this,arguments)}var b=_asyncToGenerator(_regeneratorRuntime().mark(function b(a){var c,d,e,f,g,h,i,j,k,l,m,n;return _regeneratorRuntime().wrap(function o(b){for(;1;)switch(b.prev=b.next){case 0:return c=a.visitorCode,d=a.dataManager,e=a.requester,f=a.isOfflineModeOn,g=a.offlineTrackingStorage,h=a.isConsentProvided,i=a.isMappingIdentifier,b.next=3,this.sendOfflineTracking({requester:e,storage:g});case 3:if(j=this.getDataUrl({visitorCode:c,dataManager:d,isConsentProvided:h}),h||j){b.next=6;break}return b.abrupt("return");case 6:return k=this.getUserAgent(c,d),l={visitorCode:c,body:j,userAgent:k,isMappingIdentifier:i},b.next=10,e.trackData(l);case 10:m=b.sent,n=function cleanup(){return h?d.clearUnsentData(c):d.clearUnsentDataByKey(c,_kameleoonData.KameleoonData.Conversion)},m.ok&&n(),!m.ok&&f&&this.addItemToOfflineTracking({item:l,storage:g,isExperiment:!1,onSuccess:n});case 14:case"end":return b.stop();}},b,this)}));return a}()},{key:"getNonce",value:function getNonce(){for(var a,b=_constants2.HEX_CHARACTERS.length,c="",d=0;d<b;d++)a=Math.floor(Math.random()*b),c+=_constants2.HEX_CHARACTERS.substring(a,a+1);return c}},{key:"compareSemVer",value:function compareSemVer(a){var b=a.version,c=a.compareVersion,d=a.operator,e=this.validateVersion(b),f=this.validateVersion(c);if(!e.ok)return(0,_tsRes.Err)(e.error);if(!f.ok)return(0,_tsRes.Err)(f.error);var g=_slicedToArray(e.data,3),h=g[0],i=g[1],j=g[2],k=_slicedToArray(f.data,3),l=k[0],m=k[1],n=k[2],o=h===l,p=i===m,q=j===n;switch(d){case _targeting.VersionMatchType.EQUAL:return(0,_tsRes.Ok)(o&&p&&q);case _targeting.VersionMatchType.GREATER:return(0,_tsRes.Ok)(h>l||o&&i>m||o&&p&&j>n);case _targeting.VersionMatchType.LOWER:return(0,_tsRes.Ok)(h<l||o&&i<m||o&&p&&j<n);default:(0,_kameleoonError.exhaustCheck)(d);}}},{key:"generateRandomString",value:function generateRandomString(a){var b="abcdefghijklmnopqrstuvwxyz0123456789",c=[];if(0>a)return"";for(var d=0;d<a;d++)c.push("abcdefghijklmnopqrstuvwxyz0123456789"[Math.floor(36*Math.random())]);return c.join("")}},{key:"sendOfflineTracking",value:function(){function a(a){return b.apply(this,arguments)}var b=_asyncToGenerator(_regeneratorRuntime().mark(function b(a){var c,d,e,f,g,h,i,j,k,l,m,n;return _regeneratorRuntime().wrap(function o(b){for(;1;)switch(b.prev=b.next){case 0:if(c=a.requester,d=a.storage,e=d.read(),!(e.ok&&e.data.requestParameters)){b.next=33;break}f=e.data.requestParameters,g=[],h=_createForOfIteratorHelper(f),b.prev=6,h.s();case 8:if((i=h.n()).done){b.next=24;break}if(j=i.value,k=j.timestamp,l=j.isExperiment,m=_objectWithoutProperties(j,_excluded),n=void 0,!l){b.next=18;break}return b.next=15,c.trackExperiment(m);case 15:n=b.sent,b.next=21;break;case 18:return b.next=20,c.trackData(m);case 20:n=b.sent;case 21:n.ok&&n.data&&g.push(k);case 22:b.next=8;break;case 24:b.next=29;break;case 26:b.prev=26,b.t0=b["catch"](6),h.e(b.t0);case 29:return b.prev=29,h.f(),b.finish(29);case 32:this.deleteFromOfflineTracking({storage:d,timestamps:g});case 33:case"end":return b.stop();}},b,this,[[6,26,29,32]])}));return a}()},{key:"addItemToOfflineTracking",value:function addItemToOfflineTracking(a){var b=a.item,c=a.isExperiment,d=a.storage,e=a.onSuccess,f=d.read(),g=f.ok?f.data:{},h=g.requestParameters,i=_objectSpread(_objectSpread({},b),{},{timestamp:new Date().getTime(),isExperiment:c}),j=h?[].concat(_toConsumableArray(h),[i]):[i],k=d.write({requestParameters:j});k.ok&&e&&e()}},{key:"deleteFromOfflineTracking",value:function deleteFromOfflineTracking(a){var b=a.timestamps,c=a.storage,d=c.read();if(d.ok){var e=d.data.requestParameters,f=null===e||void 0===e?void 0:e.filter(function(a){return!b.includes(a.timestamp)});c.write({requestParameters:f})}}},{key:"validateVersion",value:function validateVersion(a){for(var b=a.split(".").map(function(a){return parseInt(a,10)});3>b.length;)b.push(0);return b.some(function(a){return isNaN(a)})?(0,_tsRes.Err)(new _kameleoonError.KameleoonError(_kameleoonError.KameleoonException.SemanticVersionParse,a)):(0,_tsRes.Ok)(b.slice(0,3))}}]),a}();exports.Utilities=Utilities;
|
|
2
2
|
//# sourceMappingURL=utilities.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"utilities.js","names":["Utilities","a","_classCallCheck","_createClass","key","value","checkTargeting","segment","visitorCode","targetingData","experimentId","variationConfiguration","clientConfiguration","packageInfo","dataManager","conditionsData","firstLevel","length","Ok","Err","KameleoonError","KameleoonException","Initialization","variations","assignedVariationsResult","getStoredVariations","ok","data","targetingTree","getTree","trees","segments","ruleMap","hasTargetingType","TargetingType","SEGMENT","TARGET_FEATURE_FLAG","result","evaluate","variationData","sdkInfo","validateVisitorCode","VisitorCodeEmpty","VISITOR_CODE_MAX_LENGTH","VisitorCodeMaxLength","getDataUrl","b","updateUrl","url","shouldSendConversionData","type","KameleoonData","Conversion","isConsentProvided","nonce","UrlParameter","Nonce","getNonce","resultUrl","push","unsentData","getUnsentData","size","i","j","_createForOfIteratorHelper","values","s","n","done","item","Array","isArray","forEach","arrayItem","e","f","join","getVariationDataUrlAndSentExperimentIds","variationDataUrlList","sentExperimentIds","Set","isTargetedRule","UrlEventType","Experiment","Id","VariationId","variationId","add","variationDataUrl","experimentIds","from","apply","arguments","_asyncToGenerator","_regeneratorRuntime","mark","c","d","g","h","k","l","m","o","p","q","r","t","u","v","w","x","wrap","y","prev","next","featureFlagVariation","requester","isOfflineModeOn","offlineTrackingStorage","rule","userAgent","getUserAgent","dataUrl","resultVariationId","_slicedToArray","abrupt","isUnallocated","parameters","trackExperiment","sent","clearUnsentData","clearUnsentDataByKey","markUnsentDataAsSent","addItemToOfflineTracking","storage","isExperiment","stop","convertTimeUnit","time","timeUnit","timeMap","_defineProperty","TimeUnit","Minute","Milliseconds","Hour","Day","Week","Month","parseFeatureVariable","variable","VariableType","BOOLEAN","STRING","NUMBER","numberValue","Number","isNaN","NumberParse","JSON","jsonValue","parse","err","JSONParse","exhaustCheck","parseVisitorData","filters","currentVisit","previousVisits","browserFilter","browser","customDataFilter","customData","operatingSystemFilter","operatingSystem","conversionsFilter","conversions","deviceFilter","device","geolocationFilter","geolocation","experimentsFilter","experiments","pageViewFilter","pageViews","visits","_toConsumableArray","visitorData","resultData","PageView","_listFromVisits","Browser","_fromVisits","visit","experimentData","experimentEvents","experimentEvent","A","id","isSent","updateStoredVariations","Device","GeolocationData","CustomData","OperatingSystem","visitsData","collectedVisitsData","VisitsData","_fromRemoteVisits","parseRegExp","split","_","expression","flags","RegExp","storedData","storedTargetingData","userAgentData","UserAgent","isCustomData","dataItem","insertInOrderedListMutably","list","element","order","includes","index","findIndex","Order","Ascending","splice","updateCache","cacheManager","cacheData","getAliveItem","newCacheData","_objectSpread","expirationTime","Date","now","CACHE_ITEM_LIFETIME","Second","lifetime","getTrackingCode","trackingCache","resultString","updatedCacheData","Object","entries","concat","isMappingIdentifier","sendOfflineTracking","body","trackData","cleanup","onSuccess","randomNumber","hexLength","HEX_CHARACTERS","Math","floor","random","substring","compareSemVer","version","compareVersion","operator","versionResult","validateVersion","compareVersionResult","error","major","minor","patch","compareMajor","compareMinor","comparePatch","isMajorEqual","isMinorEqual","isPatchEqual","VersionMatchType","EQUAL","GREATER","LOWER","generateRandomString","characters","randomCharacterArray","readResult","read","requestParameters","successfulTimestamps","timestamp","params","_objectWithoutProperties","_excluded","t0","finish","deleteFromOfflineTracking","timestamps","newItem","getTime","newRequestParameters","writeResult","write","newParameters","filter","versionParts","map","parseInt","some","SemanticVersionParse","slice","exports"],"sources":["../../src/utilities/utilities.ts"],"sourcesContent":["import { Err, Ok, Result } from 'ts-res';\nimport {\n KameleoonError,\n KameleoonException,\n exhaustCheck,\n} from 'src/kameleoonError';\nimport {\n FeatureVariableResultType,\n Milliseconds,\n TrackingCacheItemType,\n VariableType,\n} from 'src/types';\nimport { FeatureVariableType, JSONType } from 'src/clientConfiguration';\nimport {\n Browser,\n Conversion,\n CustomData,\n DataManager,\n Device,\n GeolocationData,\n KameleoonData,\n KameleoonDataType,\n OperatingSystem,\n PageView,\n VisitsData,\n} from 'src/kameleoonData';\nimport { CACHE_ITEM_LIFETIME } from 'src/constants';\nimport { CacheManager } from 'src/cacheManager';\nimport {\n TrackExperimentParamsType,\n TrackDataParamsType,\n VisitType,\n UrlParameter,\n UrlEventType,\n} from 'src/requester';\nimport { VersionMatchType, TargetingType } from 'src/targeting';\nimport { KameleoonVisitorDataType } from 'src/kameleoonData/types';\nimport { FeatureFlagVariationsType } from 'src/storage/types';\nimport { VISITOR_CODE_MAX_LENGTH, HEX_CHARACTERS } from './constants';\nimport {\n CheckTargetingParametersType,\n ManageCacheParametersType,\n TrackDataParametersType,\n TrackRuleParametersType,\n AddToOfflineTrackingParametersType,\n SendOfflineTrackingParametersType,\n DeleteFromOfflineTrackingParametersType,\n ParseVisitorDataParametersType,\n InsertInOrderedListParametersType,\n Order,\n TimeUnit,\n GetDataUrlParametersType,\n GetVariationDataUrlParametersType,\n ParseVisitorDataResultType,\n} from './types';\n\nexport class Utilities {\n static checkTargeting({\n segment,\n visitorCode,\n targetingData,\n experimentId,\n variationConfiguration,\n clientConfiguration,\n packageInfo,\n dataManager,\n }: CheckTargetingParametersType): Result<boolean, KameleoonError> {\n if (!segment || !segment.conditionsData.firstLevel.length) {\n return Ok(true);\n }\n\n if (!variationConfiguration) {\n return Err(new KameleoonError(KameleoonException.Initialization));\n }\n\n let variations: FeatureFlagVariationsType = {};\n\n const assignedVariationsResult =\n variationConfiguration.getStoredVariations(visitorCode);\n\n if (assignedVariationsResult.ok) {\n variations = assignedVariationsResult.data;\n }\n\n const targetingTree = dataManager.getTree(segment);\n\n let trees = undefined;\n let segments = undefined;\n let ruleMap = undefined;\n\n // --- Note ---\n // Only getting trees and segments targeting type\n if (targetingTree.hasTargetingType(TargetingType.SEGMENT)) {\n trees = dataManager.trees;\n segments = clientConfiguration.segments;\n }\n\n // --- Note ---\n // Only constructing rule map for targeting type\n if (targetingTree.hasTargetingType(TargetingType.TARGET_FEATURE_FLAG)) {\n ruleMap = clientConfiguration.ruleMap;\n }\n\n const result = targetingTree.evaluate({\n variationData: variations,\n sdkInfo: packageInfo,\n segments,\n ruleMap,\n trees,\n targetingData,\n experimentId,\n visitorCode,\n });\n\n return result;\n }\n\n static validateVisitorCode(\n visitorCode: string,\n ): Result<void, KameleoonError> {\n if (visitorCode.length === 0) {\n return Err(new KameleoonError(KameleoonException.VisitorCodeEmpty));\n }\n\n if (visitorCode.length > VISITOR_CODE_MAX_LENGTH) {\n return Err(new KameleoonError(KameleoonException.VisitorCodeMaxLength));\n }\n\n return Ok();\n }\n\n static getDataUrl({\n visitorCode,\n dataManager,\n isConsentProvided,\n }: GetDataUrlParametersType): string {\n const unsentData = dataManager.getUnsentData(visitorCode);\n const resultUrl: string[] = [];\n\n if (!unsentData || !unsentData.size) {\n return '';\n }\n\n function updateUrl(data: KameleoonDataType): void {\n if (!data.url) {\n return;\n }\n\n const shouldSendAllData = isConsentProvided;\n const shouldSendConversionData =\n data.data.type === KameleoonData.Conversion;\n\n if (shouldSendAllData || shouldSendConversionData) {\n const nonce = !shouldSendConversionData\n ? UrlParameter.Nonce + Utilities.getNonce()\n : '';\n resultUrl.push(data.url + nonce + '\\n');\n }\n }\n\n for (const item of unsentData.values()) {\n if (Array.isArray(item)) {\n item.forEach((arrayItem) => updateUrl(arrayItem));\n } else {\n updateUrl(item);\n }\n }\n\n return resultUrl.join('');\n }\n\n static getVariationDataUrlAndSentExperimentIds({\n visitorCode,\n isConsentProvided,\n variationConfiguration,\n }: GetVariationDataUrlParametersType): [string, string[]] {\n const variationDataUrlList: string[] = [];\n const sentExperimentIds = new Set<string>();\n const unsentData = variationConfiguration.getUnsentData(visitorCode);\n\n if (unsentData.ok && unsentData.data.length) {\n unsentData.data.forEach((item) => {\n if (item.isTargetedRule || isConsentProvided) {\n variationDataUrlList.push(\n UrlEventType.Experiment +\n UrlParameter.Id +\n item.experimentId +\n UrlParameter.VariationId +\n item.variationId +\n UrlParameter.Nonce +\n Utilities.getNonce() +\n '\\n',\n );\n\n sentExperimentIds.add(String(item.experimentId));\n }\n });\n }\n\n const variationDataUrl = variationDataUrlList.join('');\n const experimentIds = Array.from(sentExperimentIds);\n\n return [variationDataUrl, experimentIds];\n }\n\n static async trackFeatureExperiment({\n featureFlagVariation,\n dataManager,\n visitorCode,\n requester,\n isOfflineModeOn,\n isConsentProvided,\n offlineTrackingStorage,\n variationConfiguration,\n }: TrackRuleParametersType): Promise<void> {\n const { variationId, rule, isTargetedRule } = featureFlagVariation;\n\n const userAgent = this.getUserAgent(visitorCode, dataManager);\n\n const dataUrl = this.getDataUrl({\n visitorCode,\n dataManager,\n isConsentProvided,\n });\n\n const resultVariationId = variationId || 0;\n\n // --- Note ---\n // Experiment id is not needed for unallocated visitors\n // So we just use 0 as a fallback\n const experimentId = rule ? rule.experimentId : 0;\n\n const [variationDataUrl, sentExperimentIds] =\n this.getVariationDataUrlAndSentExperimentIds({\n visitorCode,\n isConsentProvided,\n variationConfiguration,\n });\n\n if (!isConsentProvided && !dataUrl && !rule) {\n return;\n }\n\n const isUnallocated = variationId === null;\n\n const parameters = {\n visitorCode,\n dataUrl,\n variationDataUrl,\n experimentId,\n variationId: resultVariationId,\n userAgent,\n isUnallocated,\n };\n\n const result = await requester.trackExperiment(parameters);\n\n if (result.ok) {\n if (!isConsentProvided) {\n dataManager.clearUnsentDataByKey(visitorCode, KameleoonData.Conversion);\n } else {\n dataManager.clearUnsentData(visitorCode);\n }\n\n sentExperimentIds.forEach((experimentId) => {\n variationConfiguration.markUnsentDataAsSent(visitorCode, experimentId);\n });\n }\n\n if (!result.ok && isOfflineModeOn) {\n this.addItemToOfflineTracking({\n item: parameters,\n storage: offlineTrackingStorage,\n isExperiment: true,\n });\n }\n }\n\n static convertTimeUnit(time: number, timeUnit: TimeUnit): number {\n const timeMap = {\n [TimeUnit.Minute]: Milliseconds.Minute,\n [TimeUnit.Hour]: Milliseconds.Hour,\n [TimeUnit.Day]: Milliseconds.Day,\n [TimeUnit.Week]: Milliseconds.Week,\n [TimeUnit.Month]: Milliseconds.Month,\n };\n\n return time / timeMap[timeUnit];\n }\n\n static parseFeatureVariable(\n variable: FeatureVariableType,\n ): Result<FeatureVariableResultType, KameleoonError> {\n const { key, type, value } = variable;\n\n switch (type) {\n case VariableType.BOOLEAN:\n return Ok({\n key,\n type,\n value: Boolean(value),\n });\n case VariableType.STRING:\n return Ok({\n key,\n type,\n value: String(value),\n });\n case VariableType.NUMBER:\n const numberValue = Number(value);\n\n if (Number.isNaN(numberValue)) {\n return Err(\n new KameleoonError(KameleoonException.NumberParse, String(value)),\n );\n }\n\n return Ok({\n key,\n type,\n value: numberValue,\n });\n case VariableType.JSON:\n try {\n const jsonValue: JSONType = JSON.parse(String(variable.value));\n\n return Ok({\n key,\n type,\n value: jsonValue,\n });\n } catch (err) {\n return Err(new KameleoonError(KameleoonException.JSONParse, err));\n }\n default:\n exhaustCheck(type);\n }\n }\n\n static parseVisitorData({\n data,\n filters,\n visitorCode,\n variationConfiguration,\n }: ParseVisitorDataParametersType): ParseVisitorDataResultType {\n const { currentVisit, previousVisits } = data;\n const {\n browser: browserFilter,\n customData: customDataFilter,\n operatingSystem: operatingSystemFilter,\n conversions: conversionsFilter,\n device: deviceFilter,\n geolocation: geolocationFilter,\n experiments: experimentsFilter,\n pageViews: pageViewFilter,\n } = filters;\n\n let visits: VisitType[] = [];\n\n if (currentVisit) {\n visits.push(currentVisit);\n }\n\n if (previousVisits) {\n visits.push(...previousVisits);\n }\n\n if (!visits) {\n return { visitorData: [] };\n }\n\n const resultData: KameleoonDataType[] = [];\n\n if (pageViewFilter) {\n const pageViews = PageView._listFromVisits(visits);\n\n if (pageViews.length) {\n resultData.push(...pageViews);\n }\n }\n\n // --- Browser ---\n if (browserFilter) {\n const browser = Browser._fromVisits(visits);\n\n if (browser) {\n resultData.push(browser);\n }\n }\n\n // --- Experiments ---\n if (experimentsFilter) {\n const experimentData: FeatureFlagVariationsType = {};\n\n // --- Note ---\n // Going backwards to get the latest experiment data\n for (let i = visits.length - 1; i >= 0; i--) {\n const visit = visits[i];\n\n if (!visit.experimentEvents) {\n continue;\n }\n\n for (const experimentEvent of visit.experimentEvents) {\n const { id, variationId } = experimentEvent.data;\n\n experimentData[id] = {\n variationId,\n isTargetedRule: false,\n isSent: false,\n };\n }\n }\n\n variationConfiguration.updateStoredVariations(\n visitorCode,\n experimentData,\n );\n }\n\n // --- Device ---\n if (deviceFilter) {\n const device = Device._fromVisits(visits);\n\n if (device) {\n resultData.push(device);\n }\n }\n\n // --- Geolocation ---\n if (geolocationFilter) {\n const geolocation = GeolocationData._fromVisits(visits);\n\n if (geolocation) {\n resultData.push(geolocation);\n }\n }\n\n // --- Custom data ---\n if (customDataFilter) {\n resultData.push(...CustomData._listFromVisits(visits));\n }\n\n // --- Operating system ---\n if (operatingSystemFilter) {\n const operatingSystem = OperatingSystem._fromVisits(visits);\n\n if (operatingSystem) {\n resultData.push(operatingSystem);\n }\n }\n\n // --- Conversions ---\n if (conversionsFilter) {\n resultData.push(...Conversion._listFromVisits(visits));\n }\n\n // --- Visits ---\n let visitsData: VisitsData | undefined;\n\n const collectedVisitsData = VisitsData._fromRemoteVisits(\n visits,\n Boolean(currentVisit),\n );\n\n if (collectedVisitsData) {\n visitsData = collectedVisitsData;\n }\n\n return { visitorData: resultData, visitsData };\n }\n\n static parseRegExp(value: string): RegExp {\n if (value[0] === '/') {\n const [_, expression, flags] = value.split('/');\n\n return new RegExp(expression, flags);\n }\n\n return new RegExp(value);\n }\n\n static getUserAgent(\n visitorCode: string,\n dataManager: DataManager,\n ): string | undefined {\n const storedData = dataManager.storedTargetingData;\n\n const targetingData: KameleoonVisitorDataType | undefined =\n storedData && storedData[visitorCode];\n\n if (targetingData) {\n const userAgentData = targetingData[KameleoonData.UserAgent];\n\n if (userAgentData) {\n return userAgentData.value;\n }\n }\n\n return undefined;\n }\n\n static isCustomData(dataItem: KameleoonDataType): dataItem is CustomData {\n return dataItem.data.type === KameleoonData.CustomData;\n }\n\n /**\n * Insert element in ordered list, if element already exists in list, does nothing\n * @param list - list to insert element\n * @param element - element to insert\n * @param order - order of list\n */\n static insertInOrderedListMutably({\n list,\n element,\n order,\n }: InsertInOrderedListParametersType): void {\n if (list.includes(element)) {\n return;\n }\n\n const index = list.findIndex((item) =>\n order === Order.Ascending ? item >= element : item <= element,\n );\n\n if (index === -1) {\n list.push(element);\n } else {\n list.splice(index, 0, element);\n }\n }\n\n static updateCache({\n cacheManager,\n visitorCode,\n experimentId,\n variationId,\n }: ManageCacheParametersType): void {\n const cacheData = cacheManager.getAliveItem(visitorCode);\n\n const newCacheData = cacheData ? { ...cacheData } : {};\n\n newCacheData[experimentId] = {\n variationId,\n expirationTime: Date.now() + CACHE_ITEM_LIFETIME * Milliseconds.Second,\n };\n\n cacheManager.add({\n key: visitorCode,\n data: newCacheData,\n lifetime: CACHE_ITEM_LIFETIME,\n });\n }\n\n static getTrackingCode(\n trackingCache: CacheManager<TrackingCacheItemType>,\n visitorCode: string,\n ): string {\n let resultString = 'window.kameleoonQueue=window.kameleoonQueue||[];';\n\n const cacheData = trackingCache.getAliveItem(visitorCode);\n\n if (!cacheData) {\n return resultString;\n }\n\n const updatedCacheData: TrackingCacheItemType = {};\n\n Object.entries(cacheData).forEach(\n ([experimentId, { variationId, expirationTime }]) => {\n if (expirationTime > Date.now()) {\n resultString += `window.kameleoonQueue.push(['Experiments.assignVariation',${experimentId},${variationId}]);`;\n resultString += `window.kameleoonQueue.push(['Experiments.trigger',${experimentId},true]);`;\n\n updatedCacheData[Number(experimentId)] = {\n variationId,\n expirationTime,\n };\n }\n },\n );\n\n // --- Note ---\n // Cache is updated with only alive experiments\n trackingCache.add({\n key: visitorCode,\n data: updatedCacheData,\n lifetime: CACHE_ITEM_LIFETIME,\n });\n\n return resultString;\n }\n\n static async trackData({\n visitorCode,\n dataManager,\n requester,\n isOfflineModeOn,\n offlineTrackingStorage,\n isConsentProvided,\n isMappingIdentifier,\n }: TrackDataParametersType): Promise<void> {\n await this.sendOfflineTracking({\n requester,\n storage: offlineTrackingStorage,\n });\n\n const dataUrl = this.getDataUrl({\n visitorCode,\n dataManager,\n isConsentProvided,\n });\n\n if (!isConsentProvided && !dataUrl) {\n return;\n }\n\n const userAgent = this.getUserAgent(visitorCode, dataManager);\n\n const parameters: TrackDataParamsType = {\n visitorCode,\n body: dataUrl,\n userAgent,\n isMappingIdentifier,\n };\n\n const result = await requester.trackData(parameters);\n\n const cleanup = () =>\n isConsentProvided\n ? dataManager.clearUnsentData(visitorCode)\n : dataManager.clearUnsentDataByKey(\n visitorCode,\n KameleoonData.Conversion,\n );\n\n if (result.ok) {\n cleanup();\n }\n\n if (!result.ok && isOfflineModeOn) {\n this.addItemToOfflineTracking({\n item: parameters,\n storage: offlineTrackingStorage,\n isExperiment: false,\n onSuccess: cleanup,\n });\n }\n }\n\n static getNonce(): string {\n const hexLength = HEX_CHARACTERS.length;\n let nonce: string = '';\n\n for (let i = 0; i < hexLength; i++) {\n const randomNumber = Math.floor(Math.random() * hexLength);\n nonce += HEX_CHARACTERS.substring(randomNumber, randomNumber + 1);\n }\n\n return nonce;\n }\n\n static compareSemVer({\n version,\n compareVersion,\n operator,\n }: {\n version: string;\n compareVersion: string;\n operator: VersionMatchType;\n }): Result<boolean, KameleoonError> {\n const versionResult = this.validateVersion(version);\n const compareVersionResult = this.validateVersion(compareVersion);\n\n if (!versionResult.ok) {\n return Err(versionResult.error);\n }\n\n if (!compareVersionResult.ok) {\n return Err(compareVersionResult.error);\n }\n\n const [major, minor, patch] = versionResult.data;\n const [compareMajor, compareMinor, comparePatch] =\n compareVersionResult.data;\n\n const [isMajorEqual, isMinorEqual, isPatchEqual] = [\n major === compareMajor,\n minor === compareMinor,\n patch === comparePatch,\n ];\n\n switch (operator) {\n case VersionMatchType.EQUAL:\n return Ok(isMajorEqual && isMinorEqual && isPatchEqual);\n case VersionMatchType.GREATER:\n return Ok(\n major > compareMajor ||\n (isMajorEqual && minor > compareMinor) ||\n (isMajorEqual && isMinorEqual && patch > comparePatch),\n );\n case VersionMatchType.LOWER:\n return Ok(\n major < compareMajor ||\n (isMajorEqual && minor < compareMinor) ||\n (isMajorEqual && isMinorEqual && patch < comparePatch),\n );\n default:\n exhaustCheck(operator);\n }\n }\n\n static generateRandomString(length: number): string {\n const characters = 'abcdefghijklmnopqrstuvwxyz0123456789';\n const randomCharacterArray: string[] = [];\n\n if (length < 0) {\n return '';\n }\n\n for (let i = 0; i < length; i++) {\n randomCharacterArray.push(\n characters[Math.floor(Math.random() * characters.length)],\n );\n }\n\n return randomCharacterArray.join('');\n }\n\n static async sendOfflineTracking({\n requester,\n storage,\n }: SendOfflineTrackingParametersType) {\n const readResult = storage.read();\n\n if (readResult.ok && readResult.data.requestParameters) {\n const { requestParameters } = readResult.data;\n const successfulTimestamps: number[] = [];\n\n // --- Note ---\n // `for..of` + `await` is used to make sure that failed requests are sent one by one\n // without risk of getting the same timestamp at the server, which might happen, for example,\n // with `.forEach` or `.map` starting requests in async callbacks at the same time\n for (const parameters of requestParameters) {\n const { timestamp, isExperiment, ...params } = parameters;\n let result: Result<boolean, KameleoonError>;\n\n if (isExperiment) {\n result = await requester.trackExperiment(\n params as TrackExperimentParamsType,\n );\n } else {\n result = await requester.trackData(params as TrackDataParamsType);\n }\n\n result.ok && result.data && successfulTimestamps.push(timestamp);\n }\n\n this.deleteFromOfflineTracking({\n storage,\n timestamps: successfulTimestamps,\n });\n }\n }\n\n private static addItemToOfflineTracking({\n item,\n isExperiment,\n storage,\n onSuccess,\n }: AddToOfflineTrackingParametersType): void {\n const readResult = storage.read();\n\n const data = readResult.ok ? readResult.data : {};\n\n const { requestParameters } = data;\n\n const newItem = {\n ...item,\n timestamp: new Date().getTime(),\n isExperiment,\n };\n\n const newRequestParameters = requestParameters\n ? [...requestParameters, newItem]\n : [newItem];\n\n const writeResult = storage.write({\n requestParameters: newRequestParameters,\n });\n\n if (writeResult.ok && onSuccess) {\n onSuccess();\n }\n }\n\n private static deleteFromOfflineTracking({\n timestamps,\n storage,\n }: DeleteFromOfflineTrackingParametersType): void {\n const readResult = storage.read();\n\n if (readResult.ok) {\n const { requestParameters } = readResult.data;\n\n const newParameters = requestParameters?.filter(\n (item) => !timestamps.includes(item.timestamp),\n );\n\n storage.write({ requestParameters: newParameters });\n }\n }\n\n private static validateVersion(\n version: string,\n ): Result<[number, number, number], KameleoonError> {\n const versionParts = version.split('.').map((x) => parseInt(x, 10));\n\n while (versionParts.length < 3) {\n versionParts.push(0);\n }\n\n if (versionParts.some((item) => isNaN(item))) {\n return Err(\n new KameleoonError(KameleoonException.SemanticVersionParse, version),\n );\n }\n\n return Ok(versionParts.slice(0, 3) as [number, number, number]);\n }\n}\n"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"utilities.js","names":["Utilities","a","_classCallCheck","_createClass","key","value","checkTargeting","segment","visitorCode","targetingData","experimentId","variationConfiguration","clientConfiguration","packageInfo","dataManager","conditionsData","firstLevel","length","Ok","Err","KameleoonError","KameleoonException","Initialization","variations","assignedVariationsResult","getStoredVariations","ok","data","targetingTree","getTree","trees","segments","ruleMap","hasTargetingType","TargetingType","SEGMENT","TARGET_FEATURE_FLAG","result","evaluate","variationData","sdkInfo","validateVisitorCode","VisitorCodeEmpty","VISITOR_CODE_MAX_LENGTH","VisitorCodeMaxLength","getDataUrl","b","updateUrl","url","shouldSendConversionData","type","KameleoonData","Conversion","isConsentProvided","nonce","UrlParameter","Nonce","getNonce","resultUrl","push","unsentData","getUnsentData","size","i","j","_createForOfIteratorHelper","values","s","n","done","item","Array","isArray","forEach","arrayItem","e","f","join","getVariationDataUrlAndSentExperimentIds","variationDataUrlList","sentExperimentIds","Set","isTargetedRule","UrlEventType","Experiment","Id","VariationId","variationId","add","variationDataUrl","experimentIds","from","apply","arguments","_asyncToGenerator","_regeneratorRuntime","mark","c","d","g","h","k","l","m","o","p","q","r","t","u","v","w","wrap","x","prev","next","featureFlagVariation","requester","isOfflineModeOn","offlineTrackingStorage","rule","userAgent","getUserAgent","dataUrl","resultVariationId","_slicedToArray","abrupt","isUnallocated","parameters","trackExperiment","sent","clearUnsentData","clearUnsentDataByKey","markUnsentDataAsSent","addItemToOfflineTracking","storage","isExperiment","stop","convertTimeUnit","time","timeUnit","timeMap","_defineProperty","TimeUnit","Minute","Milliseconds","Hour","Day","Week","Month","parseFeatureVariable","variable","VariableType","BOOLEAN","STRING","NUMBER","numberValue","Number","isNaN","NumberParse","JSON","jsonValue","parse","err","JSONParse","exhaustCheck","parseVisitorData","filters","currentVisit","previousVisits","browserFilter","browser","customDataFilter","customData","operatingSystemFilter","operatingSystem","conversionsFilter","conversions","deviceFilter","device","geolocationFilter","geolocation","experimentsFilter","experiments","pageViewFilter","pageViews","visits","_toConsumableArray","visitorData","resultData","PageView","_listFromVisits","Browser","_fromVisits","visit","experimentData","experimentEvents","y","experimentEvent","A","id","isSent","updateStoredVariations","Device","GeolocationData","CustomData","OperatingSystem","visitsData","collectedVisitsData","VisitsData","_fromRemoteVisits","parseRegExp","split","_","expression","flags","RegExp","storedData","storedTargetingData","userAgentData","UserAgent","isCustomData","dataItem","insertInOrderedListMutably","list","element","order","includes","index","findIndex","Order","Ascending","splice","updateCache","cacheManager","cacheData","getAliveItem","newCacheData","_objectSpread","expirationTime","Date","now","CACHE_ITEM_LIFETIME","Second","lifetime","getTrackingCode","trackingCache","resultString","updatedCacheData","Object","entries","concat","isMappingIdentifier","sendOfflineTracking","body","trackData","cleanup","onSuccess","randomNumber","hexLength","HEX_CHARACTERS","Math","floor","random","substring","compareSemVer","version","compareVersion","operator","versionResult","validateVersion","compareVersionResult","error","major","minor","patch","compareMajor","compareMinor","comparePatch","isMajorEqual","isMinorEqual","isPatchEqual","VersionMatchType","EQUAL","GREATER","LOWER","generateRandomString","characters","randomCharacterArray","readResult","read","requestParameters","successfulTimestamps","timestamp","params","_objectWithoutProperties","_excluded","t0","finish","deleteFromOfflineTracking","timestamps","newItem","getTime","newRequestParameters","writeResult","write","newParameters","filter","versionParts","map","parseInt","some","SemanticVersionParse","slice","exports"],"sources":["../../src/utilities/utilities.ts"],"sourcesContent":["import { Err, Ok, Result } from 'ts-res';\nimport {\n KameleoonError,\n KameleoonException,\n exhaustCheck,\n} from 'src/kameleoonError';\nimport {\n FeatureVariableResultType,\n Milliseconds,\n TrackingCacheItemType,\n VariableType,\n} from 'src/types';\nimport { FeatureVariableType, JSONType } from 'src/clientConfiguration';\nimport {\n Browser,\n Conversion,\n CustomData,\n DataManager,\n Device,\n GeolocationData,\n KameleoonData,\n KameleoonDataType,\n OperatingSystem,\n PageView,\n VisitsData,\n} from 'src/kameleoonData';\nimport { CACHE_ITEM_LIFETIME } from 'src/constants';\nimport { CacheManager } from 'src/cacheManager';\nimport {\n TrackExperimentParamsType,\n TrackDataParamsType,\n VisitType,\n UrlParameter,\n UrlEventType,\n} from 'src/requester';\nimport { VersionMatchType, TargetingType } from 'src/targeting';\nimport { KameleoonVisitorDataType } from 'src/kameleoonData/types';\nimport { FeatureFlagVariationsType } from 'src/storage/types';\nimport { VISITOR_CODE_MAX_LENGTH, HEX_CHARACTERS } from './constants';\nimport {\n CheckTargetingParametersType,\n ManageCacheParametersType,\n TrackDataParametersType,\n TrackRuleParametersType,\n AddToOfflineTrackingParametersType,\n SendOfflineTrackingParametersType,\n DeleteFromOfflineTrackingParametersType,\n ParseVisitorDataParametersType,\n InsertInOrderedListParametersType,\n Order,\n TimeUnit,\n GetDataUrlParametersType,\n GetVariationDataUrlParametersType,\n ParseVisitorDataResultType,\n} from './types';\n\nexport class Utilities {\n static checkTargeting({\n segment,\n visitorCode,\n targetingData,\n experimentId,\n variationConfiguration,\n clientConfiguration,\n packageInfo,\n dataManager,\n }: CheckTargetingParametersType): Result<boolean, KameleoonError> {\n if (!segment || !segment.conditionsData.firstLevel.length) {\n return Ok(true);\n }\n\n if (!variationConfiguration) {\n return Err(new KameleoonError(KameleoonException.Initialization));\n }\n\n let variations: FeatureFlagVariationsType = {};\n\n const assignedVariationsResult =\n variationConfiguration.getStoredVariations(visitorCode);\n\n if (assignedVariationsResult.ok) {\n variations = assignedVariationsResult.data;\n }\n\n const targetingTree = dataManager.getTree(segment);\n\n let trees = undefined;\n let segments = undefined;\n let ruleMap = undefined;\n\n // --- Note ---\n // Only getting trees and segments targeting type\n if (targetingTree.hasTargetingType(TargetingType.SEGMENT)) {\n trees = dataManager.trees;\n segments = clientConfiguration.segments;\n }\n\n // --- Note ---\n // Only constructing rule map for targeting type\n if (targetingTree.hasTargetingType(TargetingType.TARGET_FEATURE_FLAG)) {\n ruleMap = clientConfiguration.ruleMap;\n }\n\n const result = targetingTree.evaluate({\n variationData: variations,\n sdkInfo: packageInfo,\n segments,\n ruleMap,\n trees,\n targetingData,\n experimentId,\n visitorCode,\n });\n\n return result;\n }\n\n static validateVisitorCode(\n visitorCode: string,\n ): Result<void, KameleoonError> {\n if (visitorCode.length === 0) {\n return Err(new KameleoonError(KameleoonException.VisitorCodeEmpty));\n }\n\n if (visitorCode.length > VISITOR_CODE_MAX_LENGTH) {\n return Err(new KameleoonError(KameleoonException.VisitorCodeMaxLength));\n }\n\n return Ok();\n }\n\n static getDataUrl({\n visitorCode,\n dataManager,\n isConsentProvided,\n }: GetDataUrlParametersType): string {\n const unsentData = dataManager.getUnsentData(visitorCode);\n const resultUrl: string[] = [];\n\n if (!unsentData || !unsentData.size) {\n return '';\n }\n\n function updateUrl(data: KameleoonDataType): void {\n if (!data.url) {\n return;\n }\n\n const shouldSendAllData = isConsentProvided;\n const shouldSendConversionData =\n data.data.type === KameleoonData.Conversion;\n\n if (shouldSendAllData || shouldSendConversionData) {\n const nonce = !shouldSendConversionData\n ? UrlParameter.Nonce + Utilities.getNonce()\n : '';\n resultUrl.push(data.url + nonce + '\\n');\n }\n }\n\n for (const item of unsentData.values()) {\n if (Array.isArray(item)) {\n item.forEach((arrayItem) => updateUrl(arrayItem));\n } else {\n updateUrl(item);\n }\n }\n\n return resultUrl.join('');\n }\n\n static getVariationDataUrlAndSentExperimentIds({\n visitorCode,\n isConsentProvided,\n variationConfiguration,\n }: GetVariationDataUrlParametersType): [string, string[]] {\n const variationDataUrlList: string[] = [];\n const sentExperimentIds = new Set<string>();\n const unsentData = variationConfiguration.getUnsentData(visitorCode);\n\n if (unsentData.ok && unsentData.data.length) {\n unsentData.data.forEach((item) => {\n if (item.isTargetedRule || isConsentProvided) {\n variationDataUrlList.push(\n UrlEventType.Experiment +\n UrlParameter.Id +\n item.experimentId +\n UrlParameter.VariationId +\n item.variationId +\n UrlParameter.Nonce +\n Utilities.getNonce() +\n '\\n',\n );\n\n sentExperimentIds.add(String(item.experimentId));\n }\n });\n }\n\n const variationDataUrl = variationDataUrlList.join('');\n const experimentIds = Array.from(sentExperimentIds);\n\n return [variationDataUrl, experimentIds];\n }\n\n static async trackFeatureExperiment({\n featureFlagVariation,\n dataManager,\n visitorCode,\n requester,\n isOfflineModeOn,\n isConsentProvided,\n offlineTrackingStorage,\n variationConfiguration,\n }: TrackRuleParametersType): Promise<void> {\n const { variationId, rule } = featureFlagVariation;\n\n const userAgent = this.getUserAgent(visitorCode, dataManager);\n\n const dataUrl = this.getDataUrl({\n visitorCode,\n dataManager,\n isConsentProvided,\n });\n\n const resultVariationId = variationId || 0;\n\n // --- Note ---\n // Experiment id is not needed for unallocated visitors\n // So we just use 0 as a fallback\n const experimentId = rule ? rule.experimentId : 0;\n\n const [variationDataUrl, sentExperimentIds] =\n this.getVariationDataUrlAndSentExperimentIds({\n visitorCode,\n isConsentProvided,\n variationConfiguration,\n });\n\n if (!isConsentProvided && !dataUrl && !rule) {\n return;\n }\n\n const isUnallocated = variationId === null;\n\n const parameters = {\n visitorCode,\n dataUrl,\n variationDataUrl,\n experimentId,\n variationId: resultVariationId,\n userAgent,\n isUnallocated,\n };\n\n const result = await requester.trackExperiment(parameters);\n\n if (result.ok) {\n if (!isConsentProvided) {\n dataManager.clearUnsentDataByKey(visitorCode, KameleoonData.Conversion);\n } else {\n dataManager.clearUnsentData(visitorCode);\n }\n\n sentExperimentIds.forEach((experimentId) => {\n variationConfiguration.markUnsentDataAsSent(visitorCode, experimentId);\n });\n }\n\n if (!result.ok && isOfflineModeOn) {\n this.addItemToOfflineTracking({\n item: parameters,\n storage: offlineTrackingStorage,\n isExperiment: true,\n });\n }\n }\n\n static convertTimeUnit(time: number, timeUnit: TimeUnit): number {\n const timeMap = {\n [TimeUnit.Minute]: Milliseconds.Minute,\n [TimeUnit.Hour]: Milliseconds.Hour,\n [TimeUnit.Day]: Milliseconds.Day,\n [TimeUnit.Week]: Milliseconds.Week,\n [TimeUnit.Month]: Milliseconds.Month,\n };\n\n return time / timeMap[timeUnit];\n }\n\n static parseFeatureVariable(\n variable: FeatureVariableType,\n ): Result<FeatureVariableResultType, KameleoonError> {\n const { key, type, value } = variable;\n\n switch (type) {\n case VariableType.BOOLEAN:\n return Ok({\n key,\n type,\n value: Boolean(value),\n });\n case VariableType.STRING:\n return Ok({\n key,\n type,\n value: String(value),\n });\n case VariableType.NUMBER:\n const numberValue = Number(value);\n\n if (Number.isNaN(numberValue)) {\n return Err(\n new KameleoonError(KameleoonException.NumberParse, String(value)),\n );\n }\n\n return Ok({\n key,\n type,\n value: numberValue,\n });\n case VariableType.JSON:\n try {\n const jsonValue: JSONType = JSON.parse(String(variable.value));\n\n return Ok({\n key,\n type,\n value: jsonValue,\n });\n } catch (err) {\n return Err(new KameleoonError(KameleoonException.JSONParse, err));\n }\n default:\n exhaustCheck(type);\n }\n }\n\n static parseVisitorData({\n data,\n filters,\n visitorCode,\n variationConfiguration,\n }: ParseVisitorDataParametersType): ParseVisitorDataResultType {\n const { currentVisit, previousVisits } = data;\n const {\n browser: browserFilter,\n customData: customDataFilter,\n operatingSystem: operatingSystemFilter,\n conversions: conversionsFilter,\n device: deviceFilter,\n geolocation: geolocationFilter,\n experiments: experimentsFilter,\n pageViews: pageViewFilter,\n } = filters;\n\n let visits: VisitType[] = [];\n\n if (currentVisit) {\n visits.push(currentVisit);\n }\n\n if (previousVisits) {\n visits.push(...previousVisits);\n }\n\n if (!visits) {\n return { visitorData: [] };\n }\n\n const resultData: KameleoonDataType[] = [];\n\n if (pageViewFilter) {\n const pageViews = PageView._listFromVisits(visits);\n\n if (pageViews.length) {\n resultData.push(...pageViews);\n }\n }\n\n // --- Browser ---\n if (browserFilter) {\n const browser = Browser._fromVisits(visits);\n\n if (browser) {\n resultData.push(browser);\n }\n }\n\n // --- Experiments ---\n if (experimentsFilter) {\n const experimentData: FeatureFlagVariationsType = {};\n\n // --- Note ---\n // Going backwards to get the latest experiment data\n for (let i = visits.length - 1; i >= 0; i--) {\n const visit = visits[i];\n\n if (!visit.experimentEvents) {\n continue;\n }\n\n for (const experimentEvent of visit.experimentEvents) {\n const { id, variationId } = experimentEvent.data;\n\n experimentData[id] = {\n variationId,\n isTargetedRule: false,\n isSent: false,\n };\n }\n }\n\n variationConfiguration.updateStoredVariations(\n visitorCode,\n experimentData,\n );\n }\n\n // --- Device ---\n if (deviceFilter) {\n const device = Device._fromVisits(visits);\n\n if (device) {\n resultData.push(device);\n }\n }\n\n // --- Geolocation ---\n if (geolocationFilter) {\n const geolocation = GeolocationData._fromVisits(visits);\n\n if (geolocation) {\n resultData.push(geolocation);\n }\n }\n\n // --- Custom data ---\n if (customDataFilter) {\n resultData.push(...CustomData._listFromVisits(visits));\n }\n\n // --- Operating system ---\n if (operatingSystemFilter) {\n const operatingSystem = OperatingSystem._fromVisits(visits);\n\n if (operatingSystem) {\n resultData.push(operatingSystem);\n }\n }\n\n // --- Conversions ---\n if (conversionsFilter) {\n resultData.push(...Conversion._listFromVisits(visits));\n }\n\n // --- Visits ---\n let visitsData: VisitsData | undefined;\n\n const collectedVisitsData = VisitsData._fromRemoteVisits(\n visits,\n Boolean(currentVisit),\n );\n\n if (collectedVisitsData) {\n visitsData = collectedVisitsData;\n }\n\n return { visitorData: resultData, visitsData };\n }\n\n static parseRegExp(value: string): RegExp {\n if (value[0] === '/') {\n const [_, expression, flags] = value.split('/');\n\n return new RegExp(expression, flags);\n }\n\n return new RegExp(value);\n }\n\n static getUserAgent(\n visitorCode: string,\n dataManager: DataManager,\n ): string | undefined {\n const storedData = dataManager.storedTargetingData;\n\n const targetingData: KameleoonVisitorDataType | undefined =\n storedData && storedData[visitorCode];\n\n if (targetingData) {\n const userAgentData = targetingData[KameleoonData.UserAgent];\n\n if (userAgentData) {\n return userAgentData.value;\n }\n }\n\n return undefined;\n }\n\n static isCustomData(dataItem: KameleoonDataType): dataItem is CustomData {\n return dataItem.data.type === KameleoonData.CustomData;\n }\n\n /**\n * Insert element in ordered list, if element already exists in list, does nothing\n * @param list - list to insert element\n * @param element - element to insert\n * @param order - order of list\n */\n static insertInOrderedListMutably({\n list,\n element,\n order,\n }: InsertInOrderedListParametersType): void {\n if (list.includes(element)) {\n return;\n }\n\n const index = list.findIndex((item) =>\n order === Order.Ascending ? item >= element : item <= element,\n );\n\n if (index === -1) {\n list.push(element);\n } else {\n list.splice(index, 0, element);\n }\n }\n\n static updateCache({\n cacheManager,\n visitorCode,\n experimentId,\n variationId,\n }: ManageCacheParametersType): void {\n const cacheData = cacheManager.getAliveItem(visitorCode);\n\n const newCacheData = cacheData ? { ...cacheData } : {};\n\n newCacheData[experimentId] = {\n variationId,\n expirationTime: Date.now() + CACHE_ITEM_LIFETIME * Milliseconds.Second,\n };\n\n cacheManager.add({\n key: visitorCode,\n data: newCacheData,\n lifetime: CACHE_ITEM_LIFETIME,\n });\n }\n\n static getTrackingCode(\n trackingCache: CacheManager<TrackingCacheItemType>,\n visitorCode: string,\n ): string {\n let resultString = 'window.kameleoonQueue=window.kameleoonQueue||[];';\n\n const cacheData = trackingCache.getAliveItem(visitorCode);\n\n if (!cacheData) {\n return resultString;\n }\n\n const updatedCacheData: TrackingCacheItemType = {};\n\n Object.entries(cacheData).forEach(\n ([experimentId, { variationId, expirationTime }]) => {\n if (expirationTime > Date.now()) {\n resultString += `window.kameleoonQueue.push(['Experiments.assignVariation',${experimentId},${variationId}]);`;\n resultString += `window.kameleoonQueue.push(['Experiments.trigger',${experimentId},true]);`;\n\n updatedCacheData[Number(experimentId)] = {\n variationId,\n expirationTime,\n };\n }\n },\n );\n\n // --- Note ---\n // Cache is updated with only alive experiments\n trackingCache.add({\n key: visitorCode,\n data: updatedCacheData,\n lifetime: CACHE_ITEM_LIFETIME,\n });\n\n return resultString;\n }\n\n static async trackData({\n visitorCode,\n dataManager,\n requester,\n isOfflineModeOn,\n offlineTrackingStorage,\n isConsentProvided,\n isMappingIdentifier,\n }: TrackDataParametersType): Promise<void> {\n await this.sendOfflineTracking({\n requester,\n storage: offlineTrackingStorage,\n });\n\n const dataUrl = this.getDataUrl({\n visitorCode,\n dataManager,\n isConsentProvided,\n });\n\n if (!isConsentProvided && !dataUrl) {\n return;\n }\n\n const userAgent = this.getUserAgent(visitorCode, dataManager);\n\n const parameters: TrackDataParamsType = {\n visitorCode,\n body: dataUrl,\n userAgent,\n isMappingIdentifier,\n };\n\n const result = await requester.trackData(parameters);\n\n const cleanup = () =>\n isConsentProvided\n ? dataManager.clearUnsentData(visitorCode)\n : dataManager.clearUnsentDataByKey(\n visitorCode,\n KameleoonData.Conversion,\n );\n\n if (result.ok) {\n cleanup();\n }\n\n if (!result.ok && isOfflineModeOn) {\n this.addItemToOfflineTracking({\n item: parameters,\n storage: offlineTrackingStorage,\n isExperiment: false,\n onSuccess: cleanup,\n });\n }\n }\n\n static getNonce(): string {\n const hexLength = HEX_CHARACTERS.length;\n let nonce: string = '';\n\n for (let i = 0; i < hexLength; i++) {\n const randomNumber = Math.floor(Math.random() * hexLength);\n nonce += HEX_CHARACTERS.substring(randomNumber, randomNumber + 1);\n }\n\n return nonce;\n }\n\n static compareSemVer({\n version,\n compareVersion,\n operator,\n }: {\n version: string;\n compareVersion: string;\n operator: VersionMatchType;\n }): Result<boolean, KameleoonError> {\n const versionResult = this.validateVersion(version);\n const compareVersionResult = this.validateVersion(compareVersion);\n\n if (!versionResult.ok) {\n return Err(versionResult.error);\n }\n\n if (!compareVersionResult.ok) {\n return Err(compareVersionResult.error);\n }\n\n const [major, minor, patch] = versionResult.data;\n const [compareMajor, compareMinor, comparePatch] =\n compareVersionResult.data;\n\n const [isMajorEqual, isMinorEqual, isPatchEqual] = [\n major === compareMajor,\n minor === compareMinor,\n patch === comparePatch,\n ];\n\n switch (operator) {\n case VersionMatchType.EQUAL:\n return Ok(isMajorEqual && isMinorEqual && isPatchEqual);\n case VersionMatchType.GREATER:\n return Ok(\n major > compareMajor ||\n (isMajorEqual && minor > compareMinor) ||\n (isMajorEqual && isMinorEqual && patch > comparePatch),\n );\n case VersionMatchType.LOWER:\n return Ok(\n major < compareMajor ||\n (isMajorEqual && minor < compareMinor) ||\n (isMajorEqual && isMinorEqual && patch < comparePatch),\n );\n default:\n exhaustCheck(operator);\n }\n }\n\n static generateRandomString(length: number): string {\n const characters = 'abcdefghijklmnopqrstuvwxyz0123456789';\n const randomCharacterArray: string[] = [];\n\n if (length < 0) {\n return '';\n }\n\n for (let i = 0; i < length; i++) {\n randomCharacterArray.push(\n characters[Math.floor(Math.random() * characters.length)],\n );\n }\n\n return randomCharacterArray.join('');\n }\n\n static async sendOfflineTracking({\n requester,\n storage,\n }: SendOfflineTrackingParametersType) {\n const readResult = storage.read();\n\n if (readResult.ok && readResult.data.requestParameters) {\n const { requestParameters } = readResult.data;\n const successfulTimestamps: number[] = [];\n\n // --- Note ---\n // `for..of` + `await` is used to make sure that failed requests are sent one by one\n // without risk of getting the same timestamp at the server, which might happen, for example,\n // with `.forEach` or `.map` starting requests in async callbacks at the same time\n for (const parameters of requestParameters) {\n const { timestamp, isExperiment, ...params } = parameters;\n let result: Result<boolean, void>;\n\n if (isExperiment) {\n result = await requester.trackExperiment(\n params as TrackExperimentParamsType,\n );\n } else {\n result = await requester.trackData(params as TrackDataParamsType);\n }\n\n result.ok && result.data && successfulTimestamps.push(timestamp);\n }\n\n this.deleteFromOfflineTracking({\n storage,\n timestamps: successfulTimestamps,\n });\n }\n }\n\n private static addItemToOfflineTracking({\n item,\n isExperiment,\n storage,\n onSuccess,\n }: AddToOfflineTrackingParametersType): void {\n const readResult = storage.read();\n\n const data = readResult.ok ? readResult.data : {};\n\n const { requestParameters } = data;\n\n const newItem = {\n ...item,\n timestamp: new Date().getTime(),\n isExperiment,\n };\n\n const newRequestParameters = requestParameters\n ? [...requestParameters, newItem]\n : [newItem];\n\n const writeResult = storage.write({\n requestParameters: newRequestParameters,\n });\n\n if (writeResult.ok && onSuccess) {\n onSuccess();\n }\n }\n\n private static deleteFromOfflineTracking({\n timestamps,\n storage,\n }: DeleteFromOfflineTrackingParametersType): void {\n const readResult = storage.read();\n\n if (readResult.ok) {\n const { requestParameters } = readResult.data;\n\n const newParameters = requestParameters?.filter(\n (item) => !timestamps.includes(item.timestamp),\n );\n\n storage.write({ requestParameters: newParameters });\n }\n }\n\n private static validateVersion(\n version: string,\n ): Result<[number, number, number], KameleoonError> {\n const versionParts = version.split('.').map((x) => parseInt(x, 10));\n\n while (versionParts.length < 3) {\n versionParts.push(0);\n }\n\n if (versionParts.some((item) => isNaN(item))) {\n return Err(\n new KameleoonError(KameleoonException.SemanticVersionParse, version),\n );\n }\n\n return Ok(versionParts.slice(0, 3) as [number, number, number]);\n }\n}\n"],"mappings":"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"}
|