forked from mirrors/gecko-dev
		
	
		
			
				
	
	
		
			288 lines
		
	
	
	
		
			6.2 KiB
		
	
	
	
		
			JavaScript
		
	
	
	
	
	
			
		
		
	
	
			288 lines
		
	
	
	
		
			6.2 KiB
		
	
	
	
		
			JavaScript
		
	
	
	
	
	
| /* This Source Code Form is subject to the terms of the Mozilla Public
 | |
|  * License, v. 2.0. If a copy of the MPL was not distributed with this
 | |
|  * file, You can obtain one at http://mozilla.org/MPL/2.0/. */
 | |
| 
 | |
| "use strict";
 | |
| 
 | |
| /**
 | |
|  * Bug 1713725 - Shim Rich Relevance personalized shopping
 | |
|  *
 | |
|  * Sites may expect the Rich Relevance personalized shopping API to load,
 | |
|  * breaking if it is blocked. This shim attempts to limit breakage on those
 | |
|  * site to just the personalized shopping aspects, by stubbing out the APIs.
 | |
|  */
 | |
| 
 | |
| if (!window.r3_common) {
 | |
|   const jsonCallback = window.RR?.jsonCallback;
 | |
|   const defaultCallback = window.RR?.defaultCallback;
 | |
| 
 | |
|   const getRandomString = (l = 66) => {
 | |
|     const v = crypto.getRandomValues(new Uint8Array(l));
 | |
|     const s = Array.from(v, c => c.toString(16)).join("");
 | |
|     return s.slice(0, l);
 | |
|   };
 | |
| 
 | |
|   const call = (fn, ...args) => {
 | |
|     if (typeof fn === "function") {
 | |
|       try {
 | |
|         fn(...args);
 | |
|       } catch (e) {
 | |
|         console.error(e);
 | |
|       }
 | |
|     }
 | |
|   };
 | |
| 
 | |
|   class r3_generic {
 | |
|     type = "GENERIC";
 | |
|     createScript() {}
 | |
|     destroy() {}
 | |
|   }
 | |
| 
 | |
|   class r3_addtocart extends r3_generic {
 | |
|     type = "ADDTOCART";
 | |
|     addItemIdToCart() {}
 | |
|   }
 | |
| 
 | |
|   class r3_addtoregistry extends r3_generic {
 | |
|     type = "ADDTOREGISTRY";
 | |
|     addItemIdCentsQuantity() {}
 | |
|   }
 | |
| 
 | |
|   class r3_brand extends r3_generic {
 | |
|     type = "BRAND";
 | |
|   }
 | |
| 
 | |
|   class r3_cart extends r3_generic {
 | |
|     type = "CART";
 | |
|     addItemId() {}
 | |
|     addItemIdCentsQuantity() {}
 | |
|     addItemIdDollarsAndCentsQuantity() {}
 | |
|     addItemIdPriceQuantity() {}
 | |
|   }
 | |
| 
 | |
|   class r3_category extends r3_generic {
 | |
|     type = "CATEGORY";
 | |
|     addItemId() {}
 | |
|     setId() {}
 | |
|     setName() {}
 | |
|     setParentId() {}
 | |
|     setTopName() {}
 | |
|   }
 | |
| 
 | |
|   class r3_common extends r3_generic {
 | |
|     type = "COMMON";
 | |
|     baseUrl = "https://recs.richrelevance.com/rrserver/";
 | |
|     devFlags = {};
 | |
|     jsFileName = "p13n_generated.js";
 | |
|     RICHSORT = {
 | |
|       paginate() {},
 | |
|       filterPrice() {},
 | |
|       filterAttribute() {},
 | |
|     };
 | |
|     addCategoryHintId() {}
 | |
|     addClickthruParams() {}
 | |
|     addContext() {}
 | |
|     addFilter() {}
 | |
|     addFilterBrand() {}
 | |
|     addFilterCategory() {}
 | |
|     addItemId() {}
 | |
|     addItemIdToCart() {}
 | |
|     addPlacementType() {}
 | |
|     addRefinement() {}
 | |
|     addSearchTerm() {}
 | |
|     addSegment() {}
 | |
|     blockItemId() {}
 | |
|     enableCfrad() {}
 | |
|     enableRad() {}
 | |
|     forceDebugMode() {}
 | |
|     forceDevMode() {}
 | |
|     forceDisplayMode() {}
 | |
|     forceLocale() {}
 | |
|     initFromParams() {}
 | |
|     setApiKey() {}
 | |
|     setBaseUrl() {}
 | |
|     setCartValue() {}
 | |
|     setChannel() {}
 | |
|     setClickthruServer() {}
 | |
|     setCurrency() {}
 | |
|     setDeviceId() {}
 | |
|     setFilterBrandsIncludeMatchingElements() {}
 | |
|     setForcedTreatment() {}
 | |
|     setImageServer() {}
 | |
|     setLanguage() {}
 | |
|     setMVTForcedTreatment() {}
 | |
|     setNoCookieMode() {}
 | |
|     setPageBrand() {}
 | |
|     setPrivateMode() {}
 | |
|     setRefinementFallback() {}
 | |
|     setRegionId() {}
 | |
|     setRegistryId() {}
 | |
|     setRegistryType() {}
 | |
|     setSessionId() {}
 | |
|     setUserId() {}
 | |
|     useDummyData() {}
 | |
|   }
 | |
| 
 | |
|   class r3_error extends r3_generic {
 | |
|     type = "ERROR";
 | |
|   }
 | |
| 
 | |
|   class r3_home extends r3_generic {
 | |
|     type = "HOME";
 | |
|   }
 | |
| 
 | |
|   class r3_item extends r3_generic {
 | |
|     type = "ITEM";
 | |
|     addAttribute() {}
 | |
|     addCategory() {}
 | |
|     addCategoryId() {}
 | |
|     setBrand() {}
 | |
|     setEndDate() {}
 | |
|     setId() {}
 | |
|     setImageId() {}
 | |
|     setLinkId() {}
 | |
|     setName() {}
 | |
|     setPrice() {}
 | |
|     setRating() {}
 | |
|     setRecommendable() {}
 | |
|     setReleaseDate() {}
 | |
|     setSalePrice() {}
 | |
|   }
 | |
| 
 | |
|   class r3_personal extends r3_generic {
 | |
|     type = "PERSONAL";
 | |
|   }
 | |
| 
 | |
|   class r3_purchased extends r3_generic {
 | |
|     type = "PURCHASED";
 | |
|     addItemId() {}
 | |
|     addItemIdCentsQuantity() {}
 | |
|     addItemIdDollarsAndCentsQuantity() {}
 | |
|     addItemIdPriceQuantity() {}
 | |
|     setOrderNumber() {}
 | |
|     setPromotionCode() {}
 | |
|     setShippingCost() {}
 | |
|     setTaxes() {}
 | |
|     setTotalPrice() {}
 | |
|   }
 | |
| 
 | |
|   class r3_search extends r3_generic {
 | |
|     type = "SEARCH";
 | |
|     addItemId() {}
 | |
|     setTerms() {}
 | |
|   }
 | |
| 
 | |
|   class r3_wishlist extends r3_generic {
 | |
|     type = "WISHLIST";
 | |
|     addItemId() {}
 | |
|   }
 | |
| 
 | |
|   const RR = {
 | |
|     add() {},
 | |
|     addItemId() {},
 | |
|     addItemIdCentsQuantity() {},
 | |
|     addItemIdDollarsAndCentsQuantity() {},
 | |
|     addItemIdPriceQuantity() {},
 | |
|     addItemIdToCart() {},
 | |
|     addObject() {},
 | |
|     addSearchTerm() {},
 | |
|     c() {},
 | |
|     charset: "UTF-8",
 | |
|     checkParamCookieValue: () => null,
 | |
|     d: document,
 | |
|     data: {
 | |
|       JSON: {
 | |
|         placements: [],
 | |
|       },
 | |
|     },
 | |
|     debugWindow() {},
 | |
|     set defaultCallback(fn) {
 | |
|       call(fn);
 | |
|     },
 | |
|     fixName: n => n,
 | |
|     genericAddItemPriceQuantity() {},
 | |
|     get() {},
 | |
|     getDomElement(a) {
 | |
|       return typeof a === "string" && a ? document.querySelector(a) : null;
 | |
|     },
 | |
|     id() {},
 | |
|     insert() {},
 | |
|     insertDynamicPlacement() {},
 | |
|     isArray: a => Array.isArray(a),
 | |
|     js() {},
 | |
|     set jsonCallback(fn) {
 | |
|       call(fn, {});
 | |
|     },
 | |
|     l: document.location.href,
 | |
|     lc() {},
 | |
|     noCookieMode: false,
 | |
|     ol() {},
 | |
|     onloadCalled: true,
 | |
|     pq() {},
 | |
|     rcsCookieDefaultDuration: 364,
 | |
|     registerPageType() {},
 | |
|     registeredPageTypes: {
 | |
|       ADDTOCART: r3_addtocart,
 | |
|       ADDTOREGISTRY: r3_addtoregistry,
 | |
|       BRAND: r3_brand,
 | |
|       CART: r3_cart,
 | |
|       CATEGORY: r3_category,
 | |
|       COMMON: r3_common,
 | |
|       ERROR: r3_error,
 | |
|       GENERIC: r3_generic,
 | |
|       HOME: r3_home,
 | |
|       ITEM: r3_item,
 | |
|       PERSONAL: r3_personal,
 | |
|       PURCHASED: r3_purchased,
 | |
|       SEARCH: r3_search,
 | |
|       WISHLIST: r3_wishlist,
 | |
|     },
 | |
|     renderDynamicPlacements() {},
 | |
|     set() {},
 | |
|     setCharset() {},
 | |
|     U: "undefined",
 | |
|     unregisterAllPageType() {},
 | |
|     unregisterPageType() {},
 | |
|   };
 | |
| 
 | |
|   Object.assign(window, {
 | |
|     r3() {},
 | |
|     r3_addtocart,
 | |
|     r3_addtoregistry,
 | |
|     r3_brand,
 | |
|     r3_cart,
 | |
|     r3_category,
 | |
|     r3_common,
 | |
|     r3_error,
 | |
|     r3_generic,
 | |
|     r3_home,
 | |
|     r3_item,
 | |
|     r3_personal,
 | |
|     r3_placement() {},
 | |
|     r3_purchased,
 | |
|     r3_search,
 | |
|     r3_wishlist,
 | |
|     RR,
 | |
|     rr_addLoadEvent() {},
 | |
|     rr_annotations_array: [undefined],
 | |
|     rr_call_after_flush() {},
 | |
|     rr_create_script() {},
 | |
|     rr_dynamic: {
 | |
|       placements: [],
 | |
|     },
 | |
|     rr_flush() {},
 | |
|     rr_flush_onload() {},
 | |
|     rr_insert_placement() {},
 | |
|     rr_onload_called: true,
 | |
|     rr_placement_place_holders: [],
 | |
|     rr_placements: [],
 | |
|     rr_recs: {
 | |
|       placements: [],
 | |
|     },
 | |
|     rr_remote_data: getRandomString(),
 | |
|     rr_v: "1.2.6.20210212",
 | |
|   });
 | |
| 
 | |
|   call(jsonCallback);
 | |
|   call(defaultCallback, {});
 | |
| }
 | 
