8,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,43
981357613282,43981362462946,43981362495714,43981362528482,43981369016546,43981369049314,43981374914786,43981374947554,43981374980322,43981392904418,43981695844578,43981695877346,43981695910114,43981695942882,43981986070754,43981987905762,43981987938530,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,55569933074815,55570550194559,555705
50227327,55604008976767,55638316908927,55638316941695,55638316974463,56220814999935,56220815032703,56270279606655,56270279639423,56270279672191,56314171064703,56314171097471,56398983725439,56398983758207,56398983790975,56399322251647,56565020721535,56565020754303,56565020787071],"updated_at":"2026-01-12T02:57:48Z","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-01-12T02:57:48Z","shopify_market_id":382140642,"market_locations_enabled":false};
window._RestockRocketConfig.cachedVariantPreorderLimitsMarketKey = "variant_preorder_limits_for_market_382140642";window._RestockRocketConfig.cachedVariantShippingTexts = {"variant_shipping_If the item is showing in stock, we aim to post the product within 24 hours. Please allow 5 working days to receive the item. texts":{},"updated_at":"2026-01-12T02:57:47Z","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":[55569933140351,55569712382335,55569712415103,55569712480639,55569933173119,55570017616255,55569933074815,55570017550719,55569712447871,55569933107583,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 ava
ilable for preorder","preorder_button_description_shipping_text_prefix":"Shipping: ","delivery_exact_time":null,"delivery_after_n_intervals":null,"delivery_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_backgroundPostage is free on orders over £50. Orders under £50, our postage charge is £3.99._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":{}}],"requ
ire_preorder_acknowledgement":false,"preorder_acknowledgement_text":"I acknowledge and agree to the preorder terms and conditions for this product.","preorder_min_quantity":null,"preorder_max_quantity":null,"countdown_timer_enabled":false,"countdown_timer_insert_selector":null,"countdown_timer_insert_selector_type":"afterend","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,"updated_at":"2025-08-19T10:05:43.042Z","allow_mixed_cart":true}];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":1We also have a physical store, if you are local please pop in -0000,"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":8230949650658,"title":"ProjektRide Race Lube","handle":"projektride-race-lube","description":"\u003cmeta charset=\"utf-8\"\u003e\n\u003ch1 b-i2vczgf3ij=\"\"\u003eMorgan Blue Race Oil Road - Friction Technology\u003c\/h1\u003e\n\u003chr b-i2vczgf3ij=\"\"\u003e\n\u003cp\u003e\u003cstrong\u003eDescription\u003c\/strong\u003e\u003c\/p\u003e\n\u003cp\u003eProfessional, high quality lubricant for bike application. Contains synthetic additives to obtain a reduction of friction, a smoother gear shift, w reduction of war and a longer lubrication=time. For use in all weather conditions.\u003c\/p\u003e\n\u003cp\u003e\u003cstrong\u003eApplication\u003c\/strong\u003e\u003c\
/p\u003e\n\u003cp\u003eUse Race Oil Road to lubricate the chain, gear and other moving parts. The lubricant penetrates immediately and does not flow from the chain when applied. Best used after having cleaned the chain and gears with Morgan Blue chain Cleaner. Apply 1 hour before use for best results (this gives the solvent time to vaporise). Shake well before use.\u003c\/p\u003e\n\u003cp\u003e\u003cstrong\u003eProperties and advantages\u003c\/strong\u003e\u003c\/p\u003e\n\u003cul\u003e\n\u003cli\u003eResits high pressure\u003c\/li\u003e\n\u003cli\u003eEfficient for a long period\u003c\/li\u003e\n\u003cli\u003eExtremely low friction\u003c\/li\u003e\n\u003cli\u003ePenetrates fast in the chain\u003c\/li\u003e\n\u003cli\u003eExcellent adhesion to metallic surfaces, does not drain\/drip from the chain\u003c\/li\u003e\n\u003cli\u003eResists high speed sling-off\u003c\/li\u003e\n\u003cli\u003eRepels dirt\u003c\/li\u003e\n\u003cli\u003eConsistent lubrication properties in cold and hot conditions\u003c\/li\u003e\n\u0ProjektRide Bike Shop Edinburgh03cli\u003ePrevents wear off and extends life of lubricated parts\u003c\/li\u003e\n\u003c\/ul\u003e\n\u003cspan\u003e\u003c\/span\u003e","published_at":"2023-11-25T11:38:47+00:00","created_at":"2023-11-25T11:10:40+00:00","vendor":"ProjektRide","type":"bicycle oil","tags":["Cleaners","Cleaners Degreasers and Lubrication","morganblue","PROJEKTRIDE MERCHANDISE","spo-cs-disabled","spo-default","spo-disabled","spo-notify-me-disabled"],"price":999,"price_min":999,"price_max":999,"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":44566559719650,"title":"Default Title","option1":"Default Title","option2":null,"option3":null,"sku":"","requires_shipping":true,"taxable":true,"featured_image":null,"available":true,"name":"ProjektRide Race Lube","public_title":null,"options":["Default Title"],"price":999,"weight":0,"compare_at_price":null,"inventory_management":"shopify","barcode":null,"requires_selling_plan":fal
se,"selling_plan_allocations":[]}],"images":["\/\/projektride.co.uk\/cdn\/shop\/files\/E0A13E6D-3DE2-4ADF-B67E-93B369964387.heic?v=1700912451"],"featured_image":"\/\/projektride.co.uk\/cdn\/shop\/files\/E0A13E6D-3DE2-4ADF-B67E-93B369964387.heic?v=1700912451","options":["Title"],"media":[{"alt":null,"id":32529013932258,"position":1,"preview_image":{"aspect_ratio":0.562,"height":2966,"width":1668,"src":"\/\/projektride.co.uk\/cdn\/shop\/files\/E0A13E6D-3DE2-4ADF-B67E-93B369964387.heic?v=1700912451"},"aspect_ratio":0.562,"height":2966,"media_type":"image","src":"\/\/projektride.co.uk\/cdn\/shop\/files\/E0A13E6D-3DE2-4ADF-B67E-93B369964387.heic?v=1700912451","width":1668}],"requires_selling_plan":false,"selling_plan_groups":[],"content":"\u003cmeta charset=\"utf-8\"\u003e\n\u003ch1 b-i2vczgf3ij=\"\"\u003eMorgan Blue Race Oil Road - Friction Technology\u003c\/h1\u003e\n\u003chr b-i2vczgf3ij=\"\"\u003e\n\u003cp\u003e\u003cstrong\u003eDescription\u003c\/strong\u003e\u003c\/p\u003e\n\u003cp\u003eProfessional, high qu 82 Newington Road, EH91QN, Edinburgh.ality lubricant for bike application. Contains synthetic additives to obtain a reduction of friction, a smoother gear shift, w reduction of war and a longer lubrication=time. For use in all weather conditions.\u003c\/p\u003e\n\u003cp\u003e\u003cstrong\u003eApplication\u003c\/strong\u003e\u003c\/p\u003e\n\u003cp\u003eUse Race Oil Road to lubricate the chain, gear and other moving parts. The lubricant penetrates immediately and does not flow from the chain when applied. Best used after having cleaned the chain and gears with Morgan Blue chain Cleaner. Apply 1 hour before use for best results (this gives the solvent time to vaporise). Shake well before use.\u003c\/p\u003e\n\u003cp\u003e\u003cstrong\u003eProperties and advantages\u003c\/strong\u003e\u003c\/p\u003e\n\u003cul\u003e\n\u003cli\u003eResits high pressure\u003c\/li\u003e\n\u003cli\u003eEfficient for a long period\u003c\/li\u003e\n\u003cli\u003eExtremely low friction\u003c\/li\u003e\n\u003cli\u003ePenetrates fast in the chain\u003c\/li\u003e\n\u003cli\u0
03eExcellent adhesion to metallic surfaces, does not drain\/drip from the chain\u003c\/li\u003e\n\u003cli\u003eResists high speed sling-off\u003c\/li\u003e\n\u003cli\u003eRepels dirt\u003c\/li\u003e\n\u003cli\u003eConsistent lubrication properties in cold and hot conditions\u003c\/li\u003e\n\u003cli\u003ePrevents wear off and extends life of lubricated parts\u003c\/li\u003e\n\u003c\/ul\u003e\n\u003cspan\u003e\u003c\/span\u003e"};
window._RestockRocketConfig.variantsInventoryPolicy = {44566559719650 : "deny",};
window._RestockRocketConfig.variantsInventoryQuantity = {44566559719650 : parseInt("10"),};
window._RestockRocketConfig.variantsPreorderCount = {44566559719650 : parseInt(""),};
window._RestockRocketConfig.variantsPreorderCountForMarket = {44566559719650 : null,};
window._RestockRocketConfig.variantsPreorderMaxCount = {44566559719650 : parseInt(""),};
window._RestockRocketConfig.variantsPreorderMaxCountForMarket = {44566559719650 : null,};
window._RestockRocketConfig.variants
ShippingText = {44566559719650 : "",};
window._RestockRocketConfig.variantsShippingTextForMarket = {44566559719650 : null,};
window._RestockRocketConfig.selected_variant_id = 44566559719650;
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/019bab4d-6c49-7d7e-b3eb-7d9317e290bf/restock-rocket-shopify-428/assets/restockrocket-product.js'
window._RestockRocketConfig.scriptUrlCollection = 'https://cdn.shopify.com/extensions/019bab4d-6c49-7d7e-b3eb-7d9317e290bf/restock-rocket-shopify-428/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
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 translation 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, apply
Translations 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 age = Date.now() - updatedAt.getTime();
if (age