{"_id":"@bernierllc/validators-tracking-params","_rev":"7-d0578fd97768585dcbd3c17a0a24e3cb","name":"@bernierllc/validators-tracking-params","dist-tags":{"latest":"1.6.0"},"versions":{"1.0.3":{"name":"@bernierllc/validators-tracking-params","version":"1.0.3","keywords":["validation","validators","tracking","utm","privacy","pii","compliance","gdpr","ccpa","content","url"],"author":{"name":"Bernier LLC"},"license":"UNLICENSED","_id":"@bernierllc/validators-tracking-params@1.0.3","maintainers":[{"name":"alikhan410","email":"mczeyo@gmail.com"},{"name":"mkbernier","email":"mkbernier@gmail.com"}],"homepage":"https://github.com/bernierllc/tools#readme","bugs":{"url":"https://github.com/bernierllc/tools/issues"},"dist":{"shasum":"c5140445d41e5abb6a472518bcf538b30ea1de96","tarball":"https://registry.npmjs.org/@bernierllc/validators-tracking-params/-/validators-tracking-params-1.0.3.tgz","fileCount":11,"integrity":"sha512-/UGha/z4b8JlVkl4m2OFCwPgIvBu4/d6bJdO7p9yJ9KQhkBTbMM0n+Y9LKObNU/C+rFVQ1+/yRZSCmxXjiY+Tw==","signatures":[{"sig":"MEYCIQDgqPOTgFr55qSyxgzos4R59EGgsyfQ6JJ0tlTp+ZCzFgIhAICa9hMM9TTtjWc3lg9HgoitJdXGyUtBn3GsNgQ5Un50","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":34665},"main":"dist/index.js","types":"dist/index.d.ts","gitHead":"c5ae13f5ff57b9795ce9a1e574455bf202c93763","scripts":{"dev":"tsc --watch","lint":"eslint src --ext .ts","test":"jest","build":"tsc","clean":"rm -rf dist","lint:fix":"eslint src --ext .ts --fix","test:run":"jest","test:coverage":"jest --coverage"},"_npmUser":{"name":"mkbernier","email":"mkbernier@gmail.com"},"repository":{"url":"git+https://github.com/bernierllc/tools.git","type":"git","directory":"packages/validators/validators-tracking-params"},"_npmVersion":"11.4.2","description":"Tracking parameter validation - UTM/PII leakage policy enforcement","directories":{},"_nodeVersion":"24.4.1","dependencies":{"@bernierllc/validators-core":"^0.1.1"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"jest":"^29.5.0","eslint":"^8.37.0","ts-jest":"^29.0.5","typescript":"^5.0.0","@types/jest":"^29.5.0","@types/node":"^18.15.0","@typescript-eslint/parser":"^5.57.0","@typescript-eslint/eslint-plugin":"^5.57.0"},"peerDependencies":{},"_npmOperationalInternal":{"tmp":"tmp/validators-tracking-params_1.0.3_1760211127089_0.4749808801585764","host":"s3://npm-registry-packages-npm-production"}},"1.2.0":{"name":"@bernierllc/validators-tracking-params","version":"1.2.0","keywords":["validation","validators","tracking","utm","privacy","pii","compliance","gdpr","ccpa","content","url"],"author":{"name":"Bernier LLC"},"license":"UNLICENSED","_id":"@bernierllc/validators-tracking-params@1.2.0","maintainers":[{"name":"alikhan410","email":"mczeyo@gmail.com"},{"name":"mkbernier","email":"mkbernier@gmail.com"}],"homepage":"https://github.com/bernierllc/tools#readme","bugs":{"url":"https://github.com/bernierllc/tools/issues"},"dist":{"shasum":"b7a173d9624ae7023d26dd5ea4da0ea60bc03227","tarball":"https://registry.npmjs.org/@bernierllc/validators-tracking-params/-/validators-tracking-params-1.2.0.tgz","fileCount":11,"integrity":"sha512-4FpRh5ORRr5yH29y1PtaVNKayBFooc76n0owopEDXtih5CoOxpuhlSolUp6nvII1sKTsujG4oOshjbSNUITXDg==","signatures":[{"sig":"MEYCIQCP0KOwQuRzPvUdQjmX960Q0cQh8ZaBz1ES6DDkYdnwGwIhAPxSVsl5sYAkeqJq60GI/fJpdUMet7REmMBxFi13YKn/","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":34742},"main":"dist/index.js","types":"dist/index.d.ts","gitHead":"af7e74b3715d56d3a193e1bb6743b337c2b0df6d","scripts":{"dev":"tsc --watch","lint":"eslint src --ext .ts","test":"jest","build":"tsc","clean":"rm -rf dist","lint:fix":"eslint src --ext .ts --fix","test:run":"jest","test:coverage":"jest --coverage"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:88a8f77d-7b01-4a30-b90d-551dd6493300"}},"repository":{"url":"git+https://github.com/bernierllc/tools.git","type":"git","directory":"packages/validators/validators-tracking-params"},"_npmVersion":"lerna/9.0.3/node@v20.19.6+x64 (linux)","description":"Tracking parameter validation - UTM/PII leakage policy enforcement","directories":{},"_nodeVersion":"20.19.6","dependencies":{"@bernierllc/validators-core":"0.1.2"},"publishConfig":{"access":"public","registry":"https://registry.npmjs.org/"},"_hasShrinkwrap":false,"devDependencies":{"jest":"^29.5.0","eslint":"^8.37.0","ts-jest":"^29.0.5","typescript":"^5.0.0","@types/jest":"^29.5.0","@types/node":"^18.15.0","@typescript-eslint/parser":"^5.57.0","@typescript-eslint/eslint-plugin":"^5.57.0"},"_npmOperationalInternal":{"tmp":"tmp/validators-tracking-params_1.2.0_1767642377052_0.9606647393832262","host":"s3://npm-registry-packages-npm-production"}},"1.2.1":{"name":"@bernierllc/validators-tracking-params","version":"1.2.1","keywords":["validation","validators","tracking","utm","privacy","pii","compliance","gdpr","ccpa","content","url"],"author":{"name":"Bernier LLC"},"license":"UNLICENSED","_id":"@bernierllc/validators-tracking-params@1.2.1","maintainers":[{"name":"alikhan410","email":"mczeyo@gmail.com"},{"name":"mkbernier","email":"mkbernier@gmail.com"}],"homepage":"https://github.com/bernierllc/tools#readme","bugs":{"url":"https://github.com/bernierllc/tools/issues"},"dist":{"shasum":"477c5af55e52bba33f7986536af75f3b52f680aa","tarball":"https://registry.npmjs.org/@bernierllc/validators-tracking-params/-/validators-tracking-params-1.2.1.tgz","fileCount":11,"integrity":"sha512-qGjCWpGYPAidu+bsCsLJ/1xlUvB4wJ9hPP715D3ZLTSFGgF/InNF9+LTrblKbHUfyQpbf+YnZnCG8c9Lm7J+4Q==","signatures":[{"sig":"MEYCIQDTSbSEgLWaLtsRuiTWjVRuNb+VzrgCV9QFIhcEPC9tYgIhAKp3MTHzP/pfFNkEtdh33WYOOM1ItWs+/i6/3S87ecoP","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":34684},"main":"dist/index.js","_from":"file:bernierllc-validators-tracking-params-1.2.1.tgz","types":"dist/index.d.ts","scripts":{"dev":"tsc --watch","lint":"eslint src --ext .ts","test":"jest","build":"tsc","clean":"rm -rf dist","lint:fix":"eslint src --ext .ts --fix","test:run":"jest","test:coverage":"jest --coverage"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:88a8f77d-7b01-4a30-b90d-551dd6493300"}},"_resolved":"/tmp/be41f3b7cff26c6b04b12f5c409e2be8/bernierllc-validators-tracking-params-1.2.1.tgz","_integrity":"sha512-qGjCWpGYPAidu+bsCsLJ/1xlUvB4wJ9hPP715D3ZLTSFGgF/InNF9+LTrblKbHUfyQpbf+YnZnCG8c9Lm7J+4Q==","repository":{"url":"git+https://github.com/bernierllc/tools.git","type":"git","directory":"packages/validators/validators-tracking-params"},"_npmVersion":"11.11.0","description":"Tracking parameter validation - UTM/PII leakage policy enforcement","directories":{},"_nodeVersion":"20.20.0","dependencies":{"@bernierllc/validators-core":"0.1.3"},"publishConfig":{"access":"public","registry":"https://registry.npmjs.org/"},"_hasShrinkwrap":false,"devDependencies":{"jest":"^29.5.0","eslint":"^8.37.0","ts-jest":"^29.0.5","typescript":"^5.0.0","@types/jest":"^29.5.0","@types/node":"^18.15.0","@typescript-eslint/parser":"^5.57.0","@typescript-eslint/eslint-plugin":"^5.57.0"},"_npmOperationalInternal":{"tmp":"tmp/validators-tracking-params_1.2.1_1773078340492_0.05211263091459806","host":"s3://npm-registry-packages-npm-production"}},"1.2.2":{"name":"@bernierllc/validators-tracking-params","version":"1.2.2","keywords":["validation","validators","tracking","utm","privacy","pii","compliance","gdpr","ccpa","content","url"],"author":{"name":"Bernier LLC"},"license":"UNLICENSED","_id":"@bernierllc/validators-tracking-params@1.2.2","maintainers":[{"name":"alikhan410","email":"mczeyo@gmail.com"},{"name":"mkbernier","email":"mkbernier@gmail.com"}],"homepage":"https://github.com/bernierllc/tools#readme","bugs":{"url":"https://github.com/bernierllc/tools/issues"},"dist":{"shasum":"d27b969f700b9b7272c312cec254dae2a084e155","tarball":"https://registry.npmjs.org/@bernierllc/validators-tracking-params/-/validators-tracking-params-1.2.2.tgz","fileCount":11,"integrity":"sha512-RMqVk0Tz91kVRYEHsFEc6/bMdOzcEvcclQyD/thvmz2qcGfu14Irvo37aPVvDTokqoWaR+pSd5C2jm6oSQSDCQ==","signatures":[{"sig":"MEUCIB5T975FIuJAppbd1NLVX8C+BhYcoNmiBRbTRNmSPSvUAiEAw3VUvCal6/uShRPgRVmA+kcXhZ2AVMq/2rGB4x88QyA=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":34684},"main":"dist/index.js","_from":"file:bernierllc-validators-tracking-params-1.2.2.tgz","types":"dist/index.d.ts","scripts":{"dev":"tsc --watch","lint":"eslint src --ext .ts","test":"jest","build":"tsc","clean":"rm -rf dist","lint:fix":"eslint src --ext .ts --fix","test:run":"jest","test:coverage":"jest --coverage"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:88a8f77d-7b01-4a30-b90d-551dd6493300"}},"_resolved":"/home/runner/work/tools/tools/packages/validators/validators-tracking-params/bernierllc-validators-tracking-params-1.2.2.tgz","_integrity":"sha512-RMqVk0Tz91kVRYEHsFEc6/bMdOzcEvcclQyD/thvmz2qcGfu14Irvo37aPVvDTokqoWaR+pSd5C2jm6oSQSDCQ==","repository":{"url":"git+https://github.com/bernierllc/tools.git","type":"git","directory":"packages/validators/validators-tracking-params"},"_npmVersion":"11.11.0","description":"Tracking parameter validation - UTM/PII leakage policy enforcement","directories":{},"_nodeVersion":"20.20.0","dependencies":{"@bernierllc/validators-core":"0.1.4"},"publishConfig":{"access":"public","registry":"https://registry.npmjs.org/"},"_hasShrinkwrap":false,"devDependencies":{"jest":"^29.5.0","eslint":"^8.37.0","ts-jest":"^29.0.5","typescript":"^5.0.0","@types/jest":"^29.5.0","@types/node":"^18.15.0","@typescript-eslint/parser":"^5.57.0","@typescript-eslint/eslint-plugin":"^5.57.0"},"_npmOperationalInternal":{"tmp":"tmp/validators-tracking-params_1.2.2_1773164005104_0.4318314850430698","host":"s3://npm-registry-packages-npm-production"}},"1.3.0":{"name":"@bernierllc/validators-tracking-params","version":"1.3.0","keywords":["validation","validators","tracking","utm","privacy","pii","compliance","gdpr","ccpa","content","url"],"author":{"name":"Bernier LLC"},"license":"UNLICENSED","_id":"@bernierllc/validators-tracking-params@1.3.0","maintainers":[{"name":"alikhan410","email":"mczeyo@gmail.com"},{"name":"mkbernier","email":"mkbernier@gmail.com"}],"homepage":"https://github.com/bernierllc/tools#readme","bugs":{"url":"https://github.com/bernierllc/tools/issues"},"dist":{"shasum":"2c40db6510233af3724d0c73ac9870eb4c81fef5","tarball":"https://registry.npmjs.org/@bernierllc/validators-tracking-params/-/validators-tracking-params-1.3.0.tgz","fileCount":11,"integrity":"sha512-m/xsIXEJ+yS2DRHRovzFcg/ETtVwY0bqWR2x4v9vHBRKKtwoDOpOrxOMgGXrWvEu228o5XL0wHFdLLUbrf9qFA==","signatures":[{"sig":"MEYCIQDGxBY325l2yHCAMHDvbyka+MlYJKayulf6P7GWXrsSzwIhAIu4QZIP0RC3nH5HnXUOxn2jyBKlaFWX1Frz1vKG1I1I","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":34684},"main":"dist/index.js","_from":"file:bernierllc-validators-tracking-params-1.3.0.tgz","types":"dist/index.d.ts","scripts":{"dev":"tsc --watch","lint":"eslint src --ext .ts","test":"jest","build":"tsc","clean":"rm -rf dist","lint:fix":"eslint src --ext .ts --fix","test:run":"jest","test:coverage":"jest --coverage"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:88a8f77d-7b01-4a30-b90d-551dd6493300"}},"_resolved":"/home/runner/work/tools/tools/packages/validators/validators-tracking-params/bernierllc-validators-tracking-params-1.3.0.tgz","_integrity":"sha512-m/xsIXEJ+yS2DRHRovzFcg/ETtVwY0bqWR2x4v9vHBRKKtwoDOpOrxOMgGXrWvEu228o5XL0wHFdLLUbrf9qFA==","repository":{"url":"git+https://github.com/bernierllc/tools.git","type":"git","directory":"packages/validators/validators-tracking-params"},"_npmVersion":"11.14.1","description":"Tracking parameter validation - UTM/PII leakage policy enforcement","directories":{},"_nodeVersion":"20.20.2","dependencies":{"@bernierllc/validators-core":"0.2.0"},"publishConfig":{"access":"public","registry":"https://registry.npmjs.org/"},"_hasShrinkwrap":false,"devDependencies":{"jest":"^29.5.0","eslint":"^8.37.0","ts-jest":"^29.0.5","typescript":"^5.0.0","@types/jest":"^29.5.0","@types/node":"^18.15.0","@typescript-eslint/parser":"^5.57.0","@typescript-eslint/eslint-plugin":"^5.57.0"},"_npmOperationalInternal":{"tmp":"tmp/validators-tracking-params_1.3.0_1779242241179_0.6340791665071235","host":"s3://npm-registry-packages-npm-production"}},"1.4.0":{"name":"@bernierllc/validators-tracking-params","version":"1.4.0","keywords":["validation","validators","tracking","utm","privacy","pii","compliance","gdpr","ccpa","content","url"],"author":{"name":"Bernier LLC"},"license":"UNLICENSED","_id":"@bernierllc/validators-tracking-params@1.4.0","maintainers":[{"name":"alikhan410","email":"mczeyo@gmail.com"},{"name":"mkbernier","email":"mkbernier@gmail.com"}],"homepage":"https://github.com/bernierllc/tools#readme","bugs":{"url":"https://github.com/bernierllc/tools/issues"},"dist":{"shasum":"801709d2aab5bb5ca1a42c9f8c6632e14e6f3146","tarball":"https://registry.npmjs.org/@bernierllc/validators-tracking-params/-/validators-tracking-params-1.4.0.tgz","fileCount":11,"integrity":"sha512-n+vtjAX5gDBt9VDVEqAa877qNyxG+nZbT0hZamCsvkihDWr3hbE7qg6Q7HU9ZgZ2pfpexH+qhdhx33bORBi8SQ==","signatures":[{"sig":"MEUCIQC1BIJzikvqPetkdfk3aU9o9k3cWobqQdDTDMs8YkDl8wIgbF8awJ8QpFFs8R4/dsuaz0jXoM5bH13Bt3nqY7CPtoo=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":34684},"main":"dist/index.js","_from":"file:bernierllc-validators-tracking-params-1.4.0.tgz","types":"dist/index.d.ts","scripts":{"dev":"tsc --watch","lint":"eslint src --ext .ts","test":"jest","build":"tsc","clean":"rm -rf dist","lint:fix":"eslint src --ext .ts --fix","test:run":"jest","test:coverage":"jest --coverage"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:88a8f77d-7b01-4a30-b90d-551dd6493300"}},"_resolved":"/home/runner/work/tools/tools/packages/validators/validators-tracking-params/bernierllc-validators-tracking-params-1.4.0.tgz","_integrity":"sha512-n+vtjAX5gDBt9VDVEqAa877qNyxG+nZbT0hZamCsvkihDWr3hbE7qg6Q7HU9ZgZ2pfpexH+qhdhx33bORBi8SQ==","repository":{"url":"git+https://github.com/bernierllc/tools.git","type":"git","directory":"packages/validators/validators-tracking-params"},"_npmVersion":"11.14.1","description":"Tracking parameter validation - UTM/PII leakage policy enforcement","directories":{},"_nodeVersion":"20.20.2","dependencies":{"@bernierllc/validators-core":"0.3.0"},"publishConfig":{"access":"public","registry":"https://registry.npmjs.org/"},"_hasShrinkwrap":false,"devDependencies":{"jest":"^29.5.0","eslint":"^8.37.0","ts-jest":"^29.0.5","typescript":"^5.0.0","@types/jest":"^29.5.0","@types/node":"^18.15.0","@typescript-eslint/parser":"^5.57.0","@typescript-eslint/eslint-plugin":"^5.57.0"},"_npmOperationalInternal":{"tmp":"tmp/validators-tracking-params_1.4.0_1779250996364_0.26849416185752806","host":"s3://npm-registry-packages-npm-production"}},"1.6.0":{"name":"@bernierllc/validators-tracking-params","version":"1.6.0","description":"Tracking parameter validation - UTM/PII leakage policy enforcement","main":"dist/index.js","types":"dist/index.d.ts","keywords":["validation","validators","tracking","utm","privacy","pii","compliance","gdpr","ccpa","content","url"],"author":{"name":"Bernier LLC"},"license":"UNLICENSED","dependencies":{"@bernierllc/validators-core":"0.4.0"},"devDependencies":{"@types/jest":"^29.5.0","@types/node":"^18.15.0","@typescript-eslint/eslint-plugin":"^5.57.0","@typescript-eslint/parser":"^5.57.0","eslint":"^8.37.0","jest":"^29.5.0","ts-jest":"^29.0.5","typescript":"^5.0.0"},"repository":{"type":"git","url":"git+https://github.com/bernierllc/tools.git","directory":"packages/validators/validators-tracking-params"},"publishConfig":{"access":"public","registry":"https://registry.npmjs.org/"},"scripts":{"build":"tsc","dev":"tsc --watch","test":"jest","test:run":"jest","test:coverage":"jest --coverage","lint":"eslint src --ext .ts","lint:fix":"eslint src --ext .ts --fix","clean":"rm -rf dist"},"_id":"@bernierllc/validators-tracking-params@1.6.0","bugs":{"url":"https://github.com/bernierllc/tools/issues"},"homepage":"https://github.com/bernierllc/tools#readme","_integrity":"sha512-jW9JLXXFNyvKREwXUb3J7/W+g2NBdIV1EprN4jD0rx7PYFxTWzHDtonf1NwDKa4ZIonjJd2snWw52v9b/NktHg==","_resolved":"/home/runner/work/tools/tools/packages/validators/validators-tracking-params/bernierllc-validators-tracking-params-1.6.0.tgz","_from":"file:bernierllc-validators-tracking-params-1.6.0.tgz","_nodeVersion":"20.20.2","_npmVersion":"11.14.1","dist":{"integrity":"sha512-jW9JLXXFNyvKREwXUb3J7/W+g2NBdIV1EprN4jD0rx7PYFxTWzHDtonf1NwDKa4ZIonjJd2snWw52v9b/NktHg==","shasum":"9b63a47abfa282c2ccc87a4a4229c30425800b4e","tarball":"https://registry.npmjs.org/@bernierllc/validators-tracking-params/-/validators-tracking-params-1.6.0.tgz","fileCount":13,"unpackedSize":36606,"signatures":[{"keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U","sig":"MEQCIFMyAN6xlHLgF02V5PhTiNPHQF7gpTH8pOP0eFDY9AyvAiAoU6Z8lu7O3YSY/9M9g2+HfudYn4qBSatFPvOgToqbpQ=="}]},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:88a8f77d-7b01-4a30-b90d-551dd6493300"}},"directories":{},"maintainers":[{"name":"alikhan410","email":"mczeyo@gmail.com"},{"name":"mkbernier","email":"mkbernier@gmail.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages-npm-production","tmp":"tmp/validators-tracking-params_1.6.0_1779252281511_0.32207107503924526"},"_hasShrinkwrap":false}},"time":{"created":"2025-10-11T19:32:06.983Z","modified":"2026-05-20T04:44:41.774Z","1.0.3":"2025-10-11T19:32:07.295Z","1.2.0":"2026-01-05T19:46:17.208Z","1.2.1":"2026-03-09T17:45:40.633Z","1.2.2":"2026-03-10T17:33:25.241Z","1.3.0":"2026-05-20T01:57:21.335Z","1.4.0":"2026-05-20T04:23:16.519Z","1.6.0":"2026-05-20T04:44:41.649Z"},"bugs":{"url":"https://github.com/bernierllc/tools/issues"},"author":{"name":"Bernier LLC"},"license":"UNLICENSED","homepage":"https://github.com/bernierllc/tools#readme","keywords":["validation","validators","tracking","utm","privacy","pii","compliance","gdpr","ccpa","content","url"],"repository":{"type":"git","url":"git+https://github.com/bernierllc/tools.git","directory":"packages/validators/validators-tracking-params"},"description":"Tracking parameter validation - UTM/PII leakage policy enforcement","maintainers":[{"name":"alikhan410","email":"mczeyo@gmail.com"},{"name":"mkbernier","email":"mkbernier@gmail.com"}],"readme":"# @bernierllc/validators-tracking-params\n\nTracking parameter validation - UTM/PII leakage policy enforcement for privacy compliance.\n\n## Overview\n\nA primitive validator package that provides comprehensive validation of tracking parameters in URLs, ensuring privacy compliance (GDPR, CCPA) and marketing attribution best practices. Detects personally identifiable information (PII) in URL parameters, validates UTM parameter standards, and checks for unauthorized third-party trackers.\n\n## Installation\n\n```bash\nnpm install @bernierllc/validators-tracking-params\n```\n\n## Features\n\n- **PII Detection** - Identifies emails, SSNs, phone numbers, credit cards, and custom patterns in URL parameters\n- **UTM Parameter Validation** - Ensures UTM tracking follows standard naming conventions\n- **Third-Party Tracker Detection** - Detects unauthorized tracking pixels from major ad networks\n- **Tracking Parameter Standards** - Validates organizational tracking parameter policies\n- **UTM Attribution Completeness** - Warns when required UTM parameters are missing\n\n## Usage\n\n### Basic Validation\n\n```typescript\nimport { noPIIInUrlParams, validUtmParams } from '@bernierllc/validators-tracking-params';\nimport { createRuleContext } from '@bernierllc/validators-core';\n\n// Create a context for validation\nconst problems: Problem[] = [];\nconst ctx = createRuleContext(\n  'no-pii-in-url-params',\n  {},\n  mockUtils,\n  {},\n  (p) => problems.push(p)\n);\n\n// Validate content for PII in URLs\nconst rule = noPIIInUrlParams.create(ctx as any);\nconst content = 'Visit https://example.com?email=user@example.com';\nrule(content);\n\n// Check for problems\nconsole.log(problems); // Will contain detected PII violations\n```\n\n### Custom PII Patterns\n\n```typescript\nimport { noPIIInUrlParams } from '@bernierllc/validators-tracking-params';\n\nconst customPattern = /CUSTOM-\\d{3}-[A-Z]{3}/;\nconst ctx = createRuleContext(\n  'no-pii-in-url-params',\n  { piiPatterns: [customPattern] },\n  mockUtils,\n  {},\n  (p) => problems.push(p)\n);\n\nconst rule = noPIIInUrlParams.create(ctx as any);\nrule('Visit https://example.com?id=CUSTOM-123-ABC');\n```\n\n### UTM Parameter Validation\n\n```typescript\nimport { validUtmParams } from '@bernierllc/validators-tracking-params';\n\nconst ctx = createRuleContext(\n  'valid-utm-params',\n  { allowedUtmParams: ['utm_source', 'utm_medium', 'utm_campaign', 'utm_custom'] },\n  mockUtils,\n  {},\n  (p) => problems.push(p)\n);\n\nconst rule = validUtmParams.create(ctx as any);\nrule('Visit https://example.com?utm_source=google&utm_custom=value');\n```\n\n### Third-Party Tracker Detection\n\n```typescript\nimport { noUnauthorizedTrackers } from '@bernierllc/validators-tracking-params';\n\nconst ctx = createRuleContext(\n  'no-unauthorized-trackers',\n  {\n    allowedDomains: ['google-analytics.com'],\n    allowThirdPartyTrackers: false\n  },\n  mockUtils,\n  {},\n  (p) => problems.push(p)\n);\n\nconst rule = noUnauthorizedTrackers.create(ctx as any);\nrule('Tracking via https://www.google-analytics.com/collect?v=1');\n```\n\n### Strict Tracking Parameter Standards\n\n```typescript\nimport { trackingParamStandards } from '@bernierllc/validators-tracking-params';\n\nconst ctx = createRuleContext(\n  'tracking-param-standards',\n  {\n    strictMode: true,\n    allowedTrackingParams: ['fbclid', 'gclid', 'custom_tracking']\n  },\n  mockUtils,\n  {},\n  (p) => problems.push(p)\n);\n\nconst rule = trackingParamStandards.create(ctx as any);\nrule('Visit https://example.com?custom_tracking=test');\n```\n\n## API Reference\n\n### Rules\n\n#### `noPIIInUrlParams`\nDetects personally identifiable information in URL parameters.\n\n**Options:**\n- `piiPatterns?: RegExp[]` - Custom PII detection patterns\n\n**Detects:**\n- Email addresses\n- Social Security Numbers (SSN)\n- Phone numbers\n- Credit card numbers\n- IPv4 addresses\n- Custom patterns\n\n#### `validUtmParams`\nValidates UTM tracking parameters follow standard naming conventions.\n\n**Options:**\n- `allowedUtmParams?: string[]` - Allowed UTM parameter names (default: standard UTM params)\n\n**Standard UTM Parameters:**\n- `utm_source`\n- `utm_medium`\n- `utm_campaign`\n- `utm_term`\n- `utm_content`\n- `utm_id`\n\n#### `noUnauthorizedTrackers`\nDetects tracking pixels and parameters from unauthorized third-party services.\n\n**Options:**\n- `allowThirdPartyTrackers?: boolean` - Allow all third-party trackers (default: false)\n- `allowedDomains?: string[]` - Allowlist of authorized tracking domains\n\n**Detected Vendors:**\n- Google Analytics\n- DoubleClick\n- Facebook\n- LinkedIn\n- Twitter\n\n#### `trackingParamStandards`\nValidates tracking parameters against organizational standards.\n\n**Options:**\n- `strictMode?: boolean` - Enable strict parameter checking (default: false)\n- `allowedTrackingParams?: string[]` - Allowed tracking parameter names\n\n**Common Tracking Parameters:**\n- `fbclid` (Facebook Click ID)\n- `gclid` (Google Click ID)\n- `msclkid` (Microsoft Click ID)\n- `mc_cid` / `mc_eid` (Mailchimp)\n- `_ga` (Google Analytics)\n- `ref` (Referrer)\n\n#### `completeUtmAttribution`\nEnsures UTM parameters are complete for proper marketing attribution.\n\n**Required Parameters:**\n- `utm_source`\n- `utm_medium`\n- `utm_campaign`\n\n### Utility Functions\n\n#### `extractUrls(content: string): string[]`\nExtracts all URLs from text content.\n\n#### `parseQueryParams(url: string): Record<string, string>`\nParses query parameters from a URL.\n\n#### `getDomain(url: string): string`\nExtracts the domain from a URL.\n\n#### `detectPII(value: string, customPatterns?: RegExp[]): PIIDetection[]`\nChecks if a value matches any PII pattern.\n\n#### `checkParamForPII(paramName: string, paramValue: string, customPatterns?: RegExp[]): PIIDetection[]`\nChecks if a URL parameter contains PII.\n\n#### `sanitizeUrl(url: string, keysToRemove: string[]): string`\nRemoves specified parameters from a URL.\n\n#### `isDomainAllowed(url: string, allowedDomains: string[]): boolean`\nChecks if a domain is in the allowlist.\n\n#### `decodeParamValue(value: string): string`\nDecodes URL-encoded parameter values.\n\n## Configuration\n\n### TrackingParamsConfig Interface\n\n```typescript\ninterface TrackingParamsConfig {\n  allowedUtmParams?: string[];\n  allowedTrackingParams?: string[];\n  piiPatterns?: RegExp[];\n  strictMode?: boolean;\n  allowThirdPartyTrackers?: boolean;\n  allowedDomains?: string[];\n}\n```\n\n## Testing\n\nThis package achieves 100% test coverage with comprehensive test suites for all validation rules and utility functions.\n\n```bash\n# Run tests\nnpm test\n\n# Run tests with coverage\nnpm run test:coverage\n\n# Run tests in watch mode\nnpm run test:watch\n```\n\n## Integration Status\n\n### Logger Integration\n**Status**: Not applicable - Pure validation functions with no runtime logging requirements.\n\nThis package consists of pure validation functions that don't perform any I/O operations or require runtime logging. All validation results are returned through the validators-core Problem interface, which can be logged by consuming applications using @bernierllc/logger if desired.\n\n### NeverHub Integration\n**Status**: Not applicable - Primitive validator package with no service dependencies.\n\nAs a primitive validator in the validators ecosystem, this package provides stateless validation functions with no need for service discovery or event bus communication. The validators-runner or domain validators that compose these primitives may integrate with NeverHub for centralized validation orchestration.\n\n### Docs-Suite\n**Status**: Ready - Complete API documentation with TypeDoc\n\nThis package includes comprehensive documentation in README format with detailed API references, usage examples, and configuration options. Documentation can be easily integrated into docs-suite for centralized technical documentation.\n\n## Privacy & Compliance\n\nThis package helps enforce:\n- **GDPR** compliance by detecting PII in tracking parameters\n- **CCPA** requirements for consumer data privacy\n- **Privacy best practices** for web analytics and marketing\n- **Third-party tracker governance** and authorization\n\n## License\n\nCopyright (c) 2025 Bernier LLC\n\nThis file is licensed to the client under a limited-use license.\nThe client may use and modify this code *only within the scope of the project it was delivered for*.\nRedistribution or use in other products or commercial offerings is not permitted without written consent from Bernier LLC.\n","readmeFilename":"README.md"}