|
758 | 758 | if (window['optimizely']) { |
759 | 759 |
|
760 | 760 | if (autoContexts.optimizelyExperiments) { |
761 | | - combinedContexts = combinedContexts.concat(getOptimizelyExperimentContexts()); |
| 761 | + var experimentContexts = getOptimizelyExperimentContexts(); |
| 762 | + for (var i = 0; i < experimentContexts.length; i++) { |
| 763 | + combinedContexts.push(experimentContexts[i]); |
| 764 | + } |
762 | 765 | } |
763 | 766 |
|
764 | 767 | if (autoContexts.optimizelyStates) { |
765 | | - combinedContexts = combinedContexts.concat(getOptimizelyStateContexts()); |
| 768 | + var stateContexts = getOptimizelyStateContexts(); |
| 769 | + for (var i = 0; i < stateContexts.length; i++) { |
| 770 | + combinedContexts.push(stateContexts[i]); |
| 771 | + } |
766 | 772 | } |
767 | 773 |
|
768 | 774 | if (autoContexts.optimizelyVariations) { |
769 | | - combinedContexts = combinedContexts.concat(getOptimizelyVariationContexts()); |
| 775 | + var variationContexts = getOptimizelyVariationContexts(); |
| 776 | + for (var i = 0; i < variationContexts.length; i++) { |
| 777 | + combinedContexts.push(variationContexts[i]); |
| 778 | + } |
770 | 779 | } |
771 | 780 |
|
772 | 781 | if (autoContexts.optimizelyVisitor) { |
|
777 | 786 | } |
778 | 787 |
|
779 | 788 | if (autoContexts.optimizelyAudiences) { |
780 | | - combinedContexts = combinedContexts.concat(getOptimizelyAudienceContexts()); |
| 789 | + var audienceContexts = getOptimizelyAudienceContexts(); |
| 790 | + for (var i = 0; i < audienceContexts.length; i++) { |
| 791 | + combinedContexts.push(audienceContexts[i]); |
| 792 | + } |
781 | 793 | } |
782 | 794 |
|
783 | 795 | if (autoContexts.optimizelyDimensions) { |
784 | | - combinedContexts = combinedContexts.concat(getOptimizelyDimensionContexts()); |
| 796 | + var dimensionContexts = getOptimizelyDimensionContexts(); |
| 797 | + for (var i = 0; i < dimensionContexts.length; i++) { |
| 798 | + combinedContexts.push(dimensionContexts[i]); |
| 799 | + } |
785 | 800 | } |
786 | 801 | } |
787 | 802 |
|
|
860 | 875 | var contexts = []; |
861 | 876 |
|
862 | 877 | for (var key in experiments) { |
863 | | - var context = {}; |
864 | | - context['id'] = key; |
865 | | - var e = experiments[key]; |
866 | | - if (e.hasOwnProperty('code')) context['code'] = e.code; |
867 | | - if (e.hasOwnProperty('manual')) context['manual'] = e.manual; |
868 | | - if (e.hasOwnProperty('conditional')) context['conditional'] = e.conditional; |
869 | | - if (e.hasOwnProperty('name')) context['name'] = e.name; |
870 | | - if (e.hasOwnProperty('variation_ids')) context['variationIds'] = e.variation_ids; |
871 | | - |
872 | | - contexts.push({ |
873 | | - schema: 'iglu:com.optimizely/experiment/jsonschema/1-0-0', |
874 | | - data: context |
875 | | - }); |
| 878 | + if (experiments.hasOwnProperty(key)) { |
| 879 | + var context = {}; |
| 880 | + context['id'] = key; |
| 881 | + var experiment = experiments[key]; |
| 882 | + context['code'] = experiment.code; |
| 883 | + context['manual'] = experiment.manual; |
| 884 | + context['conditional'] = experiment.conditional; |
| 885 | + context['name'] = experiment.name; |
| 886 | + context['variationIds'] = experiment.variation_ids; |
| 887 | + |
| 888 | + contexts.push({ |
| 889 | + schema: 'iglu:com.optimizely/experiment/jsonschema/1-0-0', |
| 890 | + data: context |
| 891 | + }); |
| 892 | + } |
876 | 893 | } |
877 | 894 | return contexts; |
878 | 895 | } |
|
889 | 906 | var experiments = window['optimizely'].data.experiments; |
890 | 907 | if (experiments) { |
891 | 908 | for (var key in experiments) { |
892 | | - experimentIds.push(key); |
| 909 | + if (experiments.hasOwnProperty(key)) { |
| 910 | + experimentIds.push(key); |
| 911 | + } |
893 | 912 | } |
894 | 913 | } |
895 | 914 |
|
896 | 915 | var state = window['optimizely'].data.state; |
897 | 916 | if (state) { |
898 | 917 | var contexts = []; |
899 | | - var activeExperiments = state.hasOwnProperty('activeExperiments') ? state.activeExperiments : []; |
| 918 | + var activeExperiments = state.activeExperiments || []; |
900 | 919 |
|
901 | 920 | for (var i = 0; i < experimentIds.length; i++) { |
902 | 921 | var experimentId = experimentIds[i]; |
903 | 922 | var context = {}; |
904 | 923 | context['experimentId'] = experimentId; |
905 | 924 | context['isActive'] = helpers.isValueInArray(experimentIds[i], activeExperiments); |
906 | | - var variationMap = state.hasOwnProperty('variationMap') ? state.variationMap : {}; |
907 | | - if (variationMap.hasOwnProperty(experimentId)) context['variationIndex'] = variationMap[experimentId]; |
908 | | - var variationIdsMap = state.hasOwnProperty('variationIdsMap') ? state.variationIdsMap : {}; |
909 | | - if (variationIdsMap.hasOwnProperty(experimentId) && variationIdsMap[experimentId].length === 1) context['variationId'] = variationIdsMap[experimentId][0]; |
910 | | - var variationNamesMap = state.hasOwnProperty('variationNamesMap') ? state.variationNamesMap : {}; |
911 | | - if (variationNamesMap.hasOwnProperty(experimentId)) context['variationName'] = variationNamesMap[experimentId]; |
| 925 | + var variationMap = state.variationMap || {}; |
| 926 | + context['variationIndex'] = variationMap[experimentId]; |
| 927 | + var variationNamesMap = state.variationNamesMap || {}; |
| 928 | + context['variationName'] = variationNamesMap[experimentId]; |
| 929 | + var variationIdsMap = state.variationIdsMap || {}; |
| 930 | + if (variationIdsMap[experimentId] && variationIdsMap[experimentId].length === 1) { |
| 931 | + context['variationId'] = variationIdsMap[experimentId][0]; |
| 932 | + } |
912 | 933 |
|
913 | 934 | contexts.push({ |
914 | 935 | schema: 'iglu:com.optimizely/state/jsonschema/1-0-0', |
|
931 | 952 | var contexts = []; |
932 | 953 |
|
933 | 954 | for (var key in variations) { |
934 | | - var context = {}; |
935 | | - context['id'] = key; |
936 | | - var variation = variations[key]; |
937 | | - if (variation.hasOwnProperty('name')) context['name'] = variation.name; |
938 | | - if (variation.hasOwnProperty('code')) context['code'] = variation.code; |
939 | | - |
940 | | - contexts.push({ |
941 | | - schema: 'iglu:com.optimizely/variation/jsonschema/1-0-0', |
942 | | - data: context |
943 | | - }); |
| 955 | + if (variations.hasOwnProperty(key)) { |
| 956 | + var context = {}; |
| 957 | + context['id'] = key; |
| 958 | + var variation = variations[key]; |
| 959 | + context['name'] = variation.name; |
| 960 | + context['code'] = variation.code; |
| 961 | + |
| 962 | + contexts.push({ |
| 963 | + schema: 'iglu:com.optimizely/variation/jsonschema/1-0-0', |
| 964 | + data: context |
| 965 | + }); |
| 966 | + } |
944 | 967 | } |
945 | 968 | return contexts; |
946 | 969 | } |
|
956 | 979 | var visitor = window['optimizely'].data.visitor; |
957 | 980 | if (visitor) { |
958 | 981 | var context = {}; |
959 | | - if (visitor.hasOwnProperty('browser')) context['browser'] = visitor.browser; |
960 | | - if (visitor.hasOwnProperty('browserVersion')) context['browserVersion'] = visitor.browserVersion; |
961 | | - if (visitor.hasOwnProperty('device')) context['device'] = visitor.device; |
962 | | - if (visitor.hasOwnProperty('deviceType')) context['deviceType'] = visitor.deviceType; |
963 | | - if (visitor.hasOwnProperty('ip')) context['ip'] = visitor.ip; |
964 | | - var platform = visitor.hasOwnProperty('platform') && visitor.platform ? visitor.platform : {}; |
965 | | - if (platform.hasOwnProperty('id')) context['platformId'] = platform.id; |
966 | | - if (platform.hasOwnProperty('version')) context['platformVersion'] = platform.version; |
967 | | - var location = visitor.hasOwnProperty('location') && visitor.location ? visitor.location : {}; |
968 | | - if (location.hasOwnProperty('city')) context['locationCity'] = location.city; |
969 | | - if (location.hasOwnProperty('region')) context['locationRegion'] = location.region; |
970 | | - if (location.hasOwnProperty('country')) context['locationCountry'] = location.country; |
971 | | - if (visitor.hasOwnProperty('mobile')) context['mobile'] = visitor.mobile; |
972 | | - if (visitor.hasOwnProperty('mobileId')) context['mobileId'] = visitor.mobileId; |
973 | | - if (visitor.hasOwnProperty('referrer')) context['referrer'] = visitor.referrer; |
974 | | - if (visitor.hasOwnProperty('os')) context['os'] = visitor.os; |
| 982 | + context['browser'] = visitor.browser; |
| 983 | + context['browserVersion'] = visitor.browserVersion; |
| 984 | + context['device'] = visitor.device; |
| 985 | + context['deviceType'] = visitor.deviceType; |
| 986 | + context['ip'] = visitor.ip; |
| 987 | + var platform = visitor.platform || {}; |
| 988 | + context['platformId'] = platform.id; |
| 989 | + context['platformVersion'] = platform.version; |
| 990 | + var location = visitor.location || {}; |
| 991 | + context['locationCity'] = location.city; |
| 992 | + context['locationRegion'] = location.region; |
| 993 | + context['locationCountry'] = location.country; |
| 994 | + context['mobile'] = visitor.mobile; |
| 995 | + context['mobileId'] = visitor.mobileId; |
| 996 | + context['referrer'] = visitor.referrer; |
| 997 | + context['os'] = visitor.os; |
975 | 998 |
|
976 | 999 | return { |
977 | 1000 | schema: 'iglu:com.optimizely/visitor/jsonschema/1-0-0', |
|
991 | 1014 | var contexts = []; |
992 | 1015 |
|
993 | 1016 | for (var key in audienceIds) { |
994 | | - var context = {}; |
995 | | - context['id'] = key; |
996 | | - context['isMember'] = audienceIds[key]; |
997 | | - |
998 | | - contexts.push({ |
999 | | - schema: 'iglu:com.optimizely/visitor_audience/jsonschema/1-0-0', |
1000 | | - data: context |
1001 | | - }); |
| 1017 | + if (audienceIds.hasOwnProperty(key)) { |
| 1018 | + var context = {}; |
| 1019 | + context['id'] = key; |
| 1020 | + context['isMember'] = audienceIds[key]; |
| 1021 | + |
| 1022 | + contexts.push({ |
| 1023 | + schema: 'iglu:com.optimizely/visitor_audience/jsonschema/1-0-0', |
| 1024 | + data: context |
| 1025 | + }); |
| 1026 | + } |
1002 | 1027 | } |
1003 | 1028 | return contexts; |
1004 | 1029 | } |
|
1016 | 1041 | var contexts = []; |
1017 | 1042 |
|
1018 | 1043 | for (var key in dimensionIds) { |
1019 | | - var context = {}; |
1020 | | - context['id'] = key; |
1021 | | - context['value'] = dimensionIds[key]; |
1022 | | - |
1023 | | - contexts.push({ |
1024 | | - schema: 'iglu:com.optimizely/visitor_dimension/jsonschema/1-0-0', |
1025 | | - data: context |
1026 | | - }); |
| 1044 | + if (dimensionIds.hasOwnProperty(key)) { |
| 1045 | + var context = {}; |
| 1046 | + context['id'] = key; |
| 1047 | + context['value'] = dimensionIds[key]; |
| 1048 | + |
| 1049 | + contexts.push({ |
| 1050 | + schema: 'iglu:com.optimizely/visitor_dimension/jsonschema/1-0-0', |
| 1051 | + data: context |
| 1052 | + }); |
| 1053 | + } |
1027 | 1054 | } |
1028 | 1055 | return contexts; |
1029 | 1056 | } |
|
1039 | 1066 | var augur = window['augur']; |
1040 | 1067 | if (augur) { |
1041 | 1068 | var context = { consumer: {}, device: {} }; |
1042 | | - var consumer = augur.hasOwnProperty('consumer') ? augur.consumer : {}; |
1043 | | - if (consumer.hasOwnProperty('UID')) context['consumer']['UUID'] = consumer.UID; |
1044 | | - var device = augur.hasOwnProperty('device') ? augur.device : {}; |
1045 | | - if (device.hasOwnProperty('ID')) context['device']['ID'] = device.ID; |
1046 | | - if (device.hasOwnProperty('isBot')) context['device']['isBot'] = device.isBot; |
1047 | | - if (device.hasOwnProperty('isProxied')) context['device']['isProxied'] = device.isProxied; |
1048 | | - if (device.hasOwnProperty('isTor')) context['device']['isTor'] = device.isTor; |
1049 | | - |
1050 | | - // isIncognito can be found in two places |
1051 | | - if (device.hasOwnProperty('isIncognito')) context['device']['isIncognito'] = device.isIncognito; |
1052 | | - if (!context.device.hasOwnProperty('isIncognito')) { |
1053 | | - var fingerprint = device.hasOwnProperty('fingerprint') ? device.fingerprint : {}; |
1054 | | - if (fingerprint.hasOwnProperty('browserHasIncognitoEnabled')) { |
1055 | | - context['device']['isIncognito'] = fingerprint.browserHasIncognitoEnabled; |
1056 | | - } |
1057 | | - } |
| 1069 | + var consumer = augur.consumer || {}; |
| 1070 | + context['consumer']['UUID'] = consumer.UID; |
| 1071 | + var device = augur.device || {}; |
| 1072 | + context['device']['ID'] = device.ID; |
| 1073 | + context['device']['isBot'] = device.isBot; |
| 1074 | + context['device']['isProxied'] = device.isProxied; |
| 1075 | + context['device']['isTor'] = device.isTor; |
| 1076 | + var fingerprint = device.fingerprint || {}; |
| 1077 | + context['device']['isIncognito'] = fingerprint.browserHasIncognitoEnabled; |
1058 | 1078 |
|
1059 | 1079 | return { |
1060 | 1080 | schema: 'iglu:io.augur.snowplow/identity_lite/jsonschema/1-0-0', |
|
0 commit comments