{"title":"Blacklight Inspection","page_title":"Welcome | TypeOfNaN","uri_ins":"http://typeofnan.dev/","uri_dest":"https://typeofnan.dev/","uri_redirects":["http://typeofnan.dev/"],"secure_connection":{},"host":"typeofnan.dev","config":{"emulateDevice":{"name":"Pixel 4a (5G)","userAgent":"Mozilla/5.0 (Linux; Android 11; Pixel 4a (5G)) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/99.0.4812.0 Mobile Safari/537.36","viewport":{"width":353,"height":745,"deviceScaleFactor":3,"isMobile":true,"hasTouch":true,"isLandscape":false}},"cleareCache":true,"captureHar":true,"captureLinks":false,"enableAdBlock":false,"saveBrowserProfile":false,"numPages":2,"defaultTimeout":35000,"defaultWaitUntil":"networkidle2","headless":true,"headers":{},"extraChromiumArgs":["--disable-features=TrackingProtection3pcd","--website-analysis-scan=484bced9-89ab-48cf-8df5-73c32f1d87a5"],"extraPuppeteerOptions":{}},"browser":{"name":"Chromium","version":"Chrome/127.0.6533.88","user_agent":"Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) HeadlessChrome/127.0.0.0 Safari/537.36","platform":{"name":"Linux","version":"4.4.302+"}},"script":{"host":"f55531b6c604","version":{"npm":"3.11.0","commit":"dev"},"node_version":"v24.20.0"},"start_time":"2026-09-12T08:34:46.008Z","end_time":"2026-09-12T08:35:07.058Z","browsing_history":["https://typeofnan.dev/","https://typeofnan.dev/how-to-preserve-query-parameters-in-react-router-links/","https://typeofnan.dev/making-every-object-property-nullable-in-typescript/"],"hosts":{"requests":{"first_party":["typeofnan.dev"],"third_party":["www.googletagmanager.com","region1.google-analytics.com","cdn.carbonads.com","srv.carbonads.net","insight.adsrvr.org","ad.doubleclick.net","sp.analytics.yahoo.com","secure.adnxs.com","segment.prod.bidr.io","cnv.event.prod.bidr.io","www.google.com","ovh.commander1.com"]}},"reports":{"behaviour_event_listeners":{"MOUSE":{"https://typeofnan.dev/app-24c052f865a64528c62d.js":["scroll"],"https://www.googletagmanager.com/gtag/js?id=G-Q3T8SBJX8E":["click"]}},"canvas_fingerprinters":{"data_url":{},"fingerprinters":[],"styles":{},"texts":{}},"canvas_font_fingerprinters":{"canvas_font":{},"text_measure":{}},"cookies":[{"name":"_ga_Q3T8SBJX8E","value":"GS2.1.s1789202102$o1$g0$t1789202102$j60$l0$h0","domain":"typeofnan.dev","path":"/","expires":"2027-10-17T08:35:02.780Z","size":59,"httpOnly":false,"secure":false,"session":false,"priority":"Medium","sameParty":false,"sourceScheme":"Secure","sourcePort":443,"type":"js","third_party":false},{"name":"_ga","value":"GA1.1.1346785775.1789202103","domain":"typeofnan.dev","path":"/","expires":"2027-10-17T08:35:02.788Z","size":30,"httpOnly":false,"secure":false,"session":false,"priority":"Medium","sameParty":false,"sourceScheme":"Secure","sourcePort":443,"type":"js","third_party":false},{"name":"tc_cj_v2","value":"~%24.%2B%27%7B4ZZZ%7C04.%20%27%27%7B~.ZZZKQRSLJLKJMJJJZZZpc_q","domain":"ovh.commander1.com","path":"/","expires":"2027-09-12T08:35:03.281Z","size":69,"httpOnly":false,"secure":true,"session":false,"sameSite":"None","priority":"Medium","sameParty":false,"sourceScheme":"Secure","sourcePort":443,"type":"unknown","third_party":true},{"name":"tc_cj_v2_cmp","value":"~%24.%2B%27%7B4y_%5Dy%21-y%21-y%60ly%7D%27%2A0~y%28%7B%29%7B%22%20~%7C%7B-%20%28%20%2F%7B%27ya%7B%28%20y%7B%7D%2C0%24y%2F-%7B%21%21%24%7D","domain":"ovh.commander1.com","path":"/","expires":"2027-09-12T08:35:03.281Z","size":149,"httpOnly":false,"secure":true,"session":false,"sameSite":"None","priority":"Medium","sameParty":false,"sourceScheme":"Secure","sourcePort":443,"type":"unknown","third_party":true},{"name":"TCID","value":"202609121035034622650010","domain":"commander1.com","path":"/","expires":"2027-09-12T08:35:03.281Z","size":28,"httpOnly":false,"secure":true,"session":false,"sameSite":"None","priority":"Medium","sameParty":false,"sourceScheme":"Secure","sourcePort":443,"type":"unknown","third_party":true}],"fb_pixel_events":[],"tiktok_pixel_events":[],"twitter_pixel_events":[],"google_analytics_events":[],"key_logging":{},"session_recorders":{},"third_party_trackers":[{"data":{"body":{},"filter":"||commander1.com^$third-party","listName":"easyprivacy.txt","query":{"chn":"display","cmp":"display_EC_fr_fr_FR_cloud_managedbaremetal_Game_acqui_traffic","crtive":"dimg_image_260x200_Game-carbon-v2-image1","cty":"FR","cty_ads":"fr","firsttime":1,"lang_ads":"fr","objv":"traffic","pcat":"managedbaremetal","rand":"$CACHEBUSTER$","site_domain":"https://www.ovhcloud.com","src":"buysellads","subtpc":"Game","tactic":"acqui","tcs":3810,"unvrse":"cloud"}},"stack":[{"fileName":"https://typeofnan.dev/making-every-object-property-nullable-in-typescript/","source":"ThirdPartyTracker RequestHandler"}],"type":"TrackingRequest","url":"https://ovh.commander1.com/v3/?firsttime=1&tcs=3810&rand=$CACHEBUSTER$&chn=display&src=buysellads&cty_ads=fr&lang_ads=fr&cty=FR&unvrse=cloud&pcat=managedbaremetal&subtpc=Game&tactic=acqui&objv=traffic&site_domain=https://www.ovhcloud.com&cmp=display_EC_fr_fr_FR_cloud_managedbaremetal_Game_acqui_traffic&crtive=dimg_image_260x200_Game-carbon-v2-image1"},{"data":{"body":{},"filter":"||commander1.com^$third-party","listName":"easyprivacy.txt","query":{"chn":"display","cmp":"display_EC_fr_fr_FR_cloud_managedbaremetal_Game_acqui_traffic","crtive":"dimg_image_260x200_Game-carbon-v2-image1","cty":"FR","cty_ads":"fr","lang_ads":"fr","objv":"traffic","pcat":"managedbaremetal","rand":"$CACHEBUSTER$","site_domain":"https://www.ovhcloud.com","src":"buysellads","subtpc":"Game","tactic":"acqui","tcs":3810,"unvrse":"cloud"}},"stack":[{"fileName":"https://typeofnan.dev/making-every-object-property-nullable-in-typescript/","source":"ThirdPartyTracker RequestHandler"}],"type":"TrackingRequest","url":"https://ovh.commander1.com/v3/?tcs=3810&rand=$CACHEBUSTER$&chn=display&src=buysellads&cty_ads=fr&lang_ads=fr&cty=FR&unvrse=cloud&pcat=managedbaremetal&subtpc=Game&tactic=acqui&objv=traffic&site_domain=https://www.ovhcloud.com&cmp=display_EC_fr_fr_FR_cloud_managedbaremetal_Game_acqui_traffic&crtive=dimg_image_260x200_Game-carbon-v2-image1"},{"data":{"body":{},"filter":"||carbonads.com^","listName":"easylist.txt","query":{"placement":"typeofnandev","serve":"CWYDVK3J"}},"stack":[{"fileName":"https://typeofnan.dev/making-every-object-property-nullable-in-typescript/","source":"ThirdPartyTracker RequestHandler"}],"type":"TrackingRequest","url":"https://cdn.carbonads.com/carbon.js?serve=CWYDVK3J&placement=typeofnandev"},{"data":{"body":{},"filter":"||google-analytics.com^$third-party","listName":"easyprivacy.txt","query":{"_ee":1,"_fv":1,"_nsi":1,"_p":1789202102712,"_s":1,"_ss":1,"are":1,"cid":1346785775.1789203,"dl":"https://typeofnan.dev/making-every-object-property-nullable-in-typescript/","dma":1,"dma_cps":"a","dt":"Making Every Object Property Nullable in Typescript | TypeOfNaN","en":"page_view","frm":0,"gcd":"13l3l3l2l1l1","gtm":"45je6992v896651426za200zd896651426","ngs":1,"npa":1,"pscdl":"","rcb":1,"sct":1,"seg":0,"sid":1789202102,"sr":"353x745","tag_exp":"115616985~115938465~115938468~118897920~118897930~120213116~120385422~120469145~120469153","tfd":939,"tid":"G-Q3T8SBJX8E","uaa":"","uab":"","uafvl":"","uam":"","uamb":0,"uap":"","uapv":"","uaw":0,"ul":"en-us","v":2}},"stack":[{"fileName":"https://typeofnan.dev/making-every-object-property-nullable-in-typescript/","source":"ThirdPartyTracker RequestHandler"}],"type":"TrackingRequest","url":"https://region1.google-analytics.com/g/collect?v=2&tid=G-Q3T8SBJX8E&gtm=45je6992v896651426za200zd896651426&_p=1789202102712&gcd=13l3l3l2l1l1&npa=1&dma_cps=a&dma=1&are=1&cid=1346785775.1789202103&frm=0&ngs=1&pscdl=&rcb=1&sr=353x745&uaa=&uab=&uafvl=&uam=&uamb=0&uap=&uapv=&uaw=0&ul=en-us&_s=1&tag_exp=115616985~115938465~115938468~118897920~118897930~120213116~120385422~120469145~120469153&sid=1789202102&sct=1&seg=0&dl=https%3A%2F%2Ftypeofnan.dev%2Fmaking-every-object-property-nullable-in-typescript%2F&dt=Making%20Every%20Object%20Property%20Nullable%20in%20Typescript%20%7C%20TypeOfNaN&en=page_view&_fv=1&_nsi=1&_ss=1&_ee=1&tfd=939"},{"data":{"body":{},"filter":"||googletagmanager.com^","listName":"easyprivacy.txt","query":{"id":"G-Q3T8SBJX8E"}},"stack":[{"fileName":"https://typeofnan.dev/making-every-object-property-nullable-in-typescript/","source":"ThirdPartyTracker RequestHandler"}],"type":"TrackingRequest","url":"https://www.googletagmanager.com/gtag/js?id=G-Q3T8SBJX8E"},{"data":{"body":{},"filter":"||bidr.io^$third-party","listName":"easyprivacy.txt","query":{"_bee_ppp":1,"account_id":79,"buzz_key":"dsp","ord":"[CACHEBUSTER]","order":"[ORDER]","tag_id":3503,"value":""}},"stack":[{"fileName":"https://typeofnan.dev/how-to-preserve-query-parameters-in-react-router-links/","source":"ThirdPartyTracker RequestHandler"}],"type":"TrackingRequest","url":"https://cnv.event.prod.bidr.io/log/cnv?tag_id=3503&buzz_key=dsp&value=&account_id=79&order=%5BORDER%5D&ord=%5BCACHEBUSTER%5D&_bee_ppp=1"},{"data":{"body":{},"filter":"||bidr.io^$third-party","listName":"easyprivacy.txt","query":{"_bee_ppp":1,"buzz_key":"dsp","segment_key":"dsp-19102"}},"stack":[{"fileName":"https://typeofnan.dev/how-to-preserve-query-parameters-in-react-router-links/","source":"ThirdPartyTracker RequestHandler"}],"type":"TrackingRequest","url":"https://segment.prod.bidr.io/associate-segment?buzz_key=dsp&segment_key=dsp-19102&_bee_ppp=1"},{"data":{"body":{},"filter":"||bidr.io^$third-party","listName":"easyprivacy.txt","query":{"account_id":79,"buzz_key":"dsp","ord":"[CACHEBUSTER]","order":"[ORDER]","tag_id":3503,"value":""}},"stack":[{"fileName":"https://typeofnan.dev/how-to-preserve-query-parameters-in-react-router-links/","source":"ThirdPartyTracker RequestHandler"}],"type":"TrackingRequest","url":"https://cnv.event.prod.bidr.io/log/cnv?tag_id=3503&buzz_key=dsp&value=&account_id=79&order=[ORDER]&ord=[CACHEBUSTER]"},{"data":{"body":{},"filter":"||bidr.io^$third-party","listName":"easyprivacy.txt","query":{"buzz_key":"dsp","segment_key":"dsp-19102"}},"stack":[{"fileName":"https://typeofnan.dev/how-to-preserve-query-parameters-in-react-router-links/","source":"ThirdPartyTracker RequestHandler"}],"type":"TrackingRequest","url":"https://segment.prod.bidr.io/associate-segment?buzz_key=dsp&segment_key=dsp-19102"},{"data":{"body":{},"filter":"||adnxs.com^","listName":"easylist.txt","query":{"id":1777282,"t":2}},"stack":[{"fileName":"https://typeofnan.dev/how-to-preserve-query-parameters-in-react-router-links/","source":"ThirdPartyTracker RequestHandler"}],"type":"TrackingRequest","url":"https://secure.adnxs.com/px?id=1777282&t=2"},{"data":{"body":{},"filter":"||adnxs.com^","listName":"easylist.txt","query":{"add":37012073,"t":2}},"stack":[{"fileName":"https://typeofnan.dev/how-to-preserve-query-parameters-in-react-router-links/","source":"ThirdPartyTracker RequestHandler"}],"type":"TrackingRequest","url":"https://secure.adnxs.com/seg?add=37012073&t=2"},{"data":{"body":{},"filter":"||analytics.yahoo.com^","listName":"easyprivacy.txt","query":{".yp":10207075,"a":10000,"ea":"fire","ec":"[EVENT_CATEGORY]","el":"[EVENT_LABEL]","gv":"[ORDER_VALUE]","he":"","hph":"","orderId":"[ORDER_ID]"}},"stack":[{"fileName":"https://typeofnan.dev/how-to-preserve-query-parameters-in-react-router-links/","source":"ThirdPartyTracker RequestHandler"}],"type":"TrackingRequest","url":"https://sp.analytics.yahoo.com/spp.pl?a=10000&.yp=10207075&he=&hph=&gv=[ORDER_VALUE]&orderId=[ORDER_ID]&ec=[EVENT_CATEGORY]&ea=fire&el=[EVENT_LABEL]"},{"data":{"body":{},"filter":".doubleclick.net/$image","listName":"easyprivacy.txt","query":{}},"stack":[{"fileName":"https://typeofnan.dev/how-to-preserve-query-parameters-in-react-router-links/","source":"ThirdPartyTracker RequestHandler"}],"type":"TrackingRequest","url":"https://ad.doubleclick.net/ddm/activity/src=15643656;type=sales;cat=408690;qty=1;cost=[Revenue];dc_lat=;dc_rdid=;tag_for_child_directed_treatment=;tfua=;npa=;gdpr=$;gdpr_consent=$;ord=[OrderID]?"},{"data":{"body":{},"filter":"||adsrvr.org^$third-party","listName":"easyprivacy.txt","query":{"adv":"t3k9qrj","ct":"0:djrfa1z","fmt":3,"orderid":"","v":""}},"stack":[{"fileName":"https://typeofnan.dev/how-to-preserve-query-parameters-in-react-router-links/","source":"ThirdPartyTracker RequestHandler"}],"type":"TrackingRequest","url":"https://insight.adsrvr.org/track/pxl/?adv=t3k9qrj&ct=0:djrfa1z&fmt=3&orderid=&v="},{"data":{"body":{},"filter":"||google-analytics.com^$third-party","listName":"easyprivacy.txt","query":{"_ee":1,"_fv":1,"_nsi":1,"_p":1789202096701,"_s":1,"_ss":1,"are":1,"cid":2117713094.1789203,"dl":"https://typeofnan.dev/how-to-preserve-query-parameters-in-react-router-links/","dma":1,"dma_cps":"a","dt":"How to preserve query parameters in React Router links | TypeOfNaN","en":"page_view","frm":0,"gcd":"13l3l3l2l1l1","gtm":"45je6992h1v896651426za200zd896651426","ngs":1,"npa":1,"pscdl":"","rcb":8,"sct":1,"seg":0,"sid":1789202097,"sr":"353x745","tag_exp":"115938465~115938468~118897920~118897930~119793974~120213116~120385423~120469145~120469153","tfd":1413,"tid":"G-Q3T8SBJX8E","uaa":"","uab":"","uafvl":"","uam":"","uamb":0,"uap":"","uapv":"","uaw":0,"ul":"en-us","v":2}},"stack":[{"fileName":"https://typeofnan.dev/how-to-preserve-query-parameters-in-react-router-links/","source":"ThirdPartyTracker RequestHandler"}],"type":"TrackingRequest","url":"https://region1.google-analytics.com/g/collect?v=2&tid=G-Q3T8SBJX8E&gtm=45je6992h1v896651426za200zd896651426&_p=1789202096701&gcd=13l3l3l2l1l1&npa=1&dma_cps=a&dma=1&are=1&cid=2117713094.1789202097&frm=0&ngs=1&pscdl=&rcb=8&sr=353x745&uaa=&uab=&uafvl=&uam=&uamb=0&uap=&uapv=&uaw=0&ul=en-us&_s=1&tag_exp=115938465~115938468~118897920~118897930~119793974~120213116~120385423~120469145~120469153&sid=1789202097&sct=1&seg=0&dl=https%3A%2F%2Ftypeofnan.dev%2Fhow-to-preserve-query-parameters-in-react-router-links%2F&dt=How%20to%20preserve%20query%20parameters%20in%20React%20Router%20links%20%7C%20TypeOfNaN&en=page_view&_fv=1&_nsi=1&_ss=1&_ee=1&tfd=1413"},{"data":{"body":{},"filter":"||carbonads.com^","listName":"easylist.txt","query":{"placement":"typeofnandev","serve":"CWYDVK3J"}},"stack":[{"fileName":"https://typeofnan.dev/how-to-preserve-query-parameters-in-react-router-links/","source":"ThirdPartyTracker RequestHandler"}],"type":"TrackingRequest","url":"https://cdn.carbonads.com/carbon.js?serve=CWYDVK3J&placement=typeofnandev"},{"data":{"body":{},"filter":"||googletagmanager.com^","listName":"easyprivacy.txt","query":{"id":"G-Q3T8SBJX8E"}},"stack":[{"fileName":"https://typeofnan.dev/how-to-preserve-query-parameters-in-react-router-links/","source":"ThirdPartyTracker RequestHandler"}],"type":"TrackingRequest","url":"https://www.googletagmanager.com/gtag/js?id=G-Q3T8SBJX8E"},{"data":{"body":{},"filter":"||google-analytics.com^$third-party","listName":"easyprivacy.txt","query":{"_ee":1,"_fv":1,"_nsi":1,"_p":1789202092421,"_s":1,"_ss":1,"are":1,"cid":1665045496.1789203,"dl":"https://typeofnan.dev/","dma":1,"dma_cps":"a","dt":"Welcome | TypeOfNaN","en":"page_view","frm":0,"gcd":"13l3l3l2l1l1","gtm":"45je69a0h2v896651426za200zd896651426","ngs":1,"npa":1,"pscdl":"","rcb":4,"sct":1,"seg":0,"sid":1789202092,"sr":"353x745","tag_exp":"115938465~115938468~118897920~118897930~120213116~120385422~120469145~120469153","tfd":1773,"tid":"G-Q3T8SBJX8E","uaa":"","uab":"","uafvl":"","uam":"","uamb":0,"uap":"","uapv":"","uaw":0,"ul":"en-us","v":2}},"stack":[{"fileName":"https://typeofnan.dev/","source":"ThirdPartyTracker RequestHandler"}],"type":"TrackingRequest","url":"https://region1.google-analytics.com/g/collect?v=2&tid=G-Q3T8SBJX8E&gtm=45je69a0h2v896651426za200zd896651426&_p=1789202092421&gcd=13l3l3l2l1l1&npa=1&dma_cps=a&dma=1&are=1&cid=1665045496.1789202093&frm=0&ngs=1&pscdl=&rcb=4&sr=353x745&uaa=&uab=&uafvl=&uam=&uamb=0&uap=&uapv=&uaw=0&ul=en-us&_s=1&tag_exp=115938465~115938468~118897920~118897930~120213116~120385422~120469145~120469153&sid=1789202092&sct=1&seg=0&dl=https%3A%2F%2Ftypeofnan.dev%2F&dt=Welcome%20%7C%20TypeOfNaN&en=page_view&_fv=1&_nsi=1&_ss=1&_ee=1&tfd=1773"},{"data":{"body":{},"filter":"||googletagmanager.com^","listName":"easyprivacy.txt","query":{"id":"G-Q3T8SBJX8E"}},"stack":[{"fileName":"https://typeofnan.dev/","source":"ThirdPartyTracker RequestHandler"}],"type":"TrackingRequest","url":"https://www.googletagmanager.com/gtag/js?id=G-Q3T8SBJX8E"}]}}