standdown 0.1.0 → 0.2.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (40) hide show
  1. package/README.md +221 -18
  2. package/dist/{chunk-25A7QG5Z.mjs → chunk-26BG7FFX.mjs} +3 -3
  3. package/dist/{chunk-25A7QG5Z.mjs.map → chunk-26BG7FFX.mjs.map} +1 -1
  4. package/dist/{chunk-SEZFAOUU.mjs → chunk-JKQTHHIP.mjs} +49 -4
  5. package/dist/chunk-JKQTHHIP.mjs.map +1 -0
  6. package/dist/{chunk-SVN6UWA4.mjs → chunk-VE7YBR5A.mjs} +142 -24
  7. package/dist/chunk-VE7YBR5A.mjs.map +1 -0
  8. package/dist/content.cjs +188 -28
  9. package/dist/content.cjs.map +1 -1
  10. package/dist/content.d.cts +11 -4
  11. package/dist/content.d.ts +11 -4
  12. package/dist/content.mjs +18 -8
  13. package/dist/content.mjs.map +1 -1
  14. package/dist/index.cjs +140 -26
  15. package/dist/index.cjs.map +1 -1
  16. package/dist/index.d.cts +3 -3
  17. package/dist/index.d.ts +3 -3
  18. package/dist/index.mjs +3 -7
  19. package/dist/index.mjs.map +1 -1
  20. package/dist/policies.cjs +18 -11
  21. package/dist/policies.cjs.map +1 -1
  22. package/dist/policies.d.cts +98 -86
  23. package/dist/policies.d.ts +98 -86
  24. package/dist/policies.mjs +18 -12
  25. package/dist/policies.mjs.map +1 -1
  26. package/dist/{session-C5gH-LaQ.d.ts → session-DA9hkYlD.d.ts} +10 -1
  27. package/dist/{session-n0px3Agb.d.cts → session-iosT1mEL.d.cts} +10 -1
  28. package/dist/{stores-CELX9aHN.d.ts → stores-Behkya7C.d.ts} +1 -1
  29. package/dist/{stores-CKCdKDdX.d.cts → stores-DfovpSqe.d.cts} +1 -1
  30. package/dist/{types-A9OJ7SWj.d.cts → types-DgKvVCmQ.d.cts} +53 -7
  31. package/dist/{types-A9OJ7SWj.d.ts → types-DgKvVCmQ.d.ts} +53 -7
  32. package/dist/webext.cjs +191 -28
  33. package/dist/webext.cjs.map +1 -1
  34. package/dist/webext.d.cts +11 -4
  35. package/dist/webext.d.ts +11 -4
  36. package/dist/webext.mjs +22 -9
  37. package/dist/webext.mjs.map +1 -1
  38. package/package.json +1 -1
  39. package/dist/chunk-SEZFAOUU.mjs.map +0 -1
  40. package/dist/chunk-SVN6UWA4.mjs.map +0 -1
package/dist/policies.mjs CHANGED
@@ -1,6 +1,7 @@
1
1
  // src/policies.ts
2
2
  var LAST_VERIFIED = "2026-07-10";
3
- var THIRTY_MINUTES_MS = 18e5;
3
+ var SESSION_ONLY_MIN_MS = 0;
4
+ var SIXTY_MINUTES_MS = 36e5;
4
5
  var COC_INACTIVITY_MS = 36e5;
5
6
  var COC_FALLBACK_MIN_MS = 54e5;
6
7
  var PIE_STANDDOWN_DOMAINS_URL = "https://raw.githubusercontent.com/piedotorg/standdown-domains/main/standdown-domains.json";
@@ -75,14 +76,14 @@ var cjPolicy = {
75
76
  standdown: {
76
77
  scope: "advertiser",
77
78
  sessionRule: "session-or-min",
78
- minDurationMs: THIRTY_MINUTES_MS,
79
+ minDurationMs: SIXTY_MINUTES_MS,
79
80
  behaviors: standdownBehaviors
80
81
  },
81
82
  activation: { mode: "user-click" },
82
83
  metadata: {
83
84
  sourceUrl: "https://www.cj.com/legal/software-policy",
84
85
  lastVerified: LAST_VERIFIED,
85
- notes: "CJ policy cites CJ domains, afsrc=1, and cjevent; rotating domain list is attributed to piedotorg/standdown-domains."
86
+ notes: "CJ policy cites CJ domains, afsrc=1, and cjevent; rotating domain list is attributed to piedotorg/standdown-domains. Minimum stand-down duration (60m) is calibrated to production enforcement (Dupe standDownCookieDuration=60)."
86
87
  }
87
88
  };
88
89
  var impactPolicy = {
@@ -107,14 +108,14 @@ var impactPolicy = {
107
108
  standdown: {
108
109
  scope: "advertiser",
109
110
  sessionRule: "session-or-min",
110
- minDurationMs: THIRTY_MINUTES_MS,
111
+ minDurationMs: SESSION_ONLY_MIN_MS,
111
112
  behaviors: standdownBehaviors
112
113
  },
113
114
  activation: { mode: "user-click" },
114
115
  metadata: {
115
116
  sourceUrl: "https://impact.com/stand-down-policy.ihtml",
116
117
  lastVerified: LAST_VERIFIED,
117
- notes: "Impact stand-down policy URL and irclickid/im_ref signals are from pre-build research; irgwc is attributed to piedotorg/standdown-domains."
118
+ notes: "Impact stand-down policy URL and irclickid/im_ref signals are from pre-build research; irgwc is attributed to piedotorg/standdown-domains. Session-only (no minimum) matches production enforcement, which sets no stand-down TTL."
118
119
  }
119
120
  };
120
121
  var rakutenPolicy = {
@@ -157,7 +158,7 @@ var rakutenPolicy = {
157
158
  standdown: {
158
159
  scope: "advertiser",
159
160
  sessionRule: "session-or-min",
160
- minDurationMs: COC_FALLBACK_MIN_MS,
161
+ minDurationMs: SESSION_ONLY_MIN_MS,
161
162
  behaviors: standdownBehaviors
162
163
  },
163
164
  activation: { mode: "user-click" },
@@ -264,13 +265,12 @@ var ebayEpnPolicy = {
264
265
  standdown: cocDefaults,
265
266
  activation: {
266
267
  mode: "user-click",
267
- maxPromptsPerJourney: 2,
268
268
  allowedReferrerClasses: ["own-site", "organic", "direct"]
269
269
  },
270
270
  metadata: {
271
271
  sourceUrl: "https://partnernetwork.ebay.com/browser-extension-policy",
272
272
  lastVerified: LAST_VERIFIED,
273
- notes: "eBay prompt/referrer requirements are from pre-build research; landing params and rover.ebay.com are also attributed to piedotorg/standdown-domains."
273
+ notes: "eBay referrer requirements are from pre-build research; landing params and rover.ebay.com are also attributed to piedotorg/standdown-domains."
274
274
  }
275
275
  };
276
276
  var amazonPolicy = {
@@ -590,17 +590,23 @@ var allPolicies = [
590
590
  shareasalePolicy,
591
591
  ebayEpnPolicy,
592
592
  amazonPolicy,
593
- sovrnSkimlinksPolicy,
594
- partnerizePolicy,
595
593
  universalPolicy
596
594
  ];
595
+ var experimentalPolicies = [
596
+ sovrnSkimlinksPolicy,
597
+ partnerizePolicy
598
+ ];
599
+ var knownPolicies = [
600
+ ...allPolicies,
601
+ ...experimentalPolicies
602
+ ];
597
603
  function policiesFor(networks) {
598
604
  const wanted = new Set(networks);
599
- return allPolicies.filter(
605
+ return knownPolicies.filter(
600
606
  (policy) => wanted.has(policy.id) || wanted.has(policy.network.id)
601
607
  );
602
608
  }
603
609
 
604
- export { allPolicies, amazonPolicy, awinPolicy, cjPolicy, cocDefaults, ebayEpnPolicy, impactPolicy, partnerizePolicy, policiesFor, rakutenPolicy, shareasalePolicy, sovrnSkimlinksPolicy, universalPolicy };
610
+ export { allPolicies, amazonPolicy, awinPolicy, cjPolicy, cocDefaults, ebayEpnPolicy, experimentalPolicies, impactPolicy, partnerizePolicy, policiesFor, rakutenPolicy, shareasalePolicy, sovrnSkimlinksPolicy, universalPolicy };
605
611
  //# sourceMappingURL=policies.mjs.map
606
612
  //# sourceMappingURL=policies.mjs.map
@@ -1 +1 @@
1
- {"version":3,"sources":["../src/policies.ts"],"names":[],"mappings":"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","file":"policies.mjs","sourcesContent":["import type { Behavior, StanddownPolicy } from './types';\n\nconst LAST_VERIFIED = '2026-07-10';\nconst THIRTY_MINUTES_MS = 1_800_000;\nconst COC_INACTIVITY_MS = 3_600_000;\nconst COC_FALLBACK_MIN_MS = 5_400_000;\nconst PIE_STANDDOWN_DOMAINS_URL =\n 'https://raw.githubusercontent.com/piedotorg/standdown-domains/main/standdown-domains.json';\n\nconst standdownBehaviors = [\n 'suppress-prompts',\n 'no-cookie-write',\n 'no-redirect',\n 'no-background-tracking',\n] as const satisfies readonly Behavior[];\n\nexport const cocDefaults = {\n scope: 'advertiser',\n sessionRule: 'inactivity-window',\n minDurationMs: COC_FALLBACK_MIN_MS,\n inactivityMs: COC_INACTIVITY_MS,\n behaviors: standdownBehaviors,\n} as const satisfies StanddownPolicy['standdown'];\n\nexport const cjPolicy = {\n id: 'cj',\n schemaVersion: 3,\n policyVersion: '0.1.0',\n network: {\n id: 'cj',\n name: 'CJ Affiliate',\n policyUrl: 'https://www.cj.com/legal/software-policy',\n },\n detection: {\n landingParams: [\n { anyOf: [{ allOf: [{ name: 'cjevent' }] }] },\n { anyOf: [{ allOf: [{ name: 'cjdata' }] }] },\n {\n anyOf: [\n { allOf: [{ name: 'utm_source', value: 'cj', match: 'equals' }] },\n ],\n },\n {\n anyOf: [{ allOf: [{ name: 'sf_cs', value: 'cj', match: 'equals' }] }],\n },\n {\n anyOf: [{ allOf: [{ name: 'afsrc', value: '1', match: 'equals' }] }],\n },\n ],\n redirectDomains: [\n { pattern: 'anrdoezrs.net', kind: 'suffix', comment: 'CJ rotating domain' },\n {\n pattern: 'commission-junction.com',\n kind: 'suffix',\n comment: 'CJ rotating domain',\n },\n { pattern: 'dpbolvw.net', kind: 'suffix', comment: 'CJ rotating domain' },\n { pattern: 'apmebf.com', kind: 'suffix', comment: 'CJ rotating domain' },\n { pattern: 'jdoqocy.com', kind: 'suffix', comment: 'CJ rotating domain' },\n { pattern: 'kqzyfj.com', kind: 'suffix', comment: 'CJ rotating domain' },\n { pattern: 'qksrv.net', kind: 'suffix', comment: 'CJ rotating domain' },\n { pattern: 'tkqlhce.com', kind: 'suffix', comment: 'CJ rotating domain' },\n { pattern: 'qksz.net', kind: 'suffix', comment: 'CJ rotating domain' },\n { pattern: 'afcyhf.com', kind: 'suffix', comment: 'CJ rotating domain' },\n { pattern: 'awltovhc.com', kind: 'suffix', comment: 'CJ rotating domain' },\n { pattern: 'ftjcfx.com', kind: 'suffix', comment: 'CJ rotating domain' },\n { pattern: 'lduhtrp.net', kind: 'suffix', comment: 'CJ rotating domain' },\n { pattern: 'tqlkg.com', kind: 'suffix', comment: 'CJ rotating domain' },\n { pattern: 'awxibrm.com', kind: 'suffix', comment: 'CJ rotating domain' },\n { pattern: 'cualbr.com', kind: 'suffix', comment: 'CJ rotating domain' },\n { pattern: 'rnsfpw.net', kind: 'suffix', comment: 'CJ rotating domain' },\n { pattern: 'vofzpwh.com', kind: 'suffix', comment: 'CJ rotating domain' },\n { pattern: 'yceml.net', kind: 'suffix', comment: 'CJ rotating domain' },\n ],\n cookiePatterns: [\n { name: 'cje', match: 'substring' },\n { name: 'cjevent_dc', match: 'substring' },\n ],\n },\n standdown: {\n scope: 'advertiser',\n sessionRule: 'session-or-min',\n minDurationMs: THIRTY_MINUTES_MS,\n behaviors: standdownBehaviors,\n },\n activation: { mode: 'user-click' },\n metadata: {\n sourceUrl: 'https://www.cj.com/legal/software-policy',\n lastVerified: LAST_VERIFIED,\n notes:\n 'CJ policy cites CJ domains, afsrc=1, and cjevent; rotating domain list is attributed to piedotorg/standdown-domains.',\n },\n} as const satisfies StanddownPolicy;\n\nexport const impactPolicy = {\n id: 'impact',\n schemaVersion: 3,\n policyVersion: '0.1.0',\n network: {\n id: 'impact',\n name: 'Impact',\n policyUrl: 'https://impact.com/stand-down-policy.ihtml',\n },\n detection: {\n landingParams: [\n {\n anyOf: [{ allOf: [{ name: 'afsrc', value: '1', match: 'equals' }] }],\n },\n { anyOf: [{ allOf: [{ name: 'irclickid' }] }] },\n { anyOf: [{ allOf: [{ name: 'irgwc' }] }] },\n ],\n cookiePatterns: [{ name: 'im_ref', match: 'substring' }],\n },\n standdown: {\n scope: 'advertiser',\n sessionRule: 'session-or-min',\n minDurationMs: THIRTY_MINUTES_MS,\n behaviors: standdownBehaviors,\n },\n activation: { mode: 'user-click' },\n metadata: {\n sourceUrl: 'https://impact.com/stand-down-policy.ihtml',\n lastVerified: LAST_VERIFIED,\n notes:\n 'Impact stand-down policy URL and irclickid/im_ref signals are from pre-build research; irgwc is attributed to piedotorg/standdown-domains.',\n },\n} as const satisfies StanddownPolicy;\n\nexport const rakutenPolicy = {\n id: 'rakuten',\n schemaVersion: 3,\n policyVersion: '0.1.0',\n network: {\n id: 'rakuten',\n name: 'Rakuten Advertising',\n policyUrl: 'https://github.com/rakutenrewards/PublisherStandown-SDK',\n },\n detection: {\n landingParams: [\n {\n anyOf: [\n {\n allOf: [{ name: 'ranMID' }, { name: 'ranEAID' }, { name: 'ranSiteID' }],\n },\n { allOf: [{ name: 'ranEAID' }, { name: 'ranSiteID' }] },\n { allOf: [{ name: 'ranSiteID' }] },\n { allOf: [{ name: 'siteID' }] },\n ],\n },\n ],\n redirectDomains: [\n { pattern: 'click.linksynergy.com', kind: 'suffix' },\n { pattern: 'linksynergy.jrs5.com', kind: 'suffix' },\n { pattern: 'tk.jrs5.com', kind: 'suffix' },\n {\n pattern: '(^|\\\\.)linksynergy\\\\.[a-z]+$',\n kind: 'regex',\n comment: 'linksynergy.* domain family',\n },\n ],\n cookiePatterns: [\n { name: 'lsclick_mid', match: 'substring' },\n { name: 'linkshare', match: 'substring' },\n ],\n },\n standdown: {\n scope: 'advertiser',\n sessionRule: 'session-or-min',\n minDurationMs: COC_FALLBACK_MIN_MS,\n behaviors: standdownBehaviors,\n },\n activation: { mode: 'user-click' },\n metadata: {\n sourceUrl: 'https://github.com/rakutenrewards/PublisherStandown-SDK',\n lastVerified: LAST_VERIFIED,\n notes:\n 'Rakuten SDK is detection-only and ships no policies; duration uses CoC fallback because the public source describes browser-session semantics without a fixed millisecond value.',\n },\n} as const satisfies StanddownPolicy;\n\nexport const awinPolicy = {\n id: 'awin',\n schemaVersion: 3,\n policyVersion: '0.1.0',\n network: {\n id: 'awin',\n name: 'Awin',\n policyUrl:\n 'https://success.awin.com/s/article/Downloadable-Software-Guidelines',\n },\n detection: {\n landingParams: [\n { anyOf: [{ allOf: [{ name: 'awc' }] }] },\n {\n anyOf: [\n { allOf: [{ name: 'utm_source', value: 'aw', match: 'equals' }] },\n ],\n },\n {\n anyOf: [{ allOf: [{ name: 'source', value: 'aw', match: 'equals' }] }],\n },\n ],\n redirectDomains: [{ pattern: 'awin1.com', kind: 'suffix' }],\n },\n standdown: cocDefaults,\n activation: { mode: 'user-click' },\n metadata: {\n sourceUrl:\n 'https://success.awin.com/s/article/Downloadable-Software-Guidelines',\n lastVerified: LAST_VERIFIED,\n notes:\n 'Awin awc/awin1.com signals are from pre-build research, Awin downloadable-software guidance, Awin Soft Click status docs, and piedotorg/standdown-domains. CoC inactivity-window defaults are broader than the seed table session-or-min entry and are ratified by SPEC A5.',\n },\n} as const satisfies StanddownPolicy;\n\nexport const shareasalePolicy = {\n id: 'shareasale',\n schemaVersion: 3,\n policyVersion: '0.1.0',\n network: {\n id: 'shareasale',\n name: 'ShareASale',\n policyUrl:\n 'https://success.awin.com/s/article/Downloadable-Software-Guidelines',\n },\n detection: {\n landingParams: [{ anyOf: [{ allOf: [{ name: 'sscid' }] }] }],\n redirectDomains: [\n { pattern: 'shareasale.com', kind: 'suffix' },\n { pattern: 'shrsl.com', kind: 'suffix' },\n ],\n cookiePatterns: [{ name: 'sscid', match: 'substring' }],\n },\n standdown: cocDefaults,\n activation: { mode: 'user-click' },\n metadata: {\n sourceUrl:\n 'https://success.awin.com/s/article/Downloadable-Software-Guidelines',\n lastVerified: LAST_VERIFIED,\n notes:\n 'ShareASale is Awin-owned and is treated under Awin downloadable-software/CoC guidance. sscid/shareasale.com/shrsl.com signals are from pre-build research and piedotorg/standdown-domains. CoC inactivity-window defaults are broader than the seed table session-or-min entry and are ratified by SPEC A5.',\n },\n} as const satisfies StanddownPolicy;\n\nexport const ebayEpnPolicy = {\n id: 'ebay-epn',\n schemaVersion: 3,\n policyVersion: '0.1.0',\n network: {\n id: 'ebay-epn',\n name: 'eBay Partner Network',\n policyUrl: 'https://partnernetwork.ebay.com/browser-extension-policy',\n },\n detection: {\n advertiserHosts: [\n {\n pattern: '(^|\\\\.)ebay\\\\.[a-z.]+$',\n kind: 'regex',\n comment: 'Scope eBay journey-only rules to eBay advertiser hosts',\n },\n ],\n landingParams: [\n {\n anyOf: [\n { allOf: [{ name: 'campid' }] },\n { allOf: [{ name: 'pubid' }] },\n { allOf: [{ name: 'mkevt' }] },\n { allOf: [{ name: 'mkcid' }] },\n { allOf: [{ name: 'mkrid' }] },\n { allOf: [{ name: 'campid' }, { name: '_trkparms' }] },\n { allOf: [{ name: 'mktype' }, { name: 'gclid' }] },\n ],\n },\n ],\n redirectDomains: [{ pattern: 'rover.ebay.com', kind: 'suffix' }],\n initiatorRules: [\n {\n referrerClass: 'other',\n reason: 'non-approved source during eBay journey',\n },\n ],\n },\n standdown: cocDefaults,\n activation: {\n mode: 'user-click',\n maxPromptsPerJourney: 2,\n allowedReferrerClasses: ['own-site', 'organic', 'direct'],\n },\n metadata: {\n sourceUrl: 'https://partnernetwork.ebay.com/browser-extension-policy',\n lastVerified: LAST_VERIFIED,\n notes:\n 'eBay prompt/referrer requirements are from pre-build research; landing params and rover.ebay.com are also attributed to piedotorg/standdown-domains.',\n },\n} as const satisfies StanddownPolicy;\n\nexport const amazonPolicy = {\n id: 'amazon',\n schemaVersion: 3,\n policyVersion: '0.1.0',\n network: {\n id: 'amazon',\n name: 'Amazon Associates',\n policyUrl: 'https://affiliate-program.amazon.com/help/operating/policies',\n },\n detection: {\n advertiserHosts: [\n {\n pattern: '(^|\\\\.)amazon\\\\.[a-z.]+$',\n kind: 'regex',\n comment: 'Scope Amazon tag detection to Amazon advertiser hosts',\n },\n ],\n landingParams: [{ anyOf: [{ allOf: [{ name: 'tag' }] }] }],\n },\n standdown: {\n scope: 'advertiser',\n sessionRule: 'session-or-min',\n minDurationMs: COC_FALLBACK_MIN_MS,\n behaviors: standdownBehaviors,\n },\n activation: { mode: 'never' },\n metadata: {\n sourceUrl: 'https://affiliate-program.amazon.com/help/operating/policies',\n lastVerified: LAST_VERIFIED,\n notes:\n 'Amazon forbids Special Links in browser extensions; tag is detected for attribution visibility, but activation is never allowed.',\n },\n} as const satisfies StanddownPolicy;\n\nexport const sovrnSkimlinksPolicy = {\n id: 'sovrn-skimlinks',\n schemaVersion: 3,\n policyVersion: '0.1.0',\n network: {\n id: 'sovrn-skimlinks',\n name: 'Sovrn / Skimlinks',\n policyUrl:\n 'https://www.sovrn.com/sovrn-commerce-publisher-code-of-conduct/',\n },\n detection: {\n // Low-confidence entry from research/domain knowledge; keep visible for audit.\n redirectDomains: [\n { pattern: 'go.skimresources.com', kind: 'suffix' },\n { pattern: 'go.redirectingat.com', kind: 'suffix' },\n ],\n },\n standdown: cocDefaults,\n activation: { mode: 'user-click' },\n metadata: {\n sourceUrl:\n 'https://www.sovrn.com/sovrn-commerce-publisher-code-of-conduct/',\n lastVerified: LAST_VERIFIED,\n notes:\n 'unverified against network docs; redirect domains from domain knowledge. CoC inactivity-window defaults are broader than the seed table session-or-min entry and are ratified by SPEC A5.',\n },\n} as const satisfies StanddownPolicy;\n\nexport const partnerizePolicy = {\n id: 'partnerize',\n schemaVersion: 3,\n policyVersion: '0.1.0',\n network: {\n id: 'partnerize',\n name: 'Partnerize',\n policyUrl: 'https://partnerize.com/legal/terms-and-conditions/',\n },\n detection: {\n landingParams: [{ anyOf: [{ allOf: [{ name: 'clickref' }] }] }],\n // Low-confidence entry from research/domain knowledge; keep visible for audit.\n redirectDomains: [{ pattern: 'prf.hn', kind: 'suffix' }],\n },\n standdown: cocDefaults,\n activation: { mode: 'user-click' },\n metadata: {\n sourceUrl: 'https://partnerize.com/legal/terms-and-conditions/',\n lastVerified: LAST_VERIFIED,\n notes:\n 'unverified against network docs; prf.hn redirect domain from domain knowledge. CoC inactivity-window defaults are broader than the seed table session-or-min entry and are ratified by SPEC A5.',\n },\n} as const satisfies StanddownPolicy;\n\nexport const universalPolicy = {\n id: 'universal',\n schemaVersion: 3,\n policyVersion: '0.1.0',\n network: {\n id: 'universal',\n name: 'Universal affiliate source',\n policyUrl: 'https://github.com/piedotorg/standdown-domains',\n },\n detection: {\n landingParams: [\n {\n anyOf: [{ allOf: [{ name: 'afsrc', value: '1', match: 'equals' }] }],\n },\n ],\n redirectDomains: [\n {\n pattern: '^https?\\\\:\\\\/.*[\\\\?\\\\&]afsrc=1',\n kind: 'regex',\n comment: 'Universal standdown parameter from piedotorg/standdown-domains',\n },\n {\n pattern: '^https?:\\\\/\\\\/www\\\\.youtube\\\\.com\\\\/redirect',\n kind: 'regex',\n comment: 'YouTube redirect to a merchant from piedotorg/standdown-domains',\n },\n {\n pattern: '^https?\\\\:\\\\/\\\\/www\\\\.anrdoezrs\\\\.net\\\\/',\n kind: 'regex',\n comment: 'CJ rotating domain from piedotorg/standdown-domains',\n },\n {\n pattern: '^https?\\\\:\\\\/\\\\/www\\\\.commission-junction\\\\.com\\\\/',\n kind: 'regex',\n comment: 'CJ rotating domain from piedotorg/standdown-domains',\n },\n {\n pattern: '^https?\\\\:\\\\/\\\\/www\\\\.dpbolvw\\\\.net\\\\/',\n kind: 'regex',\n comment: 'CJ rotating domain from piedotorg/standdown-domains',\n },\n {\n pattern: '^https?\\\\:\\\\/\\\\/www\\\\.apmebf\\\\.com\\\\/',\n kind: 'regex',\n comment: 'CJ rotating domain from piedotorg/standdown-domains',\n },\n {\n pattern: '^https?\\\\:\\\\/\\\\/www\\\\.jdoqocy\\\\.com\\\\/',\n kind: 'regex',\n comment: 'CJ rotating domain from piedotorg/standdown-domains',\n },\n {\n pattern: '^https?\\\\:\\\\/\\\\/www\\\\.kqzyfj\\\\.com\\\\/',\n kind: 'regex',\n comment: 'CJ rotating domain from piedotorg/standdown-domains',\n },\n {\n pattern: '^https?\\\\:\\\\/\\\\/www\\\\.qksrv\\\\.net\\\\/',\n kind: 'regex',\n comment: 'CJ rotating domain from piedotorg/standdown-domains',\n },\n {\n pattern: '^https?\\\\:\\\\/\\\\/www\\\\.tkqlhce\\\\.com\\\\/',\n kind: 'regex',\n comment: 'CJ rotating domain from piedotorg/standdown-domains',\n },\n {\n pattern: '^https?\\\\:\\\\/\\\\/www\\\\.qksz\\\\.net\\\\/',\n kind: 'regex',\n comment: 'CJ rotating domain from piedotorg/standdown-domains',\n },\n {\n pattern: '^https?\\\\:\\\\/\\\\/www\\\\.afcyhf\\\\.com\\\\/',\n kind: 'regex',\n comment: 'CJ rotating domain from piedotorg/standdown-domains',\n },\n {\n pattern: '^https?\\\\:\\\\/\\\\/www\\\\.awltovhc\\\\.com\\\\/',\n kind: 'regex',\n comment: 'CJ rotating domain from piedotorg/standdown-domains',\n },\n {\n pattern: '^https?\\\\:\\\\/\\\\/www\\\\.ftjcfx\\\\.com\\\\/',\n kind: 'regex',\n comment: 'CJ rotating domain from piedotorg/standdown-domains',\n },\n {\n pattern: '^https?\\\\:\\\\/\\\\/www\\\\.lduhtrp\\\\.net\\\\/',\n kind: 'regex',\n comment: 'CJ rotating domain from piedotorg/standdown-domains',\n },\n {\n pattern: '^https?\\\\:\\\\/\\\\/www\\\\.tqlkg\\\\.com\\\\/',\n kind: 'regex',\n comment: 'CJ rotating domain from piedotorg/standdown-domains',\n },\n {\n pattern: '^https?\\\\:\\\\/\\\\/www\\\\.awxibrm\\\\.com\\\\/',\n kind: 'regex',\n comment: 'CJ rotating domain from piedotorg/standdown-domains',\n },\n {\n pattern: '^https?\\\\:\\\\/\\\\/www\\\\.cualbr\\\\.com\\\\/',\n kind: 'regex',\n comment: 'CJ rotating domain from piedotorg/standdown-domains',\n },\n {\n pattern: '^https?\\\\:\\\\/\\\\/www\\\\.rnsfpw\\\\.net\\\\/',\n kind: 'regex',\n comment: 'CJ rotating domain from piedotorg/standdown-domains',\n },\n {\n pattern: '^https?\\\\:\\\\/\\\\/www\\\\.vofzpwh\\\\.com\\\\/',\n kind: 'regex',\n comment: 'CJ rotating domain from piedotorg/standdown-domains',\n },\n {\n pattern: '^https?\\\\:\\\\/\\\\/www\\\\.yceml\\\\.net\\\\/',\n kind: 'regex',\n comment: 'CJ rotating domain from piedotorg/standdown-domains',\n },\n {\n pattern: '^https?\\\\:\\\\/.*[\\\\?\\\\&]cjevent=',\n kind: 'regex',\n comment: 'CJ general link param from piedotorg/standdown-domains',\n },\n {\n pattern: '^https?\\\\:\\\\/.*[\\\\?\\\\&]ranEAID=',\n kind: 'regex',\n comment: 'RAN general link param on landing from piedotorg/standdown-domains',\n },\n {\n pattern: '^https?\\\\:\\\\/\\\\/tk\\\\.jrs5\\\\.com\\\\/',\n kind: 'regex',\n comment: 'RAN domain from piedotorg/standdown-domains',\n },\n {\n pattern: '^https?\\\\:\\\\/\\\\/linksynergy\\\\.jrs5\\\\.com\\\\/',\n kind: 'regex',\n comment: 'RAN domain from piedotorg/standdown-domains',\n },\n {\n pattern: '^https?\\\\:\\\\/\\\\/click\\\\.linksynergy\\\\.com\\\\/',\n kind: 'regex',\n comment: 'RAN domain from piedotorg/standdown-domains',\n },\n {\n pattern: '^https?\\\\:\\\\/\\\\/www\\\\.gopjn\\\\.com\\\\/t',\n kind: 'regex',\n comment: 'ASC partner domain from piedotorg/standdown-domains',\n },\n {\n pattern: '^https?\\\\:\\\\/\\\\/www\\\\.pjatr\\\\.com\\\\/t',\n kind: 'regex',\n comment: 'ASC partner domain from piedotorg/standdown-domains',\n },\n {\n pattern: '^https?\\\\:\\\\/\\\\/www\\\\.pjtra\\\\.com\\\\/t',\n kind: 'regex',\n comment: 'ASC partner domain from piedotorg/standdown-domains',\n },\n {\n pattern: '^https?\\\\:\\\\/\\\\/www\\\\.pntra\\\\.com\\\\/t\\\\/\\\\w+-\\\\w+',\n kind: 'regex',\n comment: 'ASC partner domain from piedotorg/standdown-domains',\n },\n {\n pattern: '^https?\\\\:\\\\/\\\\/www\\\\.pntrac\\\\.com\\\\/t\\\\/\\\\w+-\\\\w+',\n kind: 'regex',\n comment: 'ASC partner domain from piedotorg/standdown-domains',\n },\n {\n pattern: '^https?\\\\:\\\\/\\\\/www\\\\.pntrs\\\\.com\\\\/t\\\\/\\\\w+-\\\\w+',\n kind: 'regex',\n comment: 'ASC partner domain from piedotorg/standdown-domains',\n },\n {\n pattern: '^https?\\\\:\\\\/.*\\\\.pepperjamnetwork\\\\.com',\n kind: 'regex',\n comment: 'ASC partner domain from piedotorg/standdown-domains',\n },\n {\n pattern: '^https?\\\\:\\\\/.*[\\\\?\\\\&]irgwc=',\n kind: 'regex',\n comment: 'IMPACT landing page param on landing from piedotorg/standdown-domains',\n },\n {\n pattern: '^https?\\\\:\\\\/\\\\/prf.hn/',\n kind: 'regex',\n comment: 'PZ general affiliate link from piedotorg/standdown-domains',\n },\n {\n pattern: '^https?\\\\:\\\\/\\\\/www\\\\.awin1.com/',\n kind: 'regex',\n comment: 'AW general affiliate link from piedotorg/standdown-domains',\n },\n {\n pattern: '^https?\\\\:\\\\/\\\\/track\\\\.webgains\\\\.com/',\n kind: 'regex',\n comment: 'Webgains general affiliate link from piedotorg/standdown-domains',\n },\n {\n pattern: '^https?\\\\:\\\\/\\\\/shrsl.com/',\n kind: 'regex',\n comment: 'Sharesale shortened affiliate link from piedotorg/standdown-domains',\n },\n {\n pattern: '^https?\\\\:\\\\/\\\\/www\\\\.shareasale.com/',\n kind: 'regex',\n comment: 'Sharesale general affiliate link from piedotorg/standdown-domains',\n },\n {\n pattern: '^https?\\\\:\\\\/\\\\/howl\\\\.link\\\\/link',\n kind: 'regex',\n comment: 'Howl partner general affiliate link from piedotorg/standdown-domains',\n },\n {\n pattern: '^https:\\\\/\\\\/[\\\\w]+\\\\.ebay.*[\\\\?\\\\&](mkcid=|campid=|mkevt=)',\n kind: 'regex',\n comment: 'EBAY affiliate query param from piedotorg/standdown-domains',\n },\n ],\n },\n standdown: cocDefaults,\n activation: { mode: 'user-click' },\n metadata: {\n sourceUrl: PIE_STANDDOWN_DOMAINS_URL,\n lastVerified: LAST_VERIFIED,\n notes:\n 'Full piedotorg/standdown-domains rule set imported under MIT license; duration semantics use Affiliate Software Code of Conduct defaults.',\n },\n} as const satisfies StanddownPolicy;\n\nexport const allPolicies = [\n cjPolicy,\n impactPolicy,\n rakutenPolicy,\n awinPolicy,\n shareasalePolicy,\n ebayEpnPolicy,\n amazonPolicy,\n sovrnSkimlinksPolicy,\n partnerizePolicy,\n universalPolicy,\n] as const satisfies readonly StanddownPolicy[];\n\nexport function policiesFor(networks: readonly string[]): StanddownPolicy[] {\n const wanted = new Set(networks);\n\n return allPolicies.filter(\n (policy) => wanted.has(policy.id) || wanted.has(policy.network.id),\n );\n}\n"]}
1
+ {"version":3,"sources":["../src/policies.ts"],"names":[],"mappings":"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","file":"policies.mjs","sourcesContent":["import type { Behavior, StanddownPolicy } from './types';\n\nconst LAST_VERIFIED = '2026-07-10';\n// session-only: no minimum floor. A `session-or-min` stand-down stays active for\n// the lifetime of its session record regardless of this value, so 0 means \"lasts\n// exactly the session, with no extra timed minimum\" (matches networks that set no\n// stand-down TTL in production).\nconst SESSION_ONLY_MIN_MS = 0;\nconst SIXTY_MINUTES_MS = 3_600_000;\nconst COC_INACTIVITY_MS = 3_600_000;\nconst COC_FALLBACK_MIN_MS = 5_400_000;\nconst PIE_STANDDOWN_DOMAINS_URL =\n 'https://raw.githubusercontent.com/piedotorg/standdown-domains/main/standdown-domains.json';\n\nconst standdownBehaviors = [\n 'suppress-prompts',\n 'no-cookie-write',\n 'no-redirect',\n 'no-background-tracking',\n] as const satisfies readonly Behavior[];\n\nexport const cocDefaults = {\n scope: 'advertiser',\n sessionRule: 'inactivity-window',\n minDurationMs: COC_FALLBACK_MIN_MS,\n inactivityMs: COC_INACTIVITY_MS,\n behaviors: standdownBehaviors,\n} as const satisfies StanddownPolicy['standdown'];\n\nexport const cjPolicy = {\n id: 'cj',\n schemaVersion: 3,\n policyVersion: '0.1.0',\n network: {\n id: 'cj',\n name: 'CJ Affiliate',\n policyUrl: 'https://www.cj.com/legal/software-policy',\n },\n detection: {\n landingParams: [\n { anyOf: [{ allOf: [{ name: 'cjevent' }] }] },\n { anyOf: [{ allOf: [{ name: 'cjdata' }] }] },\n {\n anyOf: [\n { allOf: [{ name: 'utm_source', value: 'cj', match: 'equals' }] },\n ],\n },\n {\n anyOf: [{ allOf: [{ name: 'sf_cs', value: 'cj', match: 'equals' }] }],\n },\n {\n anyOf: [{ allOf: [{ name: 'afsrc', value: '1', match: 'equals' }] }],\n },\n ],\n redirectDomains: [\n { pattern: 'anrdoezrs.net', kind: 'suffix', comment: 'CJ rotating domain' },\n {\n pattern: 'commission-junction.com',\n kind: 'suffix',\n comment: 'CJ rotating domain',\n },\n { pattern: 'dpbolvw.net', kind: 'suffix', comment: 'CJ rotating domain' },\n { pattern: 'apmebf.com', kind: 'suffix', comment: 'CJ rotating domain' },\n { pattern: 'jdoqocy.com', kind: 'suffix', comment: 'CJ rotating domain' },\n { pattern: 'kqzyfj.com', kind: 'suffix', comment: 'CJ rotating domain' },\n { pattern: 'qksrv.net', kind: 'suffix', comment: 'CJ rotating domain' },\n { pattern: 'tkqlhce.com', kind: 'suffix', comment: 'CJ rotating domain' },\n { pattern: 'qksz.net', kind: 'suffix', comment: 'CJ rotating domain' },\n { pattern: 'afcyhf.com', kind: 'suffix', comment: 'CJ rotating domain' },\n { pattern: 'awltovhc.com', kind: 'suffix', comment: 'CJ rotating domain' },\n { pattern: 'ftjcfx.com', kind: 'suffix', comment: 'CJ rotating domain' },\n { pattern: 'lduhtrp.net', kind: 'suffix', comment: 'CJ rotating domain' },\n { pattern: 'tqlkg.com', kind: 'suffix', comment: 'CJ rotating domain' },\n { pattern: 'awxibrm.com', kind: 'suffix', comment: 'CJ rotating domain' },\n { pattern: 'cualbr.com', kind: 'suffix', comment: 'CJ rotating domain' },\n { pattern: 'rnsfpw.net', kind: 'suffix', comment: 'CJ rotating domain' },\n { pattern: 'vofzpwh.com', kind: 'suffix', comment: 'CJ rotating domain' },\n { pattern: 'yceml.net', kind: 'suffix', comment: 'CJ rotating domain' },\n ],\n cookiePatterns: [\n { name: 'cje', match: 'substring' },\n { name: 'cjevent_dc', match: 'substring' },\n ],\n },\n standdown: {\n scope: 'advertiser',\n sessionRule: 'session-or-min',\n minDurationMs: SIXTY_MINUTES_MS,\n behaviors: standdownBehaviors,\n },\n activation: { mode: 'user-click' },\n metadata: {\n sourceUrl: 'https://www.cj.com/legal/software-policy',\n lastVerified: LAST_VERIFIED,\n notes:\n 'CJ policy cites CJ domains, afsrc=1, and cjevent; rotating domain list is attributed to piedotorg/standdown-domains. Minimum stand-down duration (60m) is calibrated to production enforcement (Dupe standDownCookieDuration=60).',\n },\n} as const satisfies StanddownPolicy;\n\nexport const impactPolicy = {\n id: 'impact',\n schemaVersion: 3,\n policyVersion: '0.1.0',\n network: {\n id: 'impact',\n name: 'Impact',\n policyUrl: 'https://impact.com/stand-down-policy.ihtml',\n },\n detection: {\n landingParams: [\n {\n anyOf: [{ allOf: [{ name: 'afsrc', value: '1', match: 'equals' }] }],\n },\n { anyOf: [{ allOf: [{ name: 'irclickid' }] }] },\n { anyOf: [{ allOf: [{ name: 'irgwc' }] }] },\n ],\n cookiePatterns: [{ name: 'im_ref', match: 'substring' }],\n },\n standdown: {\n scope: 'advertiser',\n sessionRule: 'session-or-min',\n minDurationMs: SESSION_ONLY_MIN_MS,\n behaviors: standdownBehaviors,\n },\n activation: { mode: 'user-click' },\n metadata: {\n sourceUrl: 'https://impact.com/stand-down-policy.ihtml',\n lastVerified: LAST_VERIFIED,\n notes:\n 'Impact stand-down policy URL and irclickid/im_ref signals are from pre-build research; irgwc is attributed to piedotorg/standdown-domains. Session-only (no minimum) matches production enforcement, which sets no stand-down TTL.',\n },\n} as const satisfies StanddownPolicy;\n\nexport const rakutenPolicy = {\n id: 'rakuten',\n schemaVersion: 3,\n policyVersion: '0.1.0',\n network: {\n id: 'rakuten',\n name: 'Rakuten Advertising',\n policyUrl: 'https://github.com/rakutenrewards/PublisherStandown-SDK',\n },\n detection: {\n landingParams: [\n {\n anyOf: [\n {\n allOf: [{ name: 'ranMID' }, { name: 'ranEAID' }, { name: 'ranSiteID' }],\n },\n { allOf: [{ name: 'ranEAID' }, { name: 'ranSiteID' }] },\n { allOf: [{ name: 'ranSiteID' }] },\n { allOf: [{ name: 'siteID' }] },\n ],\n },\n ],\n redirectDomains: [\n { pattern: 'click.linksynergy.com', kind: 'suffix' },\n { pattern: 'linksynergy.jrs5.com', kind: 'suffix' },\n { pattern: 'tk.jrs5.com', kind: 'suffix' },\n {\n pattern: '(^|\\\\.)linksynergy\\\\.[a-z]+$',\n kind: 'regex',\n comment: 'linksynergy.* domain family',\n },\n ],\n cookiePatterns: [\n { name: 'lsclick_mid', match: 'substring' },\n { name: 'linkshare', match: 'substring' },\n ],\n },\n standdown: {\n scope: 'advertiser',\n sessionRule: 'session-or-min',\n minDurationMs: SESSION_ONLY_MIN_MS,\n behaviors: standdownBehaviors,\n },\n activation: { mode: 'user-click' },\n metadata: {\n sourceUrl: 'https://github.com/rakutenrewards/PublisherStandown-SDK',\n lastVerified: LAST_VERIFIED,\n notes:\n 'Rakuten SDK is detection-only and ships no policies; duration uses CoC fallback because the public source describes browser-session semantics without a fixed millisecond value.',\n },\n} as const satisfies StanddownPolicy;\n\nexport const awinPolicy = {\n id: 'awin',\n schemaVersion: 3,\n policyVersion: '0.1.0',\n network: {\n id: 'awin',\n name: 'Awin',\n policyUrl:\n 'https://success.awin.com/s/article/Downloadable-Software-Guidelines',\n },\n detection: {\n landingParams: [\n { anyOf: [{ allOf: [{ name: 'awc' }] }] },\n {\n anyOf: [\n { allOf: [{ name: 'utm_source', value: 'aw', match: 'equals' }] },\n ],\n },\n {\n anyOf: [{ allOf: [{ name: 'source', value: 'aw', match: 'equals' }] }],\n },\n ],\n redirectDomains: [{ pattern: 'awin1.com', kind: 'suffix' }],\n },\n standdown: cocDefaults,\n activation: { mode: 'user-click' },\n metadata: {\n sourceUrl:\n 'https://success.awin.com/s/article/Downloadable-Software-Guidelines',\n lastVerified: LAST_VERIFIED,\n notes:\n 'Awin awc/awin1.com signals are from pre-build research, Awin downloadable-software guidance, Awin Soft Click status docs, and piedotorg/standdown-domains. CoC inactivity-window defaults are broader than the seed table session-or-min entry and are ratified by SPEC A5.',\n },\n} as const satisfies StanddownPolicy;\n\nexport const shareasalePolicy = {\n id: 'shareasale',\n schemaVersion: 3,\n policyVersion: '0.1.0',\n network: {\n id: 'shareasale',\n name: 'ShareASale',\n policyUrl:\n 'https://success.awin.com/s/article/Downloadable-Software-Guidelines',\n },\n detection: {\n landingParams: [{ anyOf: [{ allOf: [{ name: 'sscid' }] }] }],\n redirectDomains: [\n { pattern: 'shareasale.com', kind: 'suffix' },\n { pattern: 'shrsl.com', kind: 'suffix' },\n ],\n cookiePatterns: [{ name: 'sscid', match: 'substring' }],\n },\n standdown: cocDefaults,\n activation: { mode: 'user-click' },\n metadata: {\n sourceUrl:\n 'https://success.awin.com/s/article/Downloadable-Software-Guidelines',\n lastVerified: LAST_VERIFIED,\n notes:\n 'ShareASale is Awin-owned and is treated under Awin downloadable-software/CoC guidance. sscid/shareasale.com/shrsl.com signals are from pre-build research and piedotorg/standdown-domains. CoC inactivity-window defaults are broader than the seed table session-or-min entry and are ratified by SPEC A5.',\n },\n} as const satisfies StanddownPolicy;\n\nexport const ebayEpnPolicy = {\n id: 'ebay-epn',\n schemaVersion: 3,\n policyVersion: '0.1.0',\n network: {\n id: 'ebay-epn',\n name: 'eBay Partner Network',\n policyUrl: 'https://partnernetwork.ebay.com/browser-extension-policy',\n },\n detection: {\n advertiserHosts: [\n {\n pattern: '(^|\\\\.)ebay\\\\.[a-z.]+$',\n kind: 'regex',\n comment: 'Scope eBay journey-only rules to eBay advertiser hosts',\n },\n ],\n landingParams: [\n {\n anyOf: [\n { allOf: [{ name: 'campid' }] },\n { allOf: [{ name: 'pubid' }] },\n { allOf: [{ name: 'mkevt' }] },\n { allOf: [{ name: 'mkcid' }] },\n { allOf: [{ name: 'mkrid' }] },\n { allOf: [{ name: 'campid' }, { name: '_trkparms' }] },\n { allOf: [{ name: 'mktype' }, { name: 'gclid' }] },\n ],\n },\n ],\n redirectDomains: [{ pattern: 'rover.ebay.com', kind: 'suffix' }],\n initiatorRules: [\n {\n referrerClass: 'other',\n reason: 'non-approved source during eBay journey',\n },\n ],\n },\n standdown: cocDefaults,\n activation: {\n mode: 'user-click',\n allowedReferrerClasses: ['own-site', 'organic', 'direct'],\n },\n metadata: {\n sourceUrl: 'https://partnernetwork.ebay.com/browser-extension-policy',\n lastVerified: LAST_VERIFIED,\n notes:\n 'eBay referrer requirements are from pre-build research; landing params and rover.ebay.com are also attributed to piedotorg/standdown-domains.',\n },\n} as const satisfies StanddownPolicy;\n\nexport const amazonPolicy = {\n id: 'amazon',\n schemaVersion: 3,\n policyVersion: '0.1.0',\n network: {\n id: 'amazon',\n name: 'Amazon Associates',\n policyUrl: 'https://affiliate-program.amazon.com/help/operating/policies',\n },\n detection: {\n advertiserHosts: [\n {\n pattern: '(^|\\\\.)amazon\\\\.[a-z.]+$',\n kind: 'regex',\n comment: 'Scope Amazon tag detection to Amazon advertiser hosts',\n },\n ],\n landingParams: [{ anyOf: [{ allOf: [{ name: 'tag' }] }] }],\n },\n standdown: {\n scope: 'advertiser',\n sessionRule: 'session-or-min',\n minDurationMs: COC_FALLBACK_MIN_MS,\n behaviors: standdownBehaviors,\n },\n activation: { mode: 'never' },\n metadata: {\n sourceUrl: 'https://affiliate-program.amazon.com/help/operating/policies',\n lastVerified: LAST_VERIFIED,\n notes:\n 'Amazon forbids Special Links in browser extensions; tag is detected for attribution visibility, but activation is never allowed.',\n },\n} as const satisfies StanddownPolicy;\n\nexport const sovrnSkimlinksPolicy = {\n id: 'sovrn-skimlinks',\n schemaVersion: 3,\n policyVersion: '0.1.0',\n network: {\n id: 'sovrn-skimlinks',\n name: 'Sovrn / Skimlinks',\n policyUrl:\n 'https://www.sovrn.com/sovrn-commerce-publisher-code-of-conduct/',\n },\n detection: {\n // Low-confidence entry from research/domain knowledge; keep visible for audit.\n redirectDomains: [\n { pattern: 'go.skimresources.com', kind: 'suffix' },\n { pattern: 'go.redirectingat.com', kind: 'suffix' },\n ],\n },\n standdown: cocDefaults,\n activation: { mode: 'user-click' },\n metadata: {\n sourceUrl:\n 'https://www.sovrn.com/sovrn-commerce-publisher-code-of-conduct/',\n lastVerified: LAST_VERIFIED,\n notes:\n 'unverified against network docs; redirect domains from domain knowledge. CoC inactivity-window defaults are broader than the seed table session-or-min entry and are ratified by SPEC A5.',\n },\n} as const satisfies StanddownPolicy;\n\nexport const partnerizePolicy = {\n id: 'partnerize',\n schemaVersion: 3,\n policyVersion: '0.1.0',\n network: {\n id: 'partnerize',\n name: 'Partnerize',\n policyUrl: 'https://partnerize.com/legal/terms-and-conditions/',\n },\n detection: {\n landingParams: [{ anyOf: [{ allOf: [{ name: 'clickref' }] }] }],\n // Low-confidence entry from research/domain knowledge; keep visible for audit.\n redirectDomains: [{ pattern: 'prf.hn', kind: 'suffix' }],\n },\n standdown: cocDefaults,\n activation: { mode: 'user-click' },\n metadata: {\n sourceUrl: 'https://partnerize.com/legal/terms-and-conditions/',\n lastVerified: LAST_VERIFIED,\n notes:\n 'unverified against network docs; prf.hn redirect domain from domain knowledge. CoC inactivity-window defaults are broader than the seed table session-or-min entry and are ratified by SPEC A5.',\n },\n} as const satisfies StanddownPolicy;\n\nexport const universalPolicy = {\n id: 'universal',\n schemaVersion: 3,\n policyVersion: '0.1.0',\n network: {\n id: 'universal',\n name: 'Universal affiliate source',\n policyUrl: 'https://github.com/piedotorg/standdown-domains',\n },\n detection: {\n landingParams: [\n {\n anyOf: [{ allOf: [{ name: 'afsrc', value: '1', match: 'equals' }] }],\n },\n ],\n redirectDomains: [\n {\n pattern: '^https?\\\\:\\\\/.*[\\\\?\\\\&]afsrc=1',\n kind: 'regex',\n comment: 'Universal standdown parameter from piedotorg/standdown-domains',\n },\n {\n pattern: '^https?:\\\\/\\\\/www\\\\.youtube\\\\.com\\\\/redirect',\n kind: 'regex',\n comment: 'YouTube redirect to a merchant from piedotorg/standdown-domains',\n },\n {\n pattern: '^https?\\\\:\\\\/\\\\/www\\\\.anrdoezrs\\\\.net\\\\/',\n kind: 'regex',\n comment: 'CJ rotating domain from piedotorg/standdown-domains',\n },\n {\n pattern: '^https?\\\\:\\\\/\\\\/www\\\\.commission-junction\\\\.com\\\\/',\n kind: 'regex',\n comment: 'CJ rotating domain from piedotorg/standdown-domains',\n },\n {\n pattern: '^https?\\\\:\\\\/\\\\/www\\\\.dpbolvw\\\\.net\\\\/',\n kind: 'regex',\n comment: 'CJ rotating domain from piedotorg/standdown-domains',\n },\n {\n pattern: '^https?\\\\:\\\\/\\\\/www\\\\.apmebf\\\\.com\\\\/',\n kind: 'regex',\n comment: 'CJ rotating domain from piedotorg/standdown-domains',\n },\n {\n pattern: '^https?\\\\:\\\\/\\\\/www\\\\.jdoqocy\\\\.com\\\\/',\n kind: 'regex',\n comment: 'CJ rotating domain from piedotorg/standdown-domains',\n },\n {\n pattern: '^https?\\\\:\\\\/\\\\/www\\\\.kqzyfj\\\\.com\\\\/',\n kind: 'regex',\n comment: 'CJ rotating domain from piedotorg/standdown-domains',\n },\n {\n pattern: '^https?\\\\:\\\\/\\\\/www\\\\.qksrv\\\\.net\\\\/',\n kind: 'regex',\n comment: 'CJ rotating domain from piedotorg/standdown-domains',\n },\n {\n pattern: '^https?\\\\:\\\\/\\\\/www\\\\.tkqlhce\\\\.com\\\\/',\n kind: 'regex',\n comment: 'CJ rotating domain from piedotorg/standdown-domains',\n },\n {\n pattern: '^https?\\\\:\\\\/\\\\/www\\\\.qksz\\\\.net\\\\/',\n kind: 'regex',\n comment: 'CJ rotating domain from piedotorg/standdown-domains',\n },\n {\n pattern: '^https?\\\\:\\\\/\\\\/www\\\\.afcyhf\\\\.com\\\\/',\n kind: 'regex',\n comment: 'CJ rotating domain from piedotorg/standdown-domains',\n },\n {\n pattern: '^https?\\\\:\\\\/\\\\/www\\\\.awltovhc\\\\.com\\\\/',\n kind: 'regex',\n comment: 'CJ rotating domain from piedotorg/standdown-domains',\n },\n {\n pattern: '^https?\\\\:\\\\/\\\\/www\\\\.ftjcfx\\\\.com\\\\/',\n kind: 'regex',\n comment: 'CJ rotating domain from piedotorg/standdown-domains',\n },\n {\n pattern: '^https?\\\\:\\\\/\\\\/www\\\\.lduhtrp\\\\.net\\\\/',\n kind: 'regex',\n comment: 'CJ rotating domain from piedotorg/standdown-domains',\n },\n {\n pattern: '^https?\\\\:\\\\/\\\\/www\\\\.tqlkg\\\\.com\\\\/',\n kind: 'regex',\n comment: 'CJ rotating domain from piedotorg/standdown-domains',\n },\n {\n pattern: '^https?\\\\:\\\\/\\\\/www\\\\.awxibrm\\\\.com\\\\/',\n kind: 'regex',\n comment: 'CJ rotating domain from piedotorg/standdown-domains',\n },\n {\n pattern: '^https?\\\\:\\\\/\\\\/www\\\\.cualbr\\\\.com\\\\/',\n kind: 'regex',\n comment: 'CJ rotating domain from piedotorg/standdown-domains',\n },\n {\n pattern: '^https?\\\\:\\\\/\\\\/www\\\\.rnsfpw\\\\.net\\\\/',\n kind: 'regex',\n comment: 'CJ rotating domain from piedotorg/standdown-domains',\n },\n {\n pattern: '^https?\\\\:\\\\/\\\\/www\\\\.vofzpwh\\\\.com\\\\/',\n kind: 'regex',\n comment: 'CJ rotating domain from piedotorg/standdown-domains',\n },\n {\n pattern: '^https?\\\\:\\\\/\\\\/www\\\\.yceml\\\\.net\\\\/',\n kind: 'regex',\n comment: 'CJ rotating domain from piedotorg/standdown-domains',\n },\n {\n pattern: '^https?\\\\:\\\\/.*[\\\\?\\\\&]cjevent=',\n kind: 'regex',\n comment: 'CJ general link param from piedotorg/standdown-domains',\n },\n {\n pattern: '^https?\\\\:\\\\/.*[\\\\?\\\\&]ranEAID=',\n kind: 'regex',\n comment: 'RAN general link param on landing from piedotorg/standdown-domains',\n },\n {\n pattern: '^https?\\\\:\\\\/\\\\/tk\\\\.jrs5\\\\.com\\\\/',\n kind: 'regex',\n comment: 'RAN domain from piedotorg/standdown-domains',\n },\n {\n pattern: '^https?\\\\:\\\\/\\\\/linksynergy\\\\.jrs5\\\\.com\\\\/',\n kind: 'regex',\n comment: 'RAN domain from piedotorg/standdown-domains',\n },\n {\n pattern: '^https?\\\\:\\\\/\\\\/click\\\\.linksynergy\\\\.com\\\\/',\n kind: 'regex',\n comment: 'RAN domain from piedotorg/standdown-domains',\n },\n {\n pattern: '^https?\\\\:\\\\/\\\\/www\\\\.gopjn\\\\.com\\\\/t',\n kind: 'regex',\n comment: 'ASC partner domain from piedotorg/standdown-domains',\n },\n {\n pattern: '^https?\\\\:\\\\/\\\\/www\\\\.pjatr\\\\.com\\\\/t',\n kind: 'regex',\n comment: 'ASC partner domain from piedotorg/standdown-domains',\n },\n {\n pattern: '^https?\\\\:\\\\/\\\\/www\\\\.pjtra\\\\.com\\\\/t',\n kind: 'regex',\n comment: 'ASC partner domain from piedotorg/standdown-domains',\n },\n {\n pattern: '^https?\\\\:\\\\/\\\\/www\\\\.pntra\\\\.com\\\\/t\\\\/\\\\w+-\\\\w+',\n kind: 'regex',\n comment: 'ASC partner domain from piedotorg/standdown-domains',\n },\n {\n pattern: '^https?\\\\:\\\\/\\\\/www\\\\.pntrac\\\\.com\\\\/t\\\\/\\\\w+-\\\\w+',\n kind: 'regex',\n comment: 'ASC partner domain from piedotorg/standdown-domains',\n },\n {\n pattern: '^https?\\\\:\\\\/\\\\/www\\\\.pntrs\\\\.com\\\\/t\\\\/\\\\w+-\\\\w+',\n kind: 'regex',\n comment: 'ASC partner domain from piedotorg/standdown-domains',\n },\n {\n pattern: '^https?\\\\:\\\\/.*\\\\.pepperjamnetwork\\\\.com',\n kind: 'regex',\n comment: 'ASC partner domain from piedotorg/standdown-domains',\n },\n {\n pattern: '^https?\\\\:\\\\/.*[\\\\?\\\\&]irgwc=',\n kind: 'regex',\n comment: 'IMPACT landing page param on landing from piedotorg/standdown-domains',\n },\n {\n pattern: '^https?\\\\:\\\\/\\\\/prf.hn/',\n kind: 'regex',\n comment: 'PZ general affiliate link from piedotorg/standdown-domains',\n },\n {\n pattern: '^https?\\\\:\\\\/\\\\/www\\\\.awin1.com/',\n kind: 'regex',\n comment: 'AW general affiliate link from piedotorg/standdown-domains',\n },\n {\n pattern: '^https?\\\\:\\\\/\\\\/track\\\\.webgains\\\\.com/',\n kind: 'regex',\n comment: 'Webgains general affiliate link from piedotorg/standdown-domains',\n },\n {\n pattern: '^https?\\\\:\\\\/\\\\/shrsl.com/',\n kind: 'regex',\n comment: 'Sharesale shortened affiliate link from piedotorg/standdown-domains',\n },\n {\n pattern: '^https?\\\\:\\\\/\\\\/www\\\\.shareasale.com/',\n kind: 'regex',\n comment: 'Sharesale general affiliate link from piedotorg/standdown-domains',\n },\n {\n pattern: '^https?\\\\:\\\\/\\\\/howl\\\\.link\\\\/link',\n kind: 'regex',\n comment: 'Howl partner general affiliate link from piedotorg/standdown-domains',\n },\n {\n pattern: '^https:\\\\/\\\\/[\\\\w]+\\\\.ebay.*[\\\\?\\\\&](mkcid=|campid=|mkevt=)',\n kind: 'regex',\n comment: 'EBAY affiliate query param from piedotorg/standdown-domains',\n },\n ],\n },\n standdown: cocDefaults,\n activation: { mode: 'user-click' },\n metadata: {\n sourceUrl: PIE_STANDDOWN_DOMAINS_URL,\n lastVerified: LAST_VERIFIED,\n notes:\n 'Full piedotorg/standdown-domains rule set imported under MIT license; duration semantics use Affiliate Software Code of Conduct defaults.',\n },\n} as const satisfies StanddownPolicy;\n\n/**\n * Verified policy packs, safe to enable by default. Every entry here has a\n * cited `metadata.sourceUrl` and detection rules attributed to a network policy\n * or the piedotorg/standdown-domains list, and is enforced by\n * `scripts/policies-cite-check.mjs`.\n */\nexport const allPolicies = [\n cjPolicy,\n impactPolicy,\n rakutenPolicy,\n awinPolicy,\n shareasalePolicy,\n ebayEpnPolicy,\n amazonPolicy,\n universalPolicy,\n] as const satisfies readonly StanddownPolicy[];\n\n/**\n * Low-confidence packs whose redirect domains are inferred from domain\n * knowledge rather than verified against network documentation. Kept out of\n * `allPolicies` so the default set stays trustworthy; opt in explicitly (import\n * this array or name the pack via `policiesFor`) once you have verified them for\n * your integration.\n */\nexport const experimentalPolicies = [\n sovrnSkimlinksPolicy,\n partnerizePolicy,\n] as const satisfies readonly StanddownPolicy[];\n\nconst knownPolicies: readonly StanddownPolicy[] = [\n ...allPolicies,\n ...experimentalPolicies,\n];\n\nexport function policiesFor(networks: readonly string[]): StanddownPolicy[] {\n const wanted = new Set(networks);\n\n return knownPolicies.filter(\n (policy) => wanted.has(policy.id) || wanted.has(policy.network.id),\n );\n}\n"]}
@@ -1,4 +1,4 @@
1
- import { a as StateStore, c as Signals, b as StanddownPolicy, D as Decision, h as AuditEntry, q as StanddownState } from './types-A9OJ7SWj.js';
1
+ import { a as StateStore, c as Signals, b as StanddownPolicy, D as Decision, h as AuditEntry, r as StanddownState } from './types-DgKvVCmQ.js';
2
2
 
3
3
  declare class MemoryStateStore implements StateStore {
4
4
  #private;
@@ -11,6 +11,15 @@ declare class StanddownSession {
11
11
  constructor(store: StateStore, opts?: {
12
12
  auditLog?: boolean;
13
13
  maxAuditEntries?: number;
14
+ /**
15
+ * How long a `selfPatterns` match suppresses stand-down for its
16
+ * advertiser host. `'policy'` (default) exempts only the navigation that
17
+ * carries the param. `'session'` persists the exemption for the host and
18
+ * re-applies it to that same network's detections on later param-less
19
+ * navigations — Dupe's `ignore_param` semantics. A session exemption never
20
+ * lifts an already-active stand-down and never covers a `disabled-host`.
21
+ */
22
+ selfExemptionScope?: 'policy' | 'session';
14
23
  });
15
24
  ingest(signals: Signals, policies: readonly StanddownPolicy[]): Promise<Decision>;
16
25
  shouldStandDown(advertiserHost: string, now: number): Promise<Decision>;
@@ -1,4 +1,4 @@
1
- import { a as StateStore, c as Signals, b as StanddownPolicy, D as Decision, h as AuditEntry, q as StanddownState } from './types-A9OJ7SWj.cjs';
1
+ import { a as StateStore, c as Signals, b as StanddownPolicy, D as Decision, h as AuditEntry, r as StanddownState } from './types-DgKvVCmQ.cjs';
2
2
 
3
3
  declare class MemoryStateStore implements StateStore {
4
4
  #private;
@@ -11,6 +11,15 @@ declare class StanddownSession {
11
11
  constructor(store: StateStore, opts?: {
12
12
  auditLog?: boolean;
13
13
  maxAuditEntries?: number;
14
+ /**
15
+ * How long a `selfPatterns` match suppresses stand-down for its
16
+ * advertiser host. `'policy'` (default) exempts only the navigation that
17
+ * carries the param. `'session'` persists the exemption for the host and
18
+ * re-applies it to that same network's detections on later param-less
19
+ * navigations — Dupe's `ignore_param` semantics. A session exemption never
20
+ * lifts an already-active stand-down and never covers a `disabled-host`.
21
+ */
22
+ selfExemptionScope?: 'policy' | 'session';
14
23
  });
15
24
  ingest(signals: Signals, policies: readonly StanddownPolicy[]): Promise<Decision>;
16
25
  shouldStandDown(advertiserHost: string, now: number): Promise<Decision>;
@@ -1,4 +1,4 @@
1
- import { a as StateStore, q as StanddownState } from './types-A9OJ7SWj.js';
1
+ import { a as StateStore, r as StanddownState } from './types-DgKvVCmQ.js';
2
2
 
3
3
  interface ChromeRuntimeLike {
4
4
  lastError?: {
@@ -1,4 +1,4 @@
1
- import { a as StateStore, q as StanddownState } from './types-A9OJ7SWj.cjs';
1
+ import { a as StateStore, r as StanddownState } from './types-DgKvVCmQ.cjs';
2
2
 
3
3
  interface ChromeRuntimeLike {
4
4
  lastError?: {
@@ -42,6 +42,14 @@ interface StanddownPolicy {
42
42
  redirectDomains?: readonly DomainRule[];
43
43
  cookiePatterns?: readonly CookieRule[];
44
44
  initiatorRules?: readonly InitiatorRule[];
45
+ /**
46
+ * Hosts on which this network is treated as unconditionally attributed:
47
+ * any navigation whose advertiser host matches stands down regardless of
48
+ * params, cookies, or self-exemption. This is the "we do not operate here
49
+ * at all" primitive (the extension's `disable_domains`), for merchants
50
+ * where competing activation is never acceptable.
51
+ */
52
+ disableHosts?: readonly DomainRule[];
45
53
  };
46
54
  standdown: {
47
55
  scope: 'advertiser';
@@ -52,7 +60,6 @@ interface StanddownPolicy {
52
60
  };
53
61
  activation: {
54
62
  mode: 'user-click' | 'never';
55
- maxPromptsPerJourney?: number;
56
63
  allowedReferrerClasses?: readonly ('own-site' | 'organic' | 'direct')[];
57
64
  };
58
65
  metadata: {
@@ -77,9 +84,17 @@ interface Signals {
77
84
  initiator?: string;
78
85
  selfPatterns?: readonly SelfExemption[];
79
86
  publisherSites?: readonly string[];
87
+ /**
88
+ * How complete the collected signal set is. `'partial'` means the collector
89
+ * could not observe the full set (e.g. no redirect-chain / `webRequest`
90
+ * plane, as in the content adapter or a webNavigation-only webext adapter),
91
+ * so a *non*-stand-down decision may be a false negative. Defaults to `'full'`
92
+ * when omitted. Never carries user data.
93
+ */
94
+ signalCoverage?: 'full' | 'partial';
80
95
  now: number;
81
96
  }
82
- type MatchedRuleKind = 'landing-param' | 'redirect-domain' | 'cookie' | 'initiator';
97
+ type MatchedRuleKind = 'disabled-host' | 'landing-param' | 'redirect-domain' | 'cookie' | 'initiator';
83
98
  interface MatchedRule {
84
99
  policyId: string;
85
100
  networkId: string;
@@ -90,21 +105,31 @@ interface MatchedRule {
90
105
  reason: string;
91
106
  sourceUrl: string;
92
107
  }
108
+ interface SelfExemptScope {
109
+ policyId: string;
110
+ networkId: string;
111
+ }
93
112
  interface Detection {
94
113
  matched: MatchedRule[];
95
114
  selfMatch: boolean;
96
115
  /**
97
116
  * Highest-priority match for state decisions.
98
117
  *
99
- * Ordering is deterministic: redirect-domain > landing-param > cookie >
100
- * initiator. Ties keep the policy array order, then the rule order inside
101
- * that policy.
118
+ * Ordering is deterministic: disabled-host > redirect-domain > landing-param >
119
+ * cookie > initiator. Ties keep the policy array order, then the rule order
120
+ * inside that policy.
102
121
  */
103
122
  strongest?: {
104
123
  policyId: string;
105
124
  advertiserHost: string;
106
125
  reason: string;
107
126
  };
127
+ /**
128
+ * Policy/network scopes for which a scoped self-exemption matched this
129
+ * navigation. Used by `selfExemptionScope: 'session'` to persist the
130
+ * exemption for the advertiser host across later param-less navigations.
131
+ */
132
+ selfExemptScopes?: readonly SelfExemptScope[];
108
133
  failClosedReason?: string;
109
134
  }
110
135
  interface Decision {
@@ -113,8 +138,15 @@ interface Decision {
113
138
  reason: string;
114
139
  expiresAt?: number;
115
140
  behaviors: Behavior[];
116
- promptCount?: number;
117
141
  referrerClass?: ReferrerClass;
142
+ /**
143
+ * Set when this is a `standDown: false` decision reached from a partial signal
144
+ * set (`Signals.signalCoverage === 'partial'`): the "no stand-down" may be a
145
+ * false negative because the collector couldn't see everything. Integrators
146
+ * that want to fail fully closed can treat a degraded non-stand-down as a
147
+ * stand-down. Not set on stand-down decisions (over-suppression is safe).
148
+ */
149
+ degraded?: boolean;
118
150
  }
119
151
  interface UserGesture {
120
152
  isTrusted: boolean;
@@ -143,9 +175,23 @@ interface SessionRecord {
143
175
  inactivityMs?: number;
144
176
  behaviors: Behavior[];
145
177
  }
178
+ /**
179
+ * A session-scoped self-exemption grant for one advertiser host: the integrator's
180
+ * own attribution (via `selfPatterns`) was seen for these policies/networks, so
181
+ * later navigations to the host re-apply the exemption for those same scopes.
182
+ * Held for the lifetime of the session state; never lifts an already-active
183
+ * stand-down and never covers a `disabled-host` match.
184
+ */
185
+ interface ExemptionRecord {
186
+ advertiserHost: string;
187
+ policyIds: string[];
188
+ networkIds: string[];
189
+ grantedAt: number;
190
+ }
146
191
  interface StanddownState {
147
192
  sessions: Record<string, SessionRecord>;
148
193
  auditLog: AuditEntry[];
194
+ exemptions?: Record<string, ExemptionRecord>;
149
195
  }
150
196
  interface StateStore {
151
197
  load(): Promise<StanddownState | undefined>;
@@ -187,4 +233,4 @@ interface RakutenPolicyRuleV2 {
187
233
  reason?: string;
188
234
  }
189
235
 
190
- export type { ActivationBenefit as A, Behavior as B, CookieRule as C, Decision as D, InitiatorRule as I, MatchedRule as M, PolicyBundleVerificationResult as P, ReferrerClass as R, SelfExemption as S, UserGesture as U, StateStore as a, StanddownPolicy as b, Signals as c, SignedPolicyBundle as d, Detection as e, DomainRule as f, RakutenNetworkPolicyV2 as g, AuditEntry as h, MatchedRuleKind as i, ParamGroup as j, ParamMatchMode as k, ParamMatcher as l, ParamRule as m, RakutenPolicyRuleV2 as n, SessionRecord as o, SignedBundleSignatureAlgorithm as p, StanddownState as q };
236
+ export type { ActivationBenefit as A, Behavior as B, CookieRule as C, Decision as D, ExemptionRecord as E, InitiatorRule as I, MatchedRule as M, PolicyBundleVerificationResult as P, ReferrerClass as R, SelfExemption as S, UserGesture as U, StateStore as a, StanddownPolicy as b, Signals as c, SignedPolicyBundle as d, Detection as e, DomainRule as f, RakutenNetworkPolicyV2 as g, AuditEntry as h, MatchedRuleKind as i, ParamGroup as j, ParamMatchMode as k, ParamMatcher as l, ParamRule as m, RakutenPolicyRuleV2 as n, SelfExemptScope as o, SessionRecord as p, SignedBundleSignatureAlgorithm as q, StanddownState as r };
@@ -42,6 +42,14 @@ interface StanddownPolicy {
42
42
  redirectDomains?: readonly DomainRule[];
43
43
  cookiePatterns?: readonly CookieRule[];
44
44
  initiatorRules?: readonly InitiatorRule[];
45
+ /**
46
+ * Hosts on which this network is treated as unconditionally attributed:
47
+ * any navigation whose advertiser host matches stands down regardless of
48
+ * params, cookies, or self-exemption. This is the "we do not operate here
49
+ * at all" primitive (the extension's `disable_domains`), for merchants
50
+ * where competing activation is never acceptable.
51
+ */
52
+ disableHosts?: readonly DomainRule[];
45
53
  };
46
54
  standdown: {
47
55
  scope: 'advertiser';
@@ -52,7 +60,6 @@ interface StanddownPolicy {
52
60
  };
53
61
  activation: {
54
62
  mode: 'user-click' | 'never';
55
- maxPromptsPerJourney?: number;
56
63
  allowedReferrerClasses?: readonly ('own-site' | 'organic' | 'direct')[];
57
64
  };
58
65
  metadata: {
@@ -77,9 +84,17 @@ interface Signals {
77
84
  initiator?: string;
78
85
  selfPatterns?: readonly SelfExemption[];
79
86
  publisherSites?: readonly string[];
87
+ /**
88
+ * How complete the collected signal set is. `'partial'` means the collector
89
+ * could not observe the full set (e.g. no redirect-chain / `webRequest`
90
+ * plane, as in the content adapter or a webNavigation-only webext adapter),
91
+ * so a *non*-stand-down decision may be a false negative. Defaults to `'full'`
92
+ * when omitted. Never carries user data.
93
+ */
94
+ signalCoverage?: 'full' | 'partial';
80
95
  now: number;
81
96
  }
82
- type MatchedRuleKind = 'landing-param' | 'redirect-domain' | 'cookie' | 'initiator';
97
+ type MatchedRuleKind = 'disabled-host' | 'landing-param' | 'redirect-domain' | 'cookie' | 'initiator';
83
98
  interface MatchedRule {
84
99
  policyId: string;
85
100
  networkId: string;
@@ -90,21 +105,31 @@ interface MatchedRule {
90
105
  reason: string;
91
106
  sourceUrl: string;
92
107
  }
108
+ interface SelfExemptScope {
109
+ policyId: string;
110
+ networkId: string;
111
+ }
93
112
  interface Detection {
94
113
  matched: MatchedRule[];
95
114
  selfMatch: boolean;
96
115
  /**
97
116
  * Highest-priority match for state decisions.
98
117
  *
99
- * Ordering is deterministic: redirect-domain > landing-param > cookie >
100
- * initiator. Ties keep the policy array order, then the rule order inside
101
- * that policy.
118
+ * Ordering is deterministic: disabled-host > redirect-domain > landing-param >
119
+ * cookie > initiator. Ties keep the policy array order, then the rule order
120
+ * inside that policy.
102
121
  */
103
122
  strongest?: {
104
123
  policyId: string;
105
124
  advertiserHost: string;
106
125
  reason: string;
107
126
  };
127
+ /**
128
+ * Policy/network scopes for which a scoped self-exemption matched this
129
+ * navigation. Used by `selfExemptionScope: 'session'` to persist the
130
+ * exemption for the advertiser host across later param-less navigations.
131
+ */
132
+ selfExemptScopes?: readonly SelfExemptScope[];
108
133
  failClosedReason?: string;
109
134
  }
110
135
  interface Decision {
@@ -113,8 +138,15 @@ interface Decision {
113
138
  reason: string;
114
139
  expiresAt?: number;
115
140
  behaviors: Behavior[];
116
- promptCount?: number;
117
141
  referrerClass?: ReferrerClass;
142
+ /**
143
+ * Set when this is a `standDown: false` decision reached from a partial signal
144
+ * set (`Signals.signalCoverage === 'partial'`): the "no stand-down" may be a
145
+ * false negative because the collector couldn't see everything. Integrators
146
+ * that want to fail fully closed can treat a degraded non-stand-down as a
147
+ * stand-down. Not set on stand-down decisions (over-suppression is safe).
148
+ */
149
+ degraded?: boolean;
118
150
  }
119
151
  interface UserGesture {
120
152
  isTrusted: boolean;
@@ -143,9 +175,23 @@ interface SessionRecord {
143
175
  inactivityMs?: number;
144
176
  behaviors: Behavior[];
145
177
  }
178
+ /**
179
+ * A session-scoped self-exemption grant for one advertiser host: the integrator's
180
+ * own attribution (via `selfPatterns`) was seen for these policies/networks, so
181
+ * later navigations to the host re-apply the exemption for those same scopes.
182
+ * Held for the lifetime of the session state; never lifts an already-active
183
+ * stand-down and never covers a `disabled-host` match.
184
+ */
185
+ interface ExemptionRecord {
186
+ advertiserHost: string;
187
+ policyIds: string[];
188
+ networkIds: string[];
189
+ grantedAt: number;
190
+ }
146
191
  interface StanddownState {
147
192
  sessions: Record<string, SessionRecord>;
148
193
  auditLog: AuditEntry[];
194
+ exemptions?: Record<string, ExemptionRecord>;
149
195
  }
150
196
  interface StateStore {
151
197
  load(): Promise<StanddownState | undefined>;
@@ -187,4 +233,4 @@ interface RakutenPolicyRuleV2 {
187
233
  reason?: string;
188
234
  }
189
235
 
190
- export type { ActivationBenefit as A, Behavior as B, CookieRule as C, Decision as D, InitiatorRule as I, MatchedRule as M, PolicyBundleVerificationResult as P, ReferrerClass as R, SelfExemption as S, UserGesture as U, StateStore as a, StanddownPolicy as b, Signals as c, SignedPolicyBundle as d, Detection as e, DomainRule as f, RakutenNetworkPolicyV2 as g, AuditEntry as h, MatchedRuleKind as i, ParamGroup as j, ParamMatchMode as k, ParamMatcher as l, ParamRule as m, RakutenPolicyRuleV2 as n, SessionRecord as o, SignedBundleSignatureAlgorithm as p, StanddownState as q };
236
+ export type { ActivationBenefit as A, Behavior as B, CookieRule as C, Decision as D, ExemptionRecord as E, InitiatorRule as I, MatchedRule as M, PolicyBundleVerificationResult as P, ReferrerClass as R, SelfExemption as S, UserGesture as U, StateStore as a, StanddownPolicy as b, Signals as c, SignedPolicyBundle as d, Detection as e, DomainRule as f, RakutenNetworkPolicyV2 as g, AuditEntry as h, MatchedRuleKind as i, ParamGroup as j, ParamMatchMode as k, ParamMatcher as l, ParamRule as m, RakutenPolicyRuleV2 as n, SelfExemptScope as o, SessionRecord as p, SignedBundleSignatureAlgorithm as q, StanddownState as r };