standdown 0.1.0 → 0.2.1
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.
- package/README.md +262 -18
- package/dist/{chunk-25A7QG5Z.mjs → chunk-26BG7FFX.mjs} +3 -3
- package/dist/{chunk-25A7QG5Z.mjs.map → chunk-26BG7FFX.mjs.map} +1 -1
- package/dist/{chunk-SEZFAOUU.mjs → chunk-JKQTHHIP.mjs} +49 -4
- package/dist/chunk-JKQTHHIP.mjs.map +1 -0
- package/dist/{chunk-SVN6UWA4.mjs → chunk-VE7YBR5A.mjs} +142 -24
- package/dist/chunk-VE7YBR5A.mjs.map +1 -0
- package/dist/content.cjs +188 -28
- package/dist/content.cjs.map +1 -1
- package/dist/content.d.cts +11 -4
- package/dist/content.d.ts +11 -4
- package/dist/content.mjs +18 -8
- package/dist/content.mjs.map +1 -1
- package/dist/index.cjs +140 -26
- package/dist/index.cjs.map +1 -1
- package/dist/index.d.cts +3 -3
- package/dist/index.d.ts +3 -3
- package/dist/index.mjs +3 -7
- package/dist/index.mjs.map +1 -1
- package/dist/policies.cjs +18 -11
- package/dist/policies.cjs.map +1 -1
- package/dist/policies.d.cts +98 -86
- package/dist/policies.d.ts +98 -86
- package/dist/policies.mjs +18 -12
- package/dist/policies.mjs.map +1 -1
- package/dist/{session-C5gH-LaQ.d.ts → session-DA9hkYlD.d.ts} +10 -1
- package/dist/{session-n0px3Agb.d.cts → session-iosT1mEL.d.cts} +10 -1
- package/dist/{stores-CELX9aHN.d.ts → stores-Behkya7C.d.ts} +1 -1
- package/dist/{stores-CKCdKDdX.d.cts → stores-DfovpSqe.d.cts} +1 -1
- package/dist/{types-A9OJ7SWj.d.cts → types-DgKvVCmQ.d.cts} +53 -7
- package/dist/{types-A9OJ7SWj.d.ts → types-DgKvVCmQ.d.ts} +53 -7
- package/dist/webext.cjs +191 -28
- package/dist/webext.cjs.map +1 -1
- package/dist/webext.d.cts +11 -4
- package/dist/webext.d.ts +11 -4
- package/dist/webext.mjs +22 -9
- package/dist/webext.mjs.map +1 -1
- package/package.json +3 -2
- package/dist/chunk-SEZFAOUU.mjs.map +0 -1
- 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
|
|
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:
|
|
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:
|
|
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:
|
|
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
|
|
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
|
|
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
|
package/dist/policies.mjs.map
CHANGED
|
@@ -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,
|
|
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,
|
|
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>;
|
|
@@ -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 >
|
|
100
|
-
* initiator. Ties keep the policy array order, then the rule order
|
|
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,
|
|
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 >
|
|
100
|
-
* initiator. Ties keep the policy array order, then the rule order
|
|
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,
|
|
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 };
|