standdown 0.1.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.
- package/LICENSE +21 -0
- package/POLICIES.md +44 -0
- package/README.md +171 -0
- package/dist/chunk-25A7QG5Z.mjs +274 -0
- package/dist/chunk-25A7QG5Z.mjs.map +1 -0
- package/dist/chunk-SEZFAOUU.mjs +382 -0
- package/dist/chunk-SEZFAOUU.mjs.map +1 -0
- package/dist/chunk-SVN6UWA4.mjs +857 -0
- package/dist/chunk-SVN6UWA4.mjs.map +1 -0
- package/dist/content.cjs +1288 -0
- package/dist/content.cjs.map +1 -0
- package/dist/content.d.cts +61 -0
- package/dist/content.d.ts +61 -0
- package/dist/content.mjs +201 -0
- package/dist/content.mjs.map +1 -0
- package/dist/index.cjs +1375 -0
- package/dist/index.cjs.map +1 -0
- package/dist/index.d.cts +29 -0
- package/dist/index.d.ts +29 -0
- package/dist/index.mjs +242 -0
- package/dist/index.mjs.map +1 -0
- package/dist/policies.cjs +620 -0
- package/dist/policies.cjs.map +1 -0
- package/dist/policies.d.cts +1517 -0
- package/dist/policies.d.ts +1517 -0
- package/dist/policies.mjs +606 -0
- package/dist/policies.mjs.map +1 -0
- package/dist/session-C5gH-LaQ.d.ts +21 -0
- package/dist/session-n0px3Agb.d.cts +21 -0
- package/dist/stores-CELX9aHN.d.ts +70 -0
- package/dist/stores-CKCdKDdX.d.cts +70 -0
- package/dist/types-A9OJ7SWj.d.cts +190 -0
- package/dist/types-A9OJ7SWj.d.ts +190 -0
- package/dist/webext.cjs +1733 -0
- package/dist/webext.cjs.map +1 -0
- package/dist/webext.d.cts +110 -0
- package/dist/webext.d.ts +110 -0
- package/dist/webext.mjs +346 -0
- package/dist/webext.mjs.map +1 -0
- package/package.json +77 -0
|
@@ -0,0 +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"]}
|
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
import { a as StateStore, c as Signals, b as StanddownPolicy, D as Decision, h as AuditEntry, q as StanddownState } from './types-A9OJ7SWj.js';
|
|
2
|
+
|
|
3
|
+
declare class MemoryStateStore implements StateStore {
|
|
4
|
+
#private;
|
|
5
|
+
constructor(initialState?: StanddownState);
|
|
6
|
+
load(): Promise<StanddownState | undefined>;
|
|
7
|
+
save(state: StanddownState): Promise<void>;
|
|
8
|
+
}
|
|
9
|
+
declare class StanddownSession {
|
|
10
|
+
#private;
|
|
11
|
+
constructor(store: StateStore, opts?: {
|
|
12
|
+
auditLog?: boolean;
|
|
13
|
+
maxAuditEntries?: number;
|
|
14
|
+
});
|
|
15
|
+
ingest(signals: Signals, policies: readonly StanddownPolicy[]): Promise<Decision>;
|
|
16
|
+
shouldStandDown(advertiserHost: string, now: number): Promise<Decision>;
|
|
17
|
+
recordActivity(now: number): Promise<void>;
|
|
18
|
+
exportAuditLog(): Promise<AuditEntry[]>;
|
|
19
|
+
}
|
|
20
|
+
|
|
21
|
+
export { MemoryStateStore as M, StanddownSession as S };
|
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
import { a as StateStore, c as Signals, b as StanddownPolicy, D as Decision, h as AuditEntry, q as StanddownState } from './types-A9OJ7SWj.cjs';
|
|
2
|
+
|
|
3
|
+
declare class MemoryStateStore implements StateStore {
|
|
4
|
+
#private;
|
|
5
|
+
constructor(initialState?: StanddownState);
|
|
6
|
+
load(): Promise<StanddownState | undefined>;
|
|
7
|
+
save(state: StanddownState): Promise<void>;
|
|
8
|
+
}
|
|
9
|
+
declare class StanddownSession {
|
|
10
|
+
#private;
|
|
11
|
+
constructor(store: StateStore, opts?: {
|
|
12
|
+
auditLog?: boolean;
|
|
13
|
+
maxAuditEntries?: number;
|
|
14
|
+
});
|
|
15
|
+
ingest(signals: Signals, policies: readonly StanddownPolicy[]): Promise<Decision>;
|
|
16
|
+
shouldStandDown(advertiserHost: string, now: number): Promise<Decision>;
|
|
17
|
+
recordActivity(now: number): Promise<void>;
|
|
18
|
+
exportAuditLog(): Promise<AuditEntry[]>;
|
|
19
|
+
}
|
|
20
|
+
|
|
21
|
+
export { MemoryStateStore as M, StanddownSession as S };
|
|
@@ -0,0 +1,70 @@
|
|
|
1
|
+
import { a as StateStore, q as StanddownState } from './types-A9OJ7SWj.js';
|
|
2
|
+
|
|
3
|
+
interface ChromeRuntimeLike {
|
|
4
|
+
lastError?: {
|
|
5
|
+
message?: string;
|
|
6
|
+
};
|
|
7
|
+
}
|
|
8
|
+
interface ChromeStorageAreaLike {
|
|
9
|
+
get(keys?: string | string[] | Record<string, unknown> | null, callback?: (items: Record<string, unknown>) => void): undefined | Promise<Record<string, unknown>>;
|
|
10
|
+
set(items: Record<string, unknown>, callback?: () => void): undefined | Promise<void>;
|
|
11
|
+
remove?(keys: string | string[], callback?: () => void): undefined | Promise<void>;
|
|
12
|
+
}
|
|
13
|
+
interface WebStorageLike {
|
|
14
|
+
getItem(key: string): string | null;
|
|
15
|
+
setItem(key: string, value: string): void;
|
|
16
|
+
removeItem(key: string): void;
|
|
17
|
+
}
|
|
18
|
+
interface ChromeLocalStateStoreOptions {
|
|
19
|
+
key?: string;
|
|
20
|
+
identityKey?: string;
|
|
21
|
+
runtime?: ChromeRuntimeLike;
|
|
22
|
+
sessionStorage?: ChromeStorageAreaLike;
|
|
23
|
+
sessionId?: string;
|
|
24
|
+
now?: () => number;
|
|
25
|
+
createSessionId?: () => string;
|
|
26
|
+
}
|
|
27
|
+
declare class ChromeLocalStateStore implements StateStore {
|
|
28
|
+
#private;
|
|
29
|
+
constructor(localStorage: ChromeStorageAreaLike, opts?: ChromeLocalStateStoreOptions);
|
|
30
|
+
load(): Promise<StanddownState | undefined>;
|
|
31
|
+
save(state: StanddownState): Promise<void>;
|
|
32
|
+
}
|
|
33
|
+
interface SessionStorageStateStoreOptions {
|
|
34
|
+
key?: string;
|
|
35
|
+
}
|
|
36
|
+
declare class SessionStorageStateStore implements StateStore {
|
|
37
|
+
#private;
|
|
38
|
+
constructor(storage: WebStorageLike, opts?: SessionStorageStateStoreOptions);
|
|
39
|
+
load(): Promise<StanddownState | undefined>;
|
|
40
|
+
save(state: StanddownState): Promise<void>;
|
|
41
|
+
}
|
|
42
|
+
interface LocalStorageTtlStateStoreOptions {
|
|
43
|
+
key?: string;
|
|
44
|
+
identityKey?: string;
|
|
45
|
+
/**
|
|
46
|
+
* Sliding envelope TTL for persisted session records. Every save refreshes
|
|
47
|
+
* `savedAt`; expiry removes session state only. Audit entries remain
|
|
48
|
+
* available so per-policy decisions can still be inspected. Policy-specific
|
|
49
|
+
* stand-down durations remain enforced by the core state machine.
|
|
50
|
+
*/
|
|
51
|
+
ttlMs: number;
|
|
52
|
+
/**
|
|
53
|
+
* Optional shared identity storage. Defaults to `localStorage` so multiple
|
|
54
|
+
* tabs in the same browser session do not invalidate each other's records.
|
|
55
|
+
*/
|
|
56
|
+
identityStorage?: WebStorageLike;
|
|
57
|
+
/** @deprecated Local-TTL identity is browser-session scoped, not tab scoped. */
|
|
58
|
+
sessionStorage?: WebStorageLike;
|
|
59
|
+
sessionId?: string;
|
|
60
|
+
now?: () => number;
|
|
61
|
+
createSessionId?: () => string;
|
|
62
|
+
}
|
|
63
|
+
declare class LocalStorageTtlStateStore implements StateStore {
|
|
64
|
+
#private;
|
|
65
|
+
constructor(localStorage: WebStorageLike, opts: LocalStorageTtlStateStoreOptions);
|
|
66
|
+
load(): Promise<StanddownState | undefined>;
|
|
67
|
+
save(state: StanddownState): Promise<void>;
|
|
68
|
+
}
|
|
69
|
+
|
|
70
|
+
export { type ChromeRuntimeLike as C, LocalStorageTtlStateStore as L, SessionStorageStateStore as S, type WebStorageLike as W, type ChromeStorageAreaLike as a, ChromeLocalStateStore as b };
|
|
@@ -0,0 +1,70 @@
|
|
|
1
|
+
import { a as StateStore, q as StanddownState } from './types-A9OJ7SWj.cjs';
|
|
2
|
+
|
|
3
|
+
interface ChromeRuntimeLike {
|
|
4
|
+
lastError?: {
|
|
5
|
+
message?: string;
|
|
6
|
+
};
|
|
7
|
+
}
|
|
8
|
+
interface ChromeStorageAreaLike {
|
|
9
|
+
get(keys?: string | string[] | Record<string, unknown> | null, callback?: (items: Record<string, unknown>) => void): undefined | Promise<Record<string, unknown>>;
|
|
10
|
+
set(items: Record<string, unknown>, callback?: () => void): undefined | Promise<void>;
|
|
11
|
+
remove?(keys: string | string[], callback?: () => void): undefined | Promise<void>;
|
|
12
|
+
}
|
|
13
|
+
interface WebStorageLike {
|
|
14
|
+
getItem(key: string): string | null;
|
|
15
|
+
setItem(key: string, value: string): void;
|
|
16
|
+
removeItem(key: string): void;
|
|
17
|
+
}
|
|
18
|
+
interface ChromeLocalStateStoreOptions {
|
|
19
|
+
key?: string;
|
|
20
|
+
identityKey?: string;
|
|
21
|
+
runtime?: ChromeRuntimeLike;
|
|
22
|
+
sessionStorage?: ChromeStorageAreaLike;
|
|
23
|
+
sessionId?: string;
|
|
24
|
+
now?: () => number;
|
|
25
|
+
createSessionId?: () => string;
|
|
26
|
+
}
|
|
27
|
+
declare class ChromeLocalStateStore implements StateStore {
|
|
28
|
+
#private;
|
|
29
|
+
constructor(localStorage: ChromeStorageAreaLike, opts?: ChromeLocalStateStoreOptions);
|
|
30
|
+
load(): Promise<StanddownState | undefined>;
|
|
31
|
+
save(state: StanddownState): Promise<void>;
|
|
32
|
+
}
|
|
33
|
+
interface SessionStorageStateStoreOptions {
|
|
34
|
+
key?: string;
|
|
35
|
+
}
|
|
36
|
+
declare class SessionStorageStateStore implements StateStore {
|
|
37
|
+
#private;
|
|
38
|
+
constructor(storage: WebStorageLike, opts?: SessionStorageStateStoreOptions);
|
|
39
|
+
load(): Promise<StanddownState | undefined>;
|
|
40
|
+
save(state: StanddownState): Promise<void>;
|
|
41
|
+
}
|
|
42
|
+
interface LocalStorageTtlStateStoreOptions {
|
|
43
|
+
key?: string;
|
|
44
|
+
identityKey?: string;
|
|
45
|
+
/**
|
|
46
|
+
* Sliding envelope TTL for persisted session records. Every save refreshes
|
|
47
|
+
* `savedAt`; expiry removes session state only. Audit entries remain
|
|
48
|
+
* available so per-policy decisions can still be inspected. Policy-specific
|
|
49
|
+
* stand-down durations remain enforced by the core state machine.
|
|
50
|
+
*/
|
|
51
|
+
ttlMs: number;
|
|
52
|
+
/**
|
|
53
|
+
* Optional shared identity storage. Defaults to `localStorage` so multiple
|
|
54
|
+
* tabs in the same browser session do not invalidate each other's records.
|
|
55
|
+
*/
|
|
56
|
+
identityStorage?: WebStorageLike;
|
|
57
|
+
/** @deprecated Local-TTL identity is browser-session scoped, not tab scoped. */
|
|
58
|
+
sessionStorage?: WebStorageLike;
|
|
59
|
+
sessionId?: string;
|
|
60
|
+
now?: () => number;
|
|
61
|
+
createSessionId?: () => string;
|
|
62
|
+
}
|
|
63
|
+
declare class LocalStorageTtlStateStore implements StateStore {
|
|
64
|
+
#private;
|
|
65
|
+
constructor(localStorage: WebStorageLike, opts: LocalStorageTtlStateStoreOptions);
|
|
66
|
+
load(): Promise<StanddownState | undefined>;
|
|
67
|
+
save(state: StanddownState): Promise<void>;
|
|
68
|
+
}
|
|
69
|
+
|
|
70
|
+
export { type ChromeRuntimeLike as C, LocalStorageTtlStateStore as L, SessionStorageStateStore as S, type WebStorageLike as W, type ChromeStorageAreaLike as a, ChromeLocalStateStore as b };
|
|
@@ -0,0 +1,190 @@
|
|
|
1
|
+
type Behavior = 'suppress-prompts' | 'no-cookie-write' | 'no-redirect' | 'no-background-tracking';
|
|
2
|
+
type ParamMatchMode = 'exists' | 'equals' | 'contains';
|
|
3
|
+
interface ParamMatcher {
|
|
4
|
+
name: string;
|
|
5
|
+
value?: string;
|
|
6
|
+
match?: ParamMatchMode;
|
|
7
|
+
}
|
|
8
|
+
interface ParamGroup {
|
|
9
|
+
allOf: readonly ParamMatcher[];
|
|
10
|
+
}
|
|
11
|
+
interface ParamRule {
|
|
12
|
+
anyOf: readonly ParamGroup[];
|
|
13
|
+
reason?: string;
|
|
14
|
+
}
|
|
15
|
+
interface CookieRule {
|
|
16
|
+
name: string;
|
|
17
|
+
match: 'exact' | 'substring';
|
|
18
|
+
reason?: string;
|
|
19
|
+
}
|
|
20
|
+
interface DomainRule {
|
|
21
|
+
pattern: string;
|
|
22
|
+
kind: 'suffix' | 'regex';
|
|
23
|
+
comment?: string;
|
|
24
|
+
}
|
|
25
|
+
type ReferrerClass = 'own-site' | 'organic' | 'direct' | 'advertiser-internal' | 'other';
|
|
26
|
+
interface InitiatorRule {
|
|
27
|
+
referrerClass: ReferrerClass;
|
|
28
|
+
reason?: string;
|
|
29
|
+
}
|
|
30
|
+
interface StanddownPolicy {
|
|
31
|
+
id: string;
|
|
32
|
+
schemaVersion: 3;
|
|
33
|
+
policyVersion: string;
|
|
34
|
+
network: {
|
|
35
|
+
id: string;
|
|
36
|
+
name: string;
|
|
37
|
+
policyUrl?: string;
|
|
38
|
+
};
|
|
39
|
+
detection: {
|
|
40
|
+
advertiserHosts?: readonly DomainRule[];
|
|
41
|
+
landingParams?: readonly ParamRule[];
|
|
42
|
+
redirectDomains?: readonly DomainRule[];
|
|
43
|
+
cookiePatterns?: readonly CookieRule[];
|
|
44
|
+
initiatorRules?: readonly InitiatorRule[];
|
|
45
|
+
};
|
|
46
|
+
standdown: {
|
|
47
|
+
scope: 'advertiser';
|
|
48
|
+
sessionRule: 'session-or-min' | 'inactivity-window';
|
|
49
|
+
minDurationMs: number;
|
|
50
|
+
inactivityMs?: number;
|
|
51
|
+
behaviors: readonly Behavior[];
|
|
52
|
+
};
|
|
53
|
+
activation: {
|
|
54
|
+
mode: 'user-click' | 'never';
|
|
55
|
+
maxPromptsPerJourney?: number;
|
|
56
|
+
allowedReferrerClasses?: readonly ('own-site' | 'organic' | 'direct')[];
|
|
57
|
+
};
|
|
58
|
+
metadata: {
|
|
59
|
+
sourceUrl: string;
|
|
60
|
+
lastVerified: string;
|
|
61
|
+
notes?: string;
|
|
62
|
+
};
|
|
63
|
+
}
|
|
64
|
+
interface SelfExemption extends ParamMatcher {
|
|
65
|
+
/**
|
|
66
|
+
* Self-exemptions only suppress a policy when scoped to that policy or network.
|
|
67
|
+
* Unscoped matches are reported as selfMatch but do not clear third-party matches.
|
|
68
|
+
*/
|
|
69
|
+
policyId?: string;
|
|
70
|
+
networkId?: string;
|
|
71
|
+
}
|
|
72
|
+
interface Signals {
|
|
73
|
+
url: string;
|
|
74
|
+
referrer?: string;
|
|
75
|
+
cookieNames?: readonly string[];
|
|
76
|
+
redirectChain?: readonly string[];
|
|
77
|
+
initiator?: string;
|
|
78
|
+
selfPatterns?: readonly SelfExemption[];
|
|
79
|
+
publisherSites?: readonly string[];
|
|
80
|
+
now: number;
|
|
81
|
+
}
|
|
82
|
+
type MatchedRuleKind = 'landing-param' | 'redirect-domain' | 'cookie' | 'initiator';
|
|
83
|
+
interface MatchedRule {
|
|
84
|
+
policyId: string;
|
|
85
|
+
networkId: string;
|
|
86
|
+
networkName: string;
|
|
87
|
+
kind: MatchedRuleKind;
|
|
88
|
+
rule: string;
|
|
89
|
+
advertiserHost: string;
|
|
90
|
+
reason: string;
|
|
91
|
+
sourceUrl: string;
|
|
92
|
+
}
|
|
93
|
+
interface Detection {
|
|
94
|
+
matched: MatchedRule[];
|
|
95
|
+
selfMatch: boolean;
|
|
96
|
+
/**
|
|
97
|
+
* Highest-priority match for state decisions.
|
|
98
|
+
*
|
|
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.
|
|
102
|
+
*/
|
|
103
|
+
strongest?: {
|
|
104
|
+
policyId: string;
|
|
105
|
+
advertiserHost: string;
|
|
106
|
+
reason: string;
|
|
107
|
+
};
|
|
108
|
+
failClosedReason?: string;
|
|
109
|
+
}
|
|
110
|
+
interface Decision {
|
|
111
|
+
standDown: boolean;
|
|
112
|
+
policyId?: string;
|
|
113
|
+
reason: string;
|
|
114
|
+
expiresAt?: number;
|
|
115
|
+
behaviors: Behavior[];
|
|
116
|
+
promptCount?: number;
|
|
117
|
+
referrerClass?: ReferrerClass;
|
|
118
|
+
}
|
|
119
|
+
interface UserGesture {
|
|
120
|
+
isTrusted: boolean;
|
|
121
|
+
type: string;
|
|
122
|
+
timeStamp: number;
|
|
123
|
+
}
|
|
124
|
+
interface ActivationBenefit {
|
|
125
|
+
kind: 'coupon-applied' | 'cashback' | 'donation';
|
|
126
|
+
description: string;
|
|
127
|
+
}
|
|
128
|
+
interface AuditEntry {
|
|
129
|
+
time: number;
|
|
130
|
+
action: 'ingest' | 'shouldStandDown' | 'recordActivity' | 'refresh';
|
|
131
|
+
advertiserHost?: string;
|
|
132
|
+
detection?: Detection;
|
|
133
|
+
decision?: Decision;
|
|
134
|
+
}
|
|
135
|
+
interface SessionRecord {
|
|
136
|
+
advertiserHost: string;
|
|
137
|
+
policyId: string;
|
|
138
|
+
startedAt: number;
|
|
139
|
+
lastActivityAt: number;
|
|
140
|
+
expiresAt?: number;
|
|
141
|
+
sessionRule: StanddownPolicy['standdown']['sessionRule'];
|
|
142
|
+
minDurationMs: number;
|
|
143
|
+
inactivityMs?: number;
|
|
144
|
+
behaviors: Behavior[];
|
|
145
|
+
}
|
|
146
|
+
interface StanddownState {
|
|
147
|
+
sessions: Record<string, SessionRecord>;
|
|
148
|
+
auditLog: AuditEntry[];
|
|
149
|
+
}
|
|
150
|
+
interface StateStore {
|
|
151
|
+
load(): Promise<StanddownState | undefined>;
|
|
152
|
+
save(state: StanddownState): Promise<void>;
|
|
153
|
+
}
|
|
154
|
+
type SignedBundleSignatureAlgorithm = 'Ed25519' | 'ECDSA-P256';
|
|
155
|
+
interface SignedPolicyBundle {
|
|
156
|
+
schemaVersion: 1;
|
|
157
|
+
policies: readonly StanddownPolicy[];
|
|
158
|
+
signature: {
|
|
159
|
+
algorithm: SignedBundleSignatureAlgorithm;
|
|
160
|
+
value: string;
|
|
161
|
+
};
|
|
162
|
+
}
|
|
163
|
+
type PolicyBundleVerificationResult = {
|
|
164
|
+
ok: true;
|
|
165
|
+
policies: StanddownPolicy[];
|
|
166
|
+
} | {
|
|
167
|
+
ok: false;
|
|
168
|
+
violation: string;
|
|
169
|
+
};
|
|
170
|
+
interface RakutenNetworkPolicyV2 {
|
|
171
|
+
id: string;
|
|
172
|
+
schemaVersion: 2;
|
|
173
|
+
policyVersion: string;
|
|
174
|
+
network: {
|
|
175
|
+
id: string;
|
|
176
|
+
name: string;
|
|
177
|
+
description?: string;
|
|
178
|
+
sessionDuration?: number;
|
|
179
|
+
};
|
|
180
|
+
rules: readonly RakutenPolicyRuleV2[];
|
|
181
|
+
}
|
|
182
|
+
interface RakutenPolicyRuleV2 {
|
|
183
|
+
domain?: string;
|
|
184
|
+
paths?: readonly string[];
|
|
185
|
+
params?: readonly string[] | Readonly<Record<string, string>>;
|
|
186
|
+
pattern?: string;
|
|
187
|
+
reason?: string;
|
|
188
|
+
}
|
|
189
|
+
|
|
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 };
|
|
@@ -0,0 +1,190 @@
|
|
|
1
|
+
type Behavior = 'suppress-prompts' | 'no-cookie-write' | 'no-redirect' | 'no-background-tracking';
|
|
2
|
+
type ParamMatchMode = 'exists' | 'equals' | 'contains';
|
|
3
|
+
interface ParamMatcher {
|
|
4
|
+
name: string;
|
|
5
|
+
value?: string;
|
|
6
|
+
match?: ParamMatchMode;
|
|
7
|
+
}
|
|
8
|
+
interface ParamGroup {
|
|
9
|
+
allOf: readonly ParamMatcher[];
|
|
10
|
+
}
|
|
11
|
+
interface ParamRule {
|
|
12
|
+
anyOf: readonly ParamGroup[];
|
|
13
|
+
reason?: string;
|
|
14
|
+
}
|
|
15
|
+
interface CookieRule {
|
|
16
|
+
name: string;
|
|
17
|
+
match: 'exact' | 'substring';
|
|
18
|
+
reason?: string;
|
|
19
|
+
}
|
|
20
|
+
interface DomainRule {
|
|
21
|
+
pattern: string;
|
|
22
|
+
kind: 'suffix' | 'regex';
|
|
23
|
+
comment?: string;
|
|
24
|
+
}
|
|
25
|
+
type ReferrerClass = 'own-site' | 'organic' | 'direct' | 'advertiser-internal' | 'other';
|
|
26
|
+
interface InitiatorRule {
|
|
27
|
+
referrerClass: ReferrerClass;
|
|
28
|
+
reason?: string;
|
|
29
|
+
}
|
|
30
|
+
interface StanddownPolicy {
|
|
31
|
+
id: string;
|
|
32
|
+
schemaVersion: 3;
|
|
33
|
+
policyVersion: string;
|
|
34
|
+
network: {
|
|
35
|
+
id: string;
|
|
36
|
+
name: string;
|
|
37
|
+
policyUrl?: string;
|
|
38
|
+
};
|
|
39
|
+
detection: {
|
|
40
|
+
advertiserHosts?: readonly DomainRule[];
|
|
41
|
+
landingParams?: readonly ParamRule[];
|
|
42
|
+
redirectDomains?: readonly DomainRule[];
|
|
43
|
+
cookiePatterns?: readonly CookieRule[];
|
|
44
|
+
initiatorRules?: readonly InitiatorRule[];
|
|
45
|
+
};
|
|
46
|
+
standdown: {
|
|
47
|
+
scope: 'advertiser';
|
|
48
|
+
sessionRule: 'session-or-min' | 'inactivity-window';
|
|
49
|
+
minDurationMs: number;
|
|
50
|
+
inactivityMs?: number;
|
|
51
|
+
behaviors: readonly Behavior[];
|
|
52
|
+
};
|
|
53
|
+
activation: {
|
|
54
|
+
mode: 'user-click' | 'never';
|
|
55
|
+
maxPromptsPerJourney?: number;
|
|
56
|
+
allowedReferrerClasses?: readonly ('own-site' | 'organic' | 'direct')[];
|
|
57
|
+
};
|
|
58
|
+
metadata: {
|
|
59
|
+
sourceUrl: string;
|
|
60
|
+
lastVerified: string;
|
|
61
|
+
notes?: string;
|
|
62
|
+
};
|
|
63
|
+
}
|
|
64
|
+
interface SelfExemption extends ParamMatcher {
|
|
65
|
+
/**
|
|
66
|
+
* Self-exemptions only suppress a policy when scoped to that policy or network.
|
|
67
|
+
* Unscoped matches are reported as selfMatch but do not clear third-party matches.
|
|
68
|
+
*/
|
|
69
|
+
policyId?: string;
|
|
70
|
+
networkId?: string;
|
|
71
|
+
}
|
|
72
|
+
interface Signals {
|
|
73
|
+
url: string;
|
|
74
|
+
referrer?: string;
|
|
75
|
+
cookieNames?: readonly string[];
|
|
76
|
+
redirectChain?: readonly string[];
|
|
77
|
+
initiator?: string;
|
|
78
|
+
selfPatterns?: readonly SelfExemption[];
|
|
79
|
+
publisherSites?: readonly string[];
|
|
80
|
+
now: number;
|
|
81
|
+
}
|
|
82
|
+
type MatchedRuleKind = 'landing-param' | 'redirect-domain' | 'cookie' | 'initiator';
|
|
83
|
+
interface MatchedRule {
|
|
84
|
+
policyId: string;
|
|
85
|
+
networkId: string;
|
|
86
|
+
networkName: string;
|
|
87
|
+
kind: MatchedRuleKind;
|
|
88
|
+
rule: string;
|
|
89
|
+
advertiserHost: string;
|
|
90
|
+
reason: string;
|
|
91
|
+
sourceUrl: string;
|
|
92
|
+
}
|
|
93
|
+
interface Detection {
|
|
94
|
+
matched: MatchedRule[];
|
|
95
|
+
selfMatch: boolean;
|
|
96
|
+
/**
|
|
97
|
+
* Highest-priority match for state decisions.
|
|
98
|
+
*
|
|
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.
|
|
102
|
+
*/
|
|
103
|
+
strongest?: {
|
|
104
|
+
policyId: string;
|
|
105
|
+
advertiserHost: string;
|
|
106
|
+
reason: string;
|
|
107
|
+
};
|
|
108
|
+
failClosedReason?: string;
|
|
109
|
+
}
|
|
110
|
+
interface Decision {
|
|
111
|
+
standDown: boolean;
|
|
112
|
+
policyId?: string;
|
|
113
|
+
reason: string;
|
|
114
|
+
expiresAt?: number;
|
|
115
|
+
behaviors: Behavior[];
|
|
116
|
+
promptCount?: number;
|
|
117
|
+
referrerClass?: ReferrerClass;
|
|
118
|
+
}
|
|
119
|
+
interface UserGesture {
|
|
120
|
+
isTrusted: boolean;
|
|
121
|
+
type: string;
|
|
122
|
+
timeStamp: number;
|
|
123
|
+
}
|
|
124
|
+
interface ActivationBenefit {
|
|
125
|
+
kind: 'coupon-applied' | 'cashback' | 'donation';
|
|
126
|
+
description: string;
|
|
127
|
+
}
|
|
128
|
+
interface AuditEntry {
|
|
129
|
+
time: number;
|
|
130
|
+
action: 'ingest' | 'shouldStandDown' | 'recordActivity' | 'refresh';
|
|
131
|
+
advertiserHost?: string;
|
|
132
|
+
detection?: Detection;
|
|
133
|
+
decision?: Decision;
|
|
134
|
+
}
|
|
135
|
+
interface SessionRecord {
|
|
136
|
+
advertiserHost: string;
|
|
137
|
+
policyId: string;
|
|
138
|
+
startedAt: number;
|
|
139
|
+
lastActivityAt: number;
|
|
140
|
+
expiresAt?: number;
|
|
141
|
+
sessionRule: StanddownPolicy['standdown']['sessionRule'];
|
|
142
|
+
minDurationMs: number;
|
|
143
|
+
inactivityMs?: number;
|
|
144
|
+
behaviors: Behavior[];
|
|
145
|
+
}
|
|
146
|
+
interface StanddownState {
|
|
147
|
+
sessions: Record<string, SessionRecord>;
|
|
148
|
+
auditLog: AuditEntry[];
|
|
149
|
+
}
|
|
150
|
+
interface StateStore {
|
|
151
|
+
load(): Promise<StanddownState | undefined>;
|
|
152
|
+
save(state: StanddownState): Promise<void>;
|
|
153
|
+
}
|
|
154
|
+
type SignedBundleSignatureAlgorithm = 'Ed25519' | 'ECDSA-P256';
|
|
155
|
+
interface SignedPolicyBundle {
|
|
156
|
+
schemaVersion: 1;
|
|
157
|
+
policies: readonly StanddownPolicy[];
|
|
158
|
+
signature: {
|
|
159
|
+
algorithm: SignedBundleSignatureAlgorithm;
|
|
160
|
+
value: string;
|
|
161
|
+
};
|
|
162
|
+
}
|
|
163
|
+
type PolicyBundleVerificationResult = {
|
|
164
|
+
ok: true;
|
|
165
|
+
policies: StanddownPolicy[];
|
|
166
|
+
} | {
|
|
167
|
+
ok: false;
|
|
168
|
+
violation: string;
|
|
169
|
+
};
|
|
170
|
+
interface RakutenNetworkPolicyV2 {
|
|
171
|
+
id: string;
|
|
172
|
+
schemaVersion: 2;
|
|
173
|
+
policyVersion: string;
|
|
174
|
+
network: {
|
|
175
|
+
id: string;
|
|
176
|
+
name: string;
|
|
177
|
+
description?: string;
|
|
178
|
+
sessionDuration?: number;
|
|
179
|
+
};
|
|
180
|
+
rules: readonly RakutenPolicyRuleV2[];
|
|
181
|
+
}
|
|
182
|
+
interface RakutenPolicyRuleV2 {
|
|
183
|
+
domain?: string;
|
|
184
|
+
paths?: readonly string[];
|
|
185
|
+
params?: readonly string[] | Readonly<Record<string, string>>;
|
|
186
|
+
pattern?: string;
|
|
187
|
+
reason?: string;
|
|
188
|
+
}
|
|
189
|
+
|
|
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 };
|