import json,sys,platform import subprocess,json code=r""" const inputs=['https://example.test/shop?item=7&utm_source=mail&lang=ko','https://example.test/search?q=paper&page=2&utm_campaign=autumn','https://example.test/api?tag=a&tag=b&signature=TEST_SIGNATURE','https://example.test/?q=a+b&utm_source=x']; const names=new Set(['utm_source','utm_medium','utm_campaign']); console.log(JSON.stringify(inputs.map(input=>{const u=new URL(input);if(u.searchParams.has('signature'))return{input,output:input,status:'hold-signed-url'};for(const key of [...u.searchParams.keys()])if(names.has(key))u.searchParams.delete(key);return{input,output:u.href,status:'rule-applied'};}))); """ rows=json.loads(subprocess.check_output(['node','-e',code],text=True)) result={'removable':['utm_source','utm_medium','utm_campaign'],'rows':rows,'canonicalSelectionBySearchEngineTested':False} assert rows[0]['output']=='https://example.test/shop?item=7&lang=ko' assert rows[1]['output']=='https://example.test/search?q=paper&page=2' assert rows[2]['status']=='hold-signed-url' result['nodeRuntime']=subprocess.check_output(['node','--version'],text=True).strip() from datetime import datetime as _runtime_datetime, timezone as _runtime_timezone result.update({'fixtureCreatedOn':'2026-10-15','executedAt':_runtime_datetime.now(_runtime_timezone.utc).isoformat(),'runtime':platform.python_version(),'synthetic':True}) print(json.dumps(result,ensure_ascii=False,indent=2))