/* 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, {}); }