bar_insert_selector":null,"preorder_progress_bar_insert_selector_type":"beforebegin","countdown_timer_insert_selector":null,"countdown_timer_insert_selector_type":"afterend","cache":true,"cached_at":"2026-01-08T16:12:13.364Z","multi_language_enabled":false,"translation_locale":"en"};window._RestockRocketConfig.cachedPreorderVariantIds = {"preorder_variant_ids":[42167799447778,43916521013474,43934694998242,43934695031010,43934695620834,43935975440610,43935975473378,43935989399778,43935989432546,43935990284514,43935994118370,43935995625698,43935995855074,43936000835810,43936003195106,43936003227874,43936008012002,43936008044770,43936022757602,43936022790370,43936022823138,43936022855906,43936056115426,43936061030626,43936064930018,43936070631650,43936078037218,43936078069986,43936088195298,43936093470946,43936101138658,43936107266274,43936124076258,43936124109026,43936124141794,43936124174562,43936129941730,43936129974498,43936130007266,43936142393570,43936142426338,43936142459106,43936152060130,43936152092898,
43936152125666,43936193118434,43936250429666,43936255803618,43936266682594,43936266715362,43936293978338,43936294011106,43936316424418,43936316457186,43936320880866,43936320913634,43936320946402,43936327041250,43936327074018,43936327106786,43936331661538,43936332349666,43936333103330,43936351224034,43936353714402,43936362889442,43936362922210,43936388153570,43936389333218,43936395526370,43936398508258,43936401522914,43936408568034,43936414400738,43936700727522,43936706101474,43936706134242,43936706167010,43936706199778,43936706232546,43936706265314,43938308587746,43938308653282,43938308718818,43938308751586,43938308784354,43938308817122,43938322612450,43938322645218,43938322677986,43981336051938,43981336084706,43981336117474,43981336150242,43981345587426,43981345620194,43981345652962,43981345685730,43981357580514,43981357613282,43981362462946,43981362495714,43981362528482,43981369016546,43981369049314,43981374914786,43981374947554,43981374980322,43981392773346,43981392838882,43981392904418,43981695844578,4398
- 1695877346,43981695910114,43981695942882,43981986070754,43981987905762,43981987938530,43981989085410,43981989118178,43981989150946,43981990887650,43981990920418,43981990953186,44052906967266,44052907327714,44052907360482,44052907393250,44052907426018,44052907458786,44052907491554,44052909097186,44052909129954,44140302827746,44140302893282,44140317016290,44155590508770,44155590541538,44155594211554,44155594244322,44155594277090,44155594309858,44155594342626,44155594375394,44155594440930,44155594473698,44155594506466,44195991847138,44195991945442,44329993437410,44329993470178,44329993502946,44329993535714,44329993568482,44957136584930,44957136781538,44957136945378,45068753961186,45068753993954,45069622640866,45069622903010,45069622968546,45069750730978,45069750763746,45353010921698,45353010954466,45353010987234,45353018261730,45353018294498,45353018327266,55569712382335,55569712447871,55569712480639,55570550194559,55570550227327,55604008976767,55638316908927,55638316941695,55638316974463,56220814999935,56220815
032703,56270279606655,56270279639423,56270279672191,56314171064703,56314171097471,56398983725439,56398983758207,56398983790975,56399322251647,56565020721535,56565020754303,56565020787071],"updated_at":"2026-02-12T23:42:02Z","market_locations_enabled":false,"market_id":382140642,"preorder_location_filter_enabled":false,"preorder_location_filter_ids":[],"collection_id":null};window._RestockRocketConfig.cachedInStockVariantIds = { in_stock_variant_ids: [] };window._RestockRocketConfig.cachedOutOfStockVariantIds = { out_of_stock_variant_ids: [] };window._RestockRocketConfig.cachedVariantPreorderLimits = {"variant_preorder_limits":{},"updated_at":"2026-02-12T23:20:01Z","shopify_market_id":382140642,"market_locations_enabled":false};
window._RestockRocketConfig.cachedVariantPreorderLimitsMarketKey = "variant_preorder_limits_for_market_382140642";window._RestockRocketConfig.cachedVariantShippingTexts = {"variant_shipping_texts":{},"updated_at":"2026-02-12T23:20:01Z","shopify_market_id":382140642,"market_locations_enabled":false};
window._RestockRocketConfig.cachedVariantShippingTextsMarketKey = "variant_shipping_texts_for_market_382140642";window._RestockRocketConfig.sellingPlans = [{"shopify_selling_plan_group_id":98590196095,"shopify_selling_plan_id":713071886719,"enabled":true,"variant_ids":[55569712382335,55569712415103,55569712480639,55570017616255,55570017550719,55569712447871,55570017583487],"product_variants_source":"custom","name":"Preorder","preorder_button_text":"Preorder","preorder_button_description":"Note: This is a preorder. Items will ship based on the estimated delivery date.","preorder_button_description_background_color":"#ebebeb","preorder_button_description_text_color":"#000000","preorder_button_description_border_radius":10,"preorder_button_description_show_quantity_limit":false,"preorder_button_description_quantity_limit_suffix":" units available for preorder","preorder_button_description_shipping_text_prefix":"Shipping: ","delivery_exact_time":null,"delivery_after_n_intervals":null,"delivComplete Brakes
ery_at":"2025-07-26T09:20:18.169Z","delivery_type":"asap","quantity_limit_text":"{{ quantity }} units available for preorder","preorder_button_description_show_shipping":true,"preorder_button_description_icons_enabled":true,"preorder_shipping_text":"Shipping: {{ date }}","shipping_applies_to_all_products":true,"shipping_text":"Estimated to ship within 2 months","payment_type":"full","billing_checkout_charge_type":"percentage","billing_checkout_charge_amount":null,"billing_checkout_charge_percentage":"100.0","pricing_type":"no_discount","pricing_amount":null,"pricing_percentage":null,"discount_text":"Save {{ discount }}","billing_title":"Full payment","billing_description":null,"enable_billing_widget":false,"inventory_provider":"stoq","preorder_badge_enabled":false,"preorder_badge_text":"Preorder","preorder_badge_text_color":"#FFFFFF","preorder_badge_background_color":"#000000","preorder_discounted_price_enabled":null,"payment_line_item_property_enabled":false,"shipping_line_item_property_enabled":true,"custom<_line_item_property_text":null,"preorder_button_text_color":"#ffffff","preorder_button_background_color":"#565557","preorder_button_colors_enabled":true,"markets_enabled":false,"market_id":13779632354,"shopify_market_ids":[],"use_shopify_selling_plan":true,"use_simplified_shipping_text":false,"translations":{},"payment_options":[{"billing_type":"no_remaining_balance","billing_checkout_charge_type":"percentage","billing_checkout_charge_amount":null,"billing_checkout_charge_percentage":"100.0","billing_at":"2025-07-26T09:20:38.472Z","billing_after_n_intervals":7,"billing_after_interval_type":"day","pricing_type":"no_discount","pricing_amount":null,"pricing_percentage":null,"billing_title":"Full payment","billing_description":null,"discount_text":"Save {{ discount }}","shopify_selling_plan_id":713071886719,"is_default":true,"type":"full","translations":{}}],"require_preorder_acknowledgement":false,"preorder_acknowledgement_text":"I acknowledge and agree to the preorder terms and conditions for this product.","di
img src="//projektride.co.uk/cdn/shop/files/Screenshot_2024-10-01_at_16.22.50_2048x2048.png?v=1727796235" alt="-Brother Cycles Mr Wooden Frameset" class="mfp-zoom-in-cur" id="34747575533794">
sable_button_until_acknowledged":false,"preorder_min_quantity":null,"preorder_max_quantity":null,"countdown_timer_enabled":false,"countdown_timer_style":"text","countdown_timer_text_color":"#000000","countdown_timer_background_color":"#f5f5f5","countdown_timer_border_radius":8,"countdown_timer_format":"DHMS","countdown_timer_use_schedule_dates":true,"countdown_timer_custom_start_date":null,"countdown_timer_custom_end_date":null,"countdown_timer_starts_text":null,"countdown_timer_ends_text":null,"schedule_offer":false,"schedule_start_date":null,"schedule_end_date":null,"updated_at":"2025-08-19T10:05:43.042Z","allow_mixed_cart":true,"mixed_cart_error_message":"Preorders must be purchased separately from regular items. Please complete your current order first, or clear your cart to continue.","b2b_enabled":true,"preorder_progress_bar_enabled":false,"preorder_progress_bar_text":"{{ sold }} of {{ total }} claimed","preorder_progress_bar_fill_color":"#000000","preorder_progress_bar_background_color":"#e5e5e5","preo
- rder_progress_bar_text_color":"#FFFFFF","preorder_progress_bar_border_radius":4,"preorder_progress_bar_show_percentage":false}];window._RestockRocketConfig.integrations = [{"id":"15c94526-b6b8-4de1-9bc1-23b1ca52ddb0","shop_id":38436,"enabled":true,"page_types":["product","collection","index","search","page","cart","list-collections","article","blog"],"configuration":{"toastDuration":10000,"toastPosition":"bottom-right","enableXHRHijack":true,"enableFetchHijack":true,"quantityLimitDisabled":false},"type":"hijack","css_config":null,"js_config":null,"created_at":"2025-07-26T09:16:04.076Z","updated_at":"2025-07-26T09:16:04.076Z"}];window._RestockRocketConfig.obfuscateInventoryQuantity = false;window._RestockRocketConfig.product = {"id":15165733405055,"title":"Hire Genesis Equilibrium Road Bike","handle":"hire-genesis-equilibrium-road-bike","description":"\u003cdiv id=\"shopify-section-template--16824364499170__main\" class=\"shopify-section shopify-section--product\"\u003e\n\u003csection id=\"ProductTemplate--tem
plate--16824364499170__main\" class=\"product-single\" data-section-type=\"product-template\" data-section-id=\"template--16824364499170__main\"\u003e\n\u003cdiv class=\"wrapper\"\u003e\n\u003cdiv class=\"pr-product-details\"\u003e\n\u003cdiv class=\"product__description rte\"\u003e\n\u003cp data-start=\"121\" data-end=\"385\"\u003e\u003cstrong data-start=\"121\" data-end=\"383\"\u003ePlease get in touch if the option you require is out of stock for the time period you require. We try and keep more stock for walk-ins so we can add more stock to the website for booking if necessary. \u003c\/strong\u003e\u003c\/p\u003e\n\u003ch2\u003eIdeal for anyone looking for a drop handlebar road bike.\u003c\/h2\u003e\n\u003cp\u003e\u003cbr\u003eSizes available - Extra Small, Small, Medium, Large\u003c\/p\u003e\n\u003ch3\u003e\n\u003cbr\u003eSizing guide\u003c\/h3\u003e\n\u003cp\u003eExtra Small -\u003c\/p\u003e\n\u003cmeta charset=\"utf-8\"\u003e\n\u003cp\u003e\u003cspan class=\"text-xs\"\u003e156cm - \u003c\/span\u003e\u003cspan class=\"text-xs\"\u003e164cm\u003c\/span\u003e\u003c\/p\u003e\n\u003cp\u003eSmall - 164cm - 172cm\u003c\/p\u003e\n\u003cp\u003eMedium - 172cm - 180cm\u003c\/p\u003e\n\u003cp\u003eLarge - 178cm - 186cm\u003c\/p\u003e\n\u003c\/div\u003e\n\u003c\/div\u003e\n\u003c\/div\u003e\n\u003c\/section\u003e\n\u003c\/div\u003e","published_at":"2025-06-27T16:32:17+01:00","created_at":"2025-06-27T16:32:16+01:00","vendor":"ProjektRide","type":"Bike Hire","tags":["izyrent"],"price":4200,"price_min":4200,"price_max":4200,"available":true,"price_varies":false,"compare_at_price":null,"compare_at_price_min":0,"compare_at_price_max":0,"compare_at_price_varies":false,"variants":[{"id":55638316908927,"title":"Small","option1":"Small","option2":null,"option3":null,"sku":"","requires_shipping":false,"taxable":true,"featured_image":null,"available":true,"name":"Hire Genesis Equilibrium Road Bike - Small","public_title":"Small","options":["Small"],"price":4200,"weight":0,"compare_at_price":null,"inventory_management":null,"barBrake Rotors
code":"","requires_selling_plan":false,"selling_plan_allocations":[]},{"id":55638316941695,"title":"Medium","option1":"Medium","option2":null,"option3":null,"sku":"","requires_shipping":false,"taxable":true,"featured_image":null,"available":true,"name":"Hire Genesis Equilibrium Road Bike - Medium","public_title":"Medium","options":["Medium"],"price":4200,"weight":0,"compare_at_price":null,"inventory_management":null,"barcode":"","requires_selling_plan":false,"selling_plan_allocations":[]},{"id":55638316974463,"title":"Large","option1":"Large","option2":null,"option3":null,"sku":"","requires_shipping":false,"taxable":true,"featured_image":null,"available":true,"name":"Hire Genesis Equilibrium Road Bike - Large","public_title":"Large","options":["Large"],"price":4200,"weight":0,"compare_at_price":null,"inventory_management":null,"barcode":"","requires_selling_plan":false,"selling_plan_allocations":[]}],"images":["\/\/projektride.co.uk\/cdn\/shop\/files\/GenesisBroadway.jpg?v=1751044451","\/\/projektride.co.uk\/cdn\/shop\/files\/45E99FC4-ECE3-4237-87F0-1EE99EB7BDD8.jpg?v=1751044467","\/\/projektride.co.uk\/cdn\/shop\/files\/D30D8504-7AAB-466A-B6F4-EC5D4FF8CAF5.jpg?v=1751044467","\/\/projektride.co.uk\/cdn\/shop\/files\/0E13DF6E-7EC2-43F9-B14B-93E9AED6906A.jpg?v=1751044466","\/\/projektride.co.uk\/cdn\/shop\/files\/B623462E-8973-4A15-AF89-D92ABB8E6777.jpg?v=1751044466"],"featured_image":"\/\/projektride.co.uk\/cdn\/shop\/files\/GenesisBroadway.jpg?v=1751044451","options":["size"],"media":[{"alt":null,"id":66612102955391,"position":1,"preview_image":{"aspect_ratio":1.505,"height":2284,"width":3438,"src":"\/\/projektride.co.uk\/cdn\/shop\/files\/GenesisBroadway.jpg?v=1751044451"},"aspect_ratio":1.505,"height":2284,"media_type":"image","src":"\/\/projektride.co.uk\/cdn\/shop\/files\/GenesisBroadway.jpg?v=1751044451","width":3438},{"alt":null,"id":66612105183615,"position":2,"preview_image":{"aspect_ratio":1.505,"height":3264,"width":4912,"src":"\/\/projektride.co.uk\/cdn\/shop\/files\/45E99FC4-ECE3-4237-87F0-1EE99EB7BDD
8.jpg?v=1751044467"},"aspect_ratio":1.505,"height":3264,"media_type":"image","src":"\/\/projektride.co.uk\/cdn\/shop\/files\/45E99FC4-ECE3-4237-87F0-1EE99EB7BDD8.jpg?v=1751044467","width":4912},{"alt":null,"id":66612105216383,"position":3,"preview_image":{"aspect_ratio":1.505,"height":3264,"width":4912,"src":"\/\/projektride.co.uk\/cdn\/shop\/files\/D30D8504-7AAB-466A-B6F4-EC5D4FF8CAF5.jpg?v=1751044467"},"aspect_ratio":1.505,"height":3264,"media_type":"image","src":"\/\/projektride.co.uk\/cdn\/shop\/files\/D30D8504-7AAB-466A-B6F4-EC5D4FF8CAF5.jpg?v=1751044467","width":4912},{"alt":null,"id":66612105249151,"position":4,"preview_image":{"aspect_ratio":1.505,"height":3264,"width":4912,"src":"\/\/projektride.co.uk\/cdn\/shop\/files\/0E13DF6E-7EC2-43F9-B14B-93E9AED6906A.jpg?v=1751044466"},"aspect_ratio":1.505,"height":3264,"media_type":"image","src":"\/\/projektride.co.uk\/cdn\/shop\/files\/0E13DF6E-7EC2-43F9-B14B-93E9AED6906A.jpg?v=1751044466","width":4912},{"alt":null,"id":66612105281919,"position":5,"preview_im
- age":{"aspect_ratio":1.505,"height":3264,"width":4912,"src":"\/\/projektride.co.uk\/cdn\/shop\/files\/B623462E-8973-4A15-AF89-D92ABB8E6777.jpg?v=1751044466"},"aspect_ratio":1.505,"height":3264,"media_type":"image","src":"\/\/projektride.co.uk\/cdn\/shop\/files\/B623462E-8973-4A15-AF89-D92ABB8E6777.jpg?v=1751044466","width":4912}],"requires_selling_plan":false,"selling_plan_groups":[],"content":"\u003cdiv id=\"shopify-section-template--16824364499170__main\" class=\"shopify-section shopify-section--product\"\u003e\n\u003csection id=\"ProductTemplate--template--16824364499170__main\" class=\"product-single\" data-section-type=\"product-template\" data-section-id=\"template--16824364499170__main\"\u003e\n\u003cdiv class=\"wrapper\"\u003e\n\u003cdiv class=\"pr-product-details\"\u003e\n\u003cdiv class=\"product__description rte\"\u003e\n\u003cp data-start=\"121\" data-end=\"385\"\u003e\u003cstrong data-start=\"121\" data-end=\"383\"\u003ePlease get in touch if the option you require is out of stock for the time pe
riod you require. We try and keep more stock for walk-ins so we can add more stock to the website for booking if necessary. \u003c\/strong\u003e\u003c\/p\u003e\n\u003ch2\u003eIdeal for anyone looking for a drop handlebar road bike.\u003c\/h2\u003e\n\u003cp\u003e\u003cbr\u003eSizes available - Extra Small, Small, Medium, Large\u003c\/p\u003e\n\u003ch3\u003e\n\u003cbr\u003eSizing guide\u003c\/h3\u003e\n\u003cp\u003eExtra Small -\u003c\/p\u003e\n\u003cmeta charset=\"utf-8\"\u003e\n\u003cp\u003e\u003cspan class=\"text-xs\"\u003e156cm - \u003c\/span\u003e\u003cspan class=\"text-xs\"\u003e164cm\u003c\/span\u003e\u003c\/p\u003e\n\u003cp\u003eSmall - 164cm - 172cm\u003c\/p\u003e\n\u003cp\u003eMedium - 172cm - 180cm\u003c\/p\u003e\n\u003cp\u003eLarge - 178cm - 186cm\u003c\/p\u003e\n\u003c\/div\u003e\n\u003c\/div\u003e\n\u003c\/div\u003e\n\u003c\/section\u003e\n\u003c\/div\u003e"};
window._RestockRocketConfig.variantsInventoryPolicy = {55638316908927 : "continue",55638316941695 : "continue",55638316974463 : "continue",};
window._RestockRocketConfig.variantsInventoryQuantity = {55638316908927 : parseInt("-2"),55638316941695 : parseInt("-3"),55638316974463 : parseInt("-3"),};
window._RestockRocketConfig.variantsPreorderCount = {55638316908927 : parseInt(""),55638316941695 : parseInt(""),55638316974463 : parseInt(""),};
window._RestockRocketConfig.variantsPreorderCountForMarket = {55638316908927 : null,55638316941695 : null,55638316974463 : null,};
window._RestockRocketConfig.variantsPreorderMaxCount = {55638316908927 : parseInt(""),55638316941695 : parseInt(""),55638316974463 : parseInt(""),};
window._RestockRocketConfig.variantsPreorderMaxCountForMarket = {55638316908927 : null,55638316941695 : null,55638316974463 : null,};
window._RestockRocketConfig.variantsShippingText = {55638316908927 : "",55638316941695 : "",55638316974463 : "",};
window._RestockRocketConfig.variantsShippingTextForMarket = {55638316908927 : null,55638316941695 : null,55638316974463 : null,};
window._RestockRocketBrake Pads
Config.selected_variant_id = 55638316908927;
window._RestockRocketConfig.selected_variant_available = window._RestockRocketConfig.product.variants.find(function(variant) { return variant.id == window._RestockRocketConfig.selected_variant_id }).available;window._RestockRocketConfig.scriptUrlProduct = 'https://cdn.shopify.com/extensions/019c4de0-280f-760f-b566-2e2f8e837eb8/restock-rocket-shopify-454/assets/restockrocket-product.js'
window._RestockRocketConfig.scriptUrlCollection = 'https://cdn.shopify.com/extensions/019c4de0-280f-760f-b566-2e2f8e837eb8/restock-rocket-shopify-454/assets/restockrocket-collection.js'
window._RestockRocketConfig.scriptHost = window._RestockRocketConfig.scriptUrlProduct.substring(0, window._RestockRocketConfig.scriptUrlProduct.lastIndexOf('/') + 1)
window._RestockRocketConfig.host = 'https://app.restockrocket.io'
const SETTINGS_CACHE_DURATION = 15 * 60 * 1000; // 15 minutes in milliseconds
const LIQUID_CACHE_MAX_AGE = 2 * 60 * 60; // 2 hours in seconds
// Calculate< Liquid cache freshness once at initialization
const liquidRenderedAt = window._RestockRocketConfig.liquidRenderedAt;
// Validate timestamp and calculate cache age
if (!liquidRenderedAt || typeof liquidRenderedAt !== 'number' || isNaN(liquidRenderedAt)) {
console.debug('STOQ - Invalid or missing liquidRenderedAt timestamp, assuming fresh');
window._RestockRocketConfig.isLiquidCacheFresh = true;
} else {
const now = Math.floor(Date.now() / 1000); // Current time in seconds
const liquidCacheAge = now - liquidRenderedAt; // Age in seconds
// Handle client clock ahead of server
if (liquidCacheAge
img src="//projektride.co.uk/cdn/shop/files/Screenshot_2024-10-01_at_16.23.29_2048x2048.png?v=1727796235" alt="-Brother Cycles Mr Wooden Frameset" class="mfp-zoom-in-cur" id="34747575632098">
<
- 0) {
console.debug(`STOQ - Client clock appears ahead of server by ${Math.abs(Math.round(liquidCacheAge / 60))} minutes, assuming cache fresh`);
window._RestockRocketConfig.isLiquidCacheFresh = true;
} else if (liquidCacheAge
<= LIQUID_CACHE_MAX_AGE) {
console.debug(`STOQ - Liquid cache is fresh (${Math.round(liquidCacheAge / 60)} minutes old)`);
window._RestockRocketConfig.isLiquidCacheFresh = true;
} else {
console.debug(`STOQ - Liquid cache is stale (${Math.round(liquidCacheAge / 60)} minutes old, max ${Math.round(LIQUID_CACHE_MAX_AGE / 60)} minutes)`);
window._RestockRocketConfig.isLiquidCacheFresh = false;
}
}
function checkSettingsExpiry(settings) {
try {
if (!settings || !settings.updated_at) {
console.debug('STOQ - Invalid settings data structure');
return null;
}
if (!settings.cache) {
console.debug('STOQ - settings caching disabled');
return null;
}
// Check if translations are enabled but missing from cache
// This handles the backfill period where DB has translations but metafield doesn't
if (settings.multi_language_enabled) {
if (!settings.translations) {
// Translations enabled but no Brake Sparestranslation data in metafield
// Metafield hasn't been backfilled yet - force refresh
console.debug('STOQ - multi-language enabled but no translation data in cache, fetching fresh');
return null;
}
// Translations object exists in metafield - cache is valid
// If current locale isn't translated, applyTranslations will gracefully use default locale from base fields
if (window._RestockRocketConfig.normalizedLocale &&
!Object.prototype.hasOwnProperty.call(settings.translations, window._RestockRocketConfig.normalizedLocale)) {
console.debug('STOQ - locale not explicitly translated, will use default language from cache');
}
// Don't return null - continue using cache even for untranslated locales
}
const updatedAt = new Date(settings.updated_at);
if (isNaN(updatedAt.getTime())) {
console.debug('STOQ - Invalid updated_at date format in settings');
return null;
}
const
<
ing cache');
return null;
}
return settings;
} catch (error) {
console.debug('STOQ - Error checking settings cache:', error);
return null;
}
}
function createRestockRocketContainer() {
const restockRocketContainer = document.createElement('div');
restockRocketContainer.id = 'restock-rocket';
document.body.appendChild(restockRocketContainer);
}
function createRestockRocketScript(scriptUrl) {
const restockRocketScriptElement = document.createElement('script');
restockRocketScriptElement.setAttribute('defer', 'defer');
restockRocketScriptElement.src = scriptUrl;
document.body.appendChild(restockRocketScriptElement);
}
createRestockRocketContainer()
console.debug('STOQ - extension activated')
function applyTranslations(settings) {
try {
// Skip translation logic entirely if multi-language is not enabled
if (!settings || !settings.multi_language_enabled) {
return settings;
}
if (!settings.