@pseolint/core 0.2.2 → 0.3.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 +10 -9
- package/dist/ai/prompt.d.ts +1 -1
- package/dist/ai/prompt.d.ts.map +1 -1
- package/dist/ai/prompt.js +13 -1
- package/dist/ai/prompt.js.map +1 -1
- package/dist/ai/triage.d.ts +15 -1
- package/dist/ai/triage.d.ts.map +1 -1
- package/dist/ai/triage.js +30 -0
- package/dist/ai/triage.js.map +1 -1
- package/dist/analytics-blocklist.d.ts +28 -0
- package/dist/analytics-blocklist.d.ts.map +1 -0
- package/dist/analytics-blocklist.js +129 -0
- package/dist/analytics-blocklist.js.map +1 -0
- package/dist/auditor.d.ts.map +1 -1
- package/dist/auditor.js +130 -46
- package/dist/auditor.js.map +1 -1
- package/dist/formatters/console.d.ts +9 -0
- package/dist/formatters/console.d.ts.map +1 -1
- package/dist/formatters/console.js +53 -0
- package/dist/formatters/console.js.map +1 -1
- package/dist/formatters/html.d.ts.map +1 -1
- package/dist/formatters/html.js +557 -144
- package/dist/formatters/html.js.map +1 -1
- package/dist/index.d.ts +14 -1
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +12 -1
- package/dist/index.js.map +1 -1
- package/dist/renderer.d.ts +14 -0
- package/dist/renderer.d.ts.map +1 -1
- package/dist/renderer.js +130 -4
- package/dist/renderer.js.map +1 -1
- package/dist/rule-references.d.ts.map +1 -1
- package/dist/rule-references.js +9 -0
- package/dist/rule-references.js.map +1 -1
- package/dist/rules/aeo/answer-first.d.ts +18 -0
- package/dist/rules/aeo/answer-first.d.ts.map +1 -0
- package/dist/rules/aeo/answer-first.js +191 -0
- package/dist/rules/aeo/answer-first.js.map +1 -0
- package/dist/rules/aeo/citable-facts.d.ts +9 -0
- package/dist/rules/aeo/citable-facts.d.ts.map +1 -0
- package/dist/rules/aeo/citable-facts.js +90 -0
- package/dist/rules/aeo/citable-facts.js.map +1 -0
- package/dist/rules/aeo/content-modularity.d.ts +11 -0
- package/dist/rules/aeo/content-modularity.d.ts.map +1 -0
- package/dist/rules/aeo/content-modularity.js +107 -0
- package/dist/rules/aeo/content-modularity.js.map +1 -0
- package/dist/rules/aeo/crawler-access.d.ts +25 -0
- package/dist/rules/aeo/crawler-access.d.ts.map +1 -0
- package/dist/rules/aeo/crawler-access.js +116 -0
- package/dist/rules/aeo/crawler-access.js.map +1 -0
- package/dist/rules/aeo/faq-coverage.d.ts +9 -0
- package/dist/rules/aeo/faq-coverage.d.ts.map +1 -0
- package/dist/rules/aeo/faq-coverage.js +71 -0
- package/dist/rules/aeo/faq-coverage.js.map +1 -0
- package/dist/rules/aeo/freshness-signals.d.ts +9 -0
- package/dist/rules/aeo/freshness-signals.d.ts.map +1 -0
- package/dist/rules/aeo/freshness-signals.js +109 -0
- package/dist/rules/aeo/freshness-signals.js.map +1 -0
- package/dist/rules/aeo/llms-txt.d.ts +24 -0
- package/dist/rules/aeo/llms-txt.d.ts.map +1 -0
- package/dist/rules/aeo/llms-txt.js +93 -0
- package/dist/rules/aeo/llms-txt.js.map +1 -0
- package/dist/rules/aeo/non-replicable-value.d.ts +9 -0
- package/dist/rules/aeo/non-replicable-value.d.ts.map +1 -0
- package/dist/rules/aeo/non-replicable-value.js +95 -0
- package/dist/rules/aeo/non-replicable-value.js.map +1 -0
- package/dist/rules/aeo/summary-bait.d.ts +20 -0
- package/dist/rules/aeo/summary-bait.d.ts.map +1 -0
- package/dist/rules/aeo/summary-bait.js +147 -0
- package/dist/rules/aeo/summary-bait.js.map +1 -0
- package/dist/rules/scope.d.ts +12 -0
- package/dist/rules/scope.d.ts.map +1 -0
- package/dist/rules/scope.js +67 -0
- package/dist/rules/scope.js.map +1 -0
- package/dist/types.d.ts +30 -0
- package/dist/types.d.ts.map +1 -1
- package/package.json +3 -3
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"html.js","sourceRoot":"","sources":["../../src/formatters/html.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"html.js","sourceRoot":"","sources":["../../src/formatters/html.ts"],"names":[],"mappings":"AAEA,MAAM,cAAc,GAAe,CAAC,UAAU,EAAE,OAAO,EAAE,SAAS,EAAE,MAAM,CAAC,CAAC;AAE5E,MAAM,cAAc,GAA6B;IAC/C,QAAQ,EAAE,UAAU;IACpB,KAAK,EAAE,OAAO;IACd,OAAO,EAAE,SAAS;IAClB,IAAI,EAAE,MAAM;CACb,CAAC;AAEF,MAAM,eAAe,GAA6B;IAChD,QAAQ,EAAE,GAAG;IACb,KAAK,EAAE,EAAE;IACT,OAAO,EAAE,EAAE;IACX,IAAI,EAAE,CAAC;CACR,CAAC;AAEF,SAAS,YAAY,CAAC,QAAkB;IACtC,QAAQ,QAAQ,EAAE,CAAC;QACjB,KAAK,UAAU,CAAC;QAChB,KAAK,OAAO;YACV,OAAO,aAAa,CAAC;QACvB,KAAK,SAAS;YACZ,OAAO,SAAS,CAAC;QACnB,KAAK,MAAM;YACT,OAAO,OAAO,CAAC;IACnB,CAAC;AACH,CAAC;AAED,SAAS,SAAS,CAAC,KAAa;IAC9B,IAAI,KAAK,IAAI,EAAE;QAAE,OAAO,SAAS,CAAC;IAClC,IAAI,KAAK,IAAI,EAAE;QAAE,OAAO,SAAS,CAAC;IAClC,OAAO,aAAa,CAAC;AACvB,CAAC;AAED,SAAS,YAAY,CAAC,KAAa;IACjC,IAAI,KAAK,IAAI,EAAE;QAAE,OAAO,WAAW,CAAC;IACpC,IAAI,KAAK,IAAI,EAAE;QAAE,OAAO,UAAU,CAAC;IACnC,IAAI,KAAK,IAAI,EAAE;QAAE,OAAO,YAAY,CAAC;IACrC,IAAI,KAAK,IAAI,EAAE;QAAE,OAAO,eAAe,CAAC;IACxC,OAAO,gBAAgB,CAAC;AAC1B,CAAC;AAED,SAAS,YAAY,CAAC,GAAW;IAC/B,IAAI,GAAG,IAAI,EAAE;QAAE,OAAO,SAAS,CAAC;IAChC,IAAI,GAAG,IAAI,EAAE;QAAE,OAAO,SAAS,CAAC;IAChC,OAAO,aAAa,CAAC;AACvB,CAAC;AAED,SAAS,WAAW,CAAC,MAAc;IACjC,QAAQ,MAAM,EAAE,CAAC;QACf,KAAK,OAAO,CAAC,CAAC,OAAO,WAAW,CAAC;QACjC,KAAK,UAAU,CAAC,CAAC,OAAO,UAAU,CAAC;QACnC,KAAK,YAAY,CAAC,CAAC,OAAO,YAAY,CAAC;QACvC,OAAO,CAAC,CAAC,OAAO,MAAM,CAAC;IACzB,CAAC;AACH,CAAC;AAED,SAAS,UAAU,CAAC,IAAY;IAC9B,OAAO,IAAI;SACR,OAAO,CAAC,IAAI,EAAE,OAAO,CAAC;SACtB,OAAO,CAAC,IAAI,EAAE,MAAM,CAAC;SACrB,OAAO,CAAC,IAAI,EAAE,MAAM,CAAC;SACrB,OAAO,CAAC,IAAI,EAAE,QAAQ,CAAC,CAAC;AAC7B,CAAC;AAED,SAAS,UAAU,CAAC,GAAW;IAC7B,IAAI,CAAC;QAAC,OAAO,IAAI,GAAG,CAAC,GAAG,CAAC,CAAC,QAAQ,CAAC;IAAC,CAAC;IAAC,MAAM,CAAC;QAAC,OAAO,GAAG,CAAC;IAAC,CAAC;AAC7D,CAAC;AAED,SAAS,aAAa,CAAC,IAAY;IACjC,MAAM,GAAG,GAA2B;QAClC,IAAI,EAAE,cAAc;QACpB,OAAO,EAAE,iBAAiB;QAC1B,KAAK,EAAE,YAAY;QACnB,IAAI,EAAE,eAAe;QACrB,IAAI,EAAE,cAAc;QACpB,MAAM,EAAE,iBAAiB;QACzB,QAAQ,EAAE,iBAAiB;QAC3B,GAAG,EAAE,eAAe;KACrB,CAAC;IACF,OAAO,GAAG,CAAC,IAAI,CAAC,IAAI,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,WAAW,EAAE,GAAG,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;AACnE,CAAC;AAED;;;GAGG;AACH,SAAS,aAAa,CAAC,KAAa;IAClC,IAAI,KAAK,IAAI,EAAE;QAAE,OAAO,UAAU,CAAC;IACnC,IAAI,KAAK,IAAI,EAAE;QAAE,OAAO,SAAS,CAAC;IAClC,IAAI,KAAK,IAAI,EAAE;QAAE,OAAO,YAAY,CAAC;IACrC,IAAI,KAAK,IAAI,EAAE;QAAE,OAAO,WAAW,CAAC;IACpC,OAAO,OAAO,CAAC;AACjB,CAAC;AAED,sEAAsE;AACtE,SAAS,WAAW,CAAC,QAAsB;IACzC,MAAM,CAAC,GAAG,IAAI,GAAG,EAAwB,CAAC;IAC1C,KAAK,MAAM,CAAC,IAAI,QAAQ,EAAE,CAAC;QACzB,MAAM,MAAM,GAAG,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC;QAC/B,IAAI,MAAM;YAAE,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;;YACtB,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,MAAM,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC;IAC5B,CAAC;IACD,OAAO,CAAC,CAAC;AACX,CAAC;AAcD,SAAS,YAAY,CAAC,QAAsB;IAC1C,MAAM,MAAM,GAAG,WAAW,CAAC,QAAQ,CAAC,CAAC;IACrC,MAAM,OAAO,GAAa,EAAE,CAAC;IAC7B,KAAK,MAAM,CAAC,MAAM,EAAE,KAAK,CAAC,IAAI,MAAM,EAAE,CAAC;QACrC,MAAM,GAAG,GAAG,KAAK,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC;QAC9B,OAAO,CAAC,IAAI,CAAC;YACX,MAAM;YACN,QAAQ,EAAE,GAAG;YACb,SAAS,EAAE,KAAK,CAAC,MAAM;YACvB,cAAc,EAAE,KAAK,CAAC,CAAC,CAAC;YACxB,MAAM,EAAE,eAAe,CAAC,GAAG,CAAC,GAAG,KAAK,CAAC,MAAM;SAC5C,CAAC,CAAC;IACL,CAAC;IACD,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE;QACpB,IAAI,CAAC,CAAC,MAAM,KAAK,CAAC,CAAC,MAAM;YAAE,OAAO,CAAC,CAAC,MAAM,GAAG,CAAC,CAAC,MAAM,CAAC;QACtD,MAAM,EAAE,GAAG,cAAc,CAAC,OAAO,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC;QAC9C,MAAM,EAAE,GAAG,cAAc,CAAC,OAAO,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC;QAC9C,IAAI,EAAE,KAAK,EAAE;YAAE,OAAO,EAAE,GAAG,EAAE,CAAC;QAC9B,IAAI,CAAC,CAAC,SAAS,KAAK,CAAC,CAAC,SAAS;YAAE,OAAO,CAAC,CAAC,SAAS,GAAG,CAAC,CAAC,SAAS,CAAC;QAClE,OAAO,CAAC,CAAC,MAAM,CAAC,aAAa,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC;IAC1C,CAAC,CAAC,CAAC;IACH,OAAO,OAAO,CAAC;AACjB,CAAC;AAED,SAAS,gBAAgB,CAAC,MAA2C;IACnE,MAAM,MAAM,GAAG,MAAM,CAAC,UAAU,CAAC,KAAK,EAAE,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,QAAQ,GAAG,CAAC,CAAC,QAAQ,CAAC,CAAC;IACjF,MAAM,IAAI,GAAG,MAAM,CAAC,gBAAgB,KAAK,SAAS,CAAC,CAAC,CAAC,WAAW,MAAM,CAAC,gBAAgB,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;IAC1G,MAAM,UAAU,GAAG,MAAM,CAAC,QAAQ,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,OAAO,CAAC;IACxD,MAAM,MAAM,GAAG,GAAG,MAAM,CAAC,UAAU,CAAC,KAAK,CAAC,cAAc,EAAE,SAAS,MAAM,CAAC,UAAU,CAAC,MAAM,CAAC,cAAc,EAAE,MAAM,CAAC;IACnH,MAAM,MAAM,GAAG,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC;;;oCAGC,CAAC,CAAC,QAAQ;cAChC,UAAU,CAAC,CAAC,CAAC,KAAK,CAAC;+BACF,YAAY,CAAC,CAAC,CAAC,QAAQ,CAAC,KAAK,UAAU,CAAC,CAAC,CAAC,QAAQ,CAAC;;8BAEpD,CAAC,CAAC,aAAa,eAAe,CAAC,CAAC,eAAe,CAAC,GAAG,CAAC,UAAU,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC;8BAC1E,UAAU,CAAC,CAAC,CAAC,SAAS,CAAC;UAC3C,CAAC,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;IAEnB,OAAO;;;;8BAIqB,UAAU,CAAC,MAAM,CAAC,SAAS,CAAC,MAAM,UAAU,MAAM,MAAM,GAAG,IAAI;;IAEzF,MAAM,CAAC,SAAS,CAAC,CAAC,CAAC,wBAAwB,UAAU,CAAC,MAAM,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE;uBAC/D,MAAM;WAClB,CAAC;AACZ,CAAC;AAED,SAAS,cAAc,CAAC,OAAiB;IACvC,IAAI,OAAO,CAAC,MAAM,KAAK,CAAC;QAAE,OAAO,EAAE,CAAC;IACpC,MAAM,GAAG,GAAG,OAAO,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;IAChC,MAAM,IAAI,GAAG,GAAG,CAAC,GAAG,CAAC,CAAC,GAAG,EAAE,GAAG,EAAE,EAAE;QAChC,MAAM,CAAC,GAAG,GAAG,CAAC,cAAc,CAAC;QAC7B,MAAM,UAAU,GAAG,CAAC,CAAC,MAAM;YACzB,CAAC,CAAC,mCAAmC,UAAU,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,UAAU,CAAC,WAAW,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,SAAS;YACxG,CAAC,CAAC,EAAE,CAAC;QACP,MAAM,UAAU,GAAG,GAAG,CAAC,SAAS,KAAK,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,GAAG,GAAG,CAAC,SAAS,QAAQ,CAAC;QAC7E,OAAO;mCACwB,GAAG,GAAG,CAAC;;;kCAGR,UAAU,CAAC,GAAG,CAAC,MAAM,CAAC;iCACvB,YAAY,CAAC,GAAG,CAAC,QAAQ,CAAC,KAAK,UAAU,CAAC,GAAG,CAAC,QAAQ,CAAC;YAC5E,UAAU;6CACuB,UAAU;;iCAEtB,UAAU,CAAC,CAAC,CAAC,OAAO,CAAC;;UAE5C,CAAC;IACT,CAAC,CAAC,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;IAEZ,OAAO;;;;;;6BAMoB,IAAI;WACtB,CAAC;AACZ,CAAC;AAED,SAAS,cAAc,CAAC,MAAc,EAAE,KAAmB,EAAE,GAAa;IACxE,MAAM,cAAc,GAAG,KAAK,CAAC,CAAC,CAAC,CAAC;IAChC,MAAM,UAAU,GAAG,cAAc,CAAC,MAAM;QACtC,CAAC,CAAC,oCAAoC,UAAU,CAAC,cAAc,CAAC,MAAM,CAAC,KAAK,UAAU,CAAC,WAAW,CAAC,cAAc,CAAC,MAAM,CAAC,CAAC,SAAS;QACnI,CAAC,CAAC,EAAE,CAAC;IACP,MAAM,UAAU,GAAG,KAAK,CAAC,MAAM,KAAK,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,GAAG,KAAK,CAAC,MAAM,QAAQ,CAAC;IAE3E,sEAAsE;IACtE,MAAM,IAAI,GAAG,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,EAAe,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;IACzE,IAAI,QAAQ,GAAG,EAAE,CAAC;IAClB,IAAI,IAAI,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;QACpB,MAAM,OAAO,GAAG,IAAI,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;QACjC,MAAM,IAAI,GAAG,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;QAC3B,MAAM,WAAW,GAAG,4BAA4B,OAAO,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,oBAAoB,UAAU,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,IAAI,CAAC,EAAE,CAAC,OAAO,CAAC;QACzI,MAAM,QAAQ,GAAG,IAAI,CAAC,MAAM,GAAG,CAAC;YAC9B,CAAC,CAAC;sBACc,IAAI,CAAC,MAAM,SAAS,IAAI,CAAC,MAAM,KAAK,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,OAAO;mCAC3C,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,oBAAoB,UAAU,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,IAAI,CAAC,EAAE,CAAC;oBAC7F;YACd,CAAC,CAAC,EAAE,CAAC;QACP,QAAQ,GAAG,WAAW,GAAG,QAAQ,CAAC;IACpC,CAAC;IAED,gGAAgG;IAChG,IAAI,OAAO,GAAG,EAAE,CAAC;IACjB,MAAM,WAAW,GAAG,KAAK,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,OAAO,EAAE,IAAI,KAAK,SAAS,CAAC,CAAC;IACrE,IAAI,WAAW,IAAI,WAAW,CAAC,OAAO,EAAE,IAAI,KAAK,SAAS,EAAE,CAAC;QAC3D,MAAM,GAAG,GAAG,WAAW,CAAC,OAAO,CAAC;QAChC,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,GAAG,GAAG,CAAC,eAAe,CAAC;QAC7C,MAAM,cAAc,GAAG,GAAG,CAAC,UAAU;aAClC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,0BAA0B,UAAU,CAAC,UAAU,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,2DAA2D,UAAU,CAAC,UAAU,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,6BAA6B,CAAC,CAAC,CAAC,UAAU,GAAG,GAAG,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,eAAe,CAAC;aACvO,IAAI,CAAC,EAAE,CAAC,CAAC;QACZ,MAAM,WAAW,GAAG,GAAG,CAAC,OAAO;aAC5B,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,oBAAoB,UAAU,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC;aAC9D,IAAI,CAAC,EAAE,CAAC,CAAC;QACZ,OAAO,GAAG;;aAED,GAAG,CAAC,WAAW,uBAAuB,CAAC,MAAM,GAAG,GAAG,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,IAAI,CAAC,MAAM,GAAG,GAAG,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC;;;4BAG7E,cAAc;;8BAEZ,WAAW;;WAE9B,CAAC;IACV,CAAC;IAED,MAAM,GAAG,GAAG,cAAc,CAAC,GAAG,CAAC,CAAC,CAAC,sDAAsD,UAAU,CAAC,cAAc,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAC,CAAC,EAAE,CAAC;IACnI,MAAM,GAAG,GAAG,cAAc,CAAC,GAAG,CAAC,CAAC,CAAC,YAAY,UAAU,CAAC,cAAc,CAAC,GAAG,CAAC,wDAAwD,CAAC,CAAC,CAAC,EAAE,CAAC;IAEzI,OAAO,8BAA8B,YAAY,CAAC,GAAG,CAAC;;8BAE1B,UAAU,CAAC,MAAM,CAAC,UAAU,UAAU;yCAC3B,UAAU;;6BAEtB,UAAU,CAAC,cAAc,CAAC,OAAO,CAAC;MACzD,QAAQ;MACR,OAAO;MACP,GAAG;MACH,GAAG;QACD,CAAC;AACT,CAAC;AAED,MAAM,UAAU,UAAU,CAAC,OAAqB;IAC9C,MAAM,OAAO,GAAG,IAAI,GAAG,EAA0B,CAAC;IAClD,KAAK,MAAM,GAAG,IAAI,cAAc;QAAE,OAAO,CAAC,GAAG,CAAC,GAAG,EAAE,EAAE,CAAC,CAAC;IACvD,KAAK,MAAM,CAAC,IAAI,OAAO,CAAC,QAAQ;QAAE,OAAO,CAAC,GAAG,CAAC,CAAC,CAAC,QAAQ,CAAE,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;IAEnE,MAAM,MAAM,GAA6B;QACvC,QAAQ,EAAE,OAAO,CAAC,GAAG,CAAC,UAAU,CAAE,CAAC,MAAM;QACzC,KAAK,EAAE,OAAO,CAAC,GAAG,CAAC,OAAO,CAAE,CAAC,MAAM;QACnC,OAAO,EAAE,OAAO,CAAC,GAAG,CAAC,SAAS,CAAE,CAAC,MAAM;QACvC,IAAI,EAAE,OAAO,CAAC,GAAG,CAAC,MAAM,CAAE,CAAC,MAAM;KAClC,CAAC;IACF,MAAM,WAAW,GAAG,MAAM,CAAC,QAAQ,GAAG,MAAM,CAAC,KAAK,CAAC;IAEnD,MAAM,OAAO,GAAG,YAAY,CAAC,OAAO,CAAC,QAAQ,CAAC,CAAC;IAC/C,MAAM,YAAY,GAAG,cAAc,CAAC,OAAO,CAAC,CAAC;IAE7C,MAAM,YAAY,GAAG,MAAM,CAAC,OAAO,CAAC,OAAO,CAAC,cAAc,CAAC;SACxD,GAAG,CAAC,CAAC,CAAC,IAAI,EAAE,KAAK,CAAC,EAAE,EAAE;QACrB,MAAM,GAAG,GAAG,KAAe,CAAC;QAC5B,MAAM,KAAK,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,GAAG,GAAG,GAAG,CAAC,CAAC;QACrC,MAAM,IAAI,GAAG,YAAY,CAAC,GAAG,CAAC,CAAC;QAC/B,OAAO;+BACkB,UAAU,CAAC,aAAa,CAAC,IAAI,CAAC,CAAC;2EACa,IAAI,kBAAkB,KAAK;2CAC3D,GAAG;YAClC,CAAC;IACT,CAAC,CAAC;SACD,IAAI,CAAC,EAAE,CAAC,CAAC;IAEZ,MAAM,gBAAgB,GAAG,cAAc,CAAC,GAAG,CAAC,CAAC,GAAG,EAAE,EAAE;QAClD,MAAM,KAAK,GAAG,OAAO,CAAC,GAAG,CAAC,GAAG,CAAE,CAAC;QAChC,IAAI,KAAK,CAAC,MAAM,KAAK,CAAC;YAAE,OAAO,EAAE,CAAC;QAClC,MAAM,MAAM,GAAG,WAAW,CAAC,KAAK,CAAC,CAAC;QAClC,yFAAyF;QACzF,MAAM,cAAc,GAAG,KAAK,CAAC,IAAI,CAAC,MAAM,CAAC,OAAO,EAAE,CAAC;aAChD,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE;YACb,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,MAAM,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,MAAM;gBAAE,OAAO,CAAC,CAAC,CAAC,CAAC,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC;YAClE,OAAO,CAAC,CAAC,CAAC,CAAC,CAAC,aAAa,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;QAClC,CAAC,CAAC;aACD,GAAG,CAAC,CAAC,CAAC,MAAM,CAAC,EAAE,EAAE,CAAC,MAAM,CAAC,CAAC;QAC7B,MAAM,SAAS,GAAG,cAAc,CAAC,GAAG,CAAC,CAAC,GAAG,EAAE,EAAE,CAAC,cAAc,CAAC,GAAG,EAAE,MAAM,CAAC,GAAG,CAAC,GAAG,CAAE,EAAE,GAAG,CAAC,CAAC,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;QACnG,MAAM,SAAS,GAAG,MAAM,CAAC,IAAI,CAAC;QAC9B,OAAO;;mCAEwB,YAAY,CAAC,GAAG,CAAC;uCACb,cAAc,CAAC,GAAG,CAAC;kCACxB,SAAS,IAAI,SAAS,KAAK,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,OAAO,MAAM,KAAK,CAAC,MAAM,IAAI,KAAK,CAAC,MAAM,KAAK,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,UAAU;;iCAEjH,SAAS;WAC/B,CAAC;IACV,CAAC,CAAC,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;IAEZ,MAAM,IAAI,GAAG,SAAS,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC;IACtC,MAAM,OAAO,GAAG,YAAY,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC;IAE5C,MAAM,eAAe,GAAG,OAAO,CAAC,WAAW,IAAI,OAAO,CAAC,eAAe,CAAC,CAAC,CAAC;;;;;;;aAO9D,MAAM,CAAC,OAAO,CAAC,OAAO,CAAC,WAAW,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,IAAI,EAAE,KAAK,CAAC,EAAE,EAAE;QACjE,MAAM,KAAK,GAAG,OAAO,CAAC,eAAgB,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;QAClD,MAAM,KAAK,GAAG,YAAY,CAAC,KAAe,CAAC,CAAC;QAC5C,OAAO;cACC,UAAU,CAAC,IAAI,CAAC;uCACS,KAAK,KAAK,KAAK;yCACb,KAAK;YAClC,CAAC;IACT,CAAC,CAAC,CAAC,IAAI,CAAC,EAAE,CAAC;;WAEJ,CAAC,CAAC,CAAC,EAAE,CAAC;IAEf,OAAO;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;mCA0M0B,IAAI;;;;;;6BAMV,OAAO,CAAC,SAAS,YAAY,OAAO,CAAC,QAAQ,CAAC,MAAM;;;;;;gCAMjD,IAAI,KAAK,OAAO,CAAC,KAAK;;4DAEM,IAAI,6BAA6B,IAAI,aAAa,UAAU,CAAC,OAAO,CAAC;;;mEAG9D,OAAO,CAAC,SAAS;qFACC,WAAW;mFACb,MAAM,CAAC,OAAO;wEACzB,MAAM,CAAC,IAAI;;;;IAI/E,OAAO,CAAC,gBAAgB,CAAC,CAAC,CAAC,oLAAoL,CAAC,CAAC,CAAC,EAAE;;IAEpN,CAAC,GAAG,EAAE;QACN,MAAM,QAAQ,GAAG,OAAO,CAAC,cAAc,EAAE,GAAG,CAAC;QAC7C,IAAI,QAAQ,KAAK,SAAS;YAAE,OAAO,EAAE,CAAC;QACtC,MAAM,OAAO,GAAG,YAAY,CAAC,QAAQ,CAAC,CAAC;QACvC,MAAM,KAAK,GAAG,aAAa,CAAC,QAAQ,CAAC,CAAC;QACtC,MAAM,MAAM,GAAG,GAAG,GAAG,QAAQ,CAAC;QAC9B,OAAO;;;;;;;kCAOuB,OAAO,KAAK,UAAU,CAAC,KAAK,CAAC;sDACT,OAAO,kBAAkB,MAAM;kCACnD,MAAM,gBAAgB,QAAQ;;WAErD,CAAC;IACV,CAAC,CAAC,EAAE;;IAEF,YAAY;;;;;;;;eAQD,YAAY;;;;IAIvB,eAAe;;IAEf,OAAO,CAAC,MAAM,CAAC,CAAC,CAAC,gBAAgB,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,EAAE;;;qBAGrC,OAAO,CAAC,QAAQ,CAAC,MAAM;mDACO,OAAO,CAAC,SAAS,QAAQ,OAAO,CAAC,SAAS,KAAK,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,GAAG;;IAE1G,gBAAgB;;;;;;;;;QASZ,CAAC;AACT,CAAC"}
|
package/dist/index.d.ts
CHANGED
|
@@ -44,6 +44,15 @@ export * from "./renderer.js";
|
|
|
44
44
|
export * from "./enrich-findings.js";
|
|
45
45
|
export * from "./data-source-loader.js";
|
|
46
46
|
export * from "./rules/data/data-binding.js";
|
|
47
|
+
export { llmsTxtRule, validateLlmsTxt } from "./rules/aeo/llms-txt.js";
|
|
48
|
+
export { crawlerAccessRule, parseRobotsByUserAgent, isFullyDisallowed, DEFAULT_AI_CRAWLERS } from "./rules/aeo/crawler-access.js";
|
|
49
|
+
export { freshnessSignalsRule } from "./rules/aeo/freshness-signals.js";
|
|
50
|
+
export { faqCoverageRule } from "./rules/aeo/faq-coverage.js";
|
|
51
|
+
export { answerFirstRule, extractFirstParagraph } from "./rules/aeo/answer-first.js";
|
|
52
|
+
export { citableFactsRule } from "./rules/aeo/citable-facts.js";
|
|
53
|
+
export { nonReplicableValueRule } from "./rules/aeo/non-replicable-value.js";
|
|
54
|
+
export { contentModularityRule } from "./rules/aeo/content-modularity.js";
|
|
55
|
+
export { summaryBaitRule } from "./rules/aeo/summary-bait.js";
|
|
47
56
|
export { cachedFetch, cacheKeyFor } from "./cache.js";
|
|
48
57
|
export type { CacheConfig, CachedFetchOptions, CachedFetchResult, CacheEntry } from "./cache.js";
|
|
49
58
|
export type { CacheOptions, CacheStats, SamplingStrategy, StateOptions } from "./types.js";
|
|
@@ -52,7 +61,7 @@ export { readState, writeState, computeContentHash, normalizeHtmlForHash, STATE_
|
|
|
52
61
|
export type { RunState, UrlStateEntry, RenderMode } from "./state.js";
|
|
53
62
|
export type { AiOptions, } from "./types.js";
|
|
54
63
|
export type { TokenUsage, RootCause, TriageResult, } from "./ai/types.js";
|
|
55
|
-
export { triageFindings } from "./ai/triage.js";
|
|
64
|
+
export { triageFindings, triage } from "./ai/triage.js";
|
|
56
65
|
export type { TriageOptions, TriageOutcome } from "./ai/triage.js";
|
|
57
66
|
export { createLanguageModel, detectProvider } from "./ai/adapters/index.js";
|
|
58
67
|
export type { ProviderId, ResolvedModel } from "./ai/adapters/index.js";
|
|
@@ -62,4 +71,8 @@ export * from "./telemetry/index.js";
|
|
|
62
71
|
export type { TelemetryOptions } from "./types.js";
|
|
63
72
|
export { promptTriageFeedback } from "./ai/feedback-prompt.js";
|
|
64
73
|
export type { FeedbackRating, PromptOptions } from "./ai/feedback-prompt.js";
|
|
74
|
+
export { RULE_SCOPE, isRuleAllowedInDiff } from "./rules/scope.js";
|
|
75
|
+
export type { RuleScope } from "./rules/scope.js";
|
|
76
|
+
export { DEFAULT_ANALYTICS_HOSTS, isAnalyticsRequest } from "./analytics-blocklist.js";
|
|
77
|
+
export type { AnalyticsMode } from "./analytics-blocklist.js";
|
|
65
78
|
//# sourceMappingURL=index.d.ts.map
|
package/dist/index.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,cAAc,YAAY,CAAC;AAC3B,cAAc,cAAc,CAAC;AAC7B,cAAc,aAAa,CAAC;AAC5B,cAAc,oBAAoB,CAAC;AACnC,cAAc,yBAAyB,CAAC;AACxC,cAAc,6BAA6B,CAAC;AAC5C,cAAc,gCAAgC,CAAC;AAC/C,cAAc,6BAA6B,CAAC;AAC5C,cAAc,8BAA8B,CAAC;AAC7C,cAAc,mCAAmC,CAAC;AAClD,cAAc,oCAAoC,CAAC;AACnD,cAAc,sCAAsC,CAAC;AACrD,cAAc,iCAAiC,CAAC;AAChD,cAAc,mCAAmC,CAAC;AAClD,cAAc,iCAAiC,CAAC;AAChD,cAAc,uCAAuC,CAAC;AACtD,cAAc,oCAAoC,CAAC;AACnD,cAAc,mCAAmC,CAAC;AAClD,cAAc,iCAAiC,CAAC;AAChD,cAAc,+BAA+B,CAAC;AAC9C,cAAc,4BAA4B,CAAC;AAC3C,cAAc,6BAA6B,CAAC;AAC5C,cAAc,uCAAuC,CAAC;AACtD,cAAc,4BAA4B,CAAC;AAC3C,cAAc,uCAAuC,CAAC;AACtD,cAAc,4CAA4C,CAAC;AAC3D,cAAc,yCAAyC,CAAC;AACxD,cAAc,sCAAsC,CAAC;AACrD,cAAc,gCAAgC,CAAC;AAC/C,cAAc,0BAA0B,CAAC;AACzC,cAAc,iCAAiC,CAAC;AAChD,cAAc,sCAAsC,CAAC;AACrD,cAAc,iCAAiC,CAAC;AAChD,cAAc,mCAAmC,CAAC;AAClD,cAAc,+BAA+B,CAAC;AAC9C,cAAc,wBAAwB,CAAC;AACvC,cAAc,mCAAmC,CAAC;AAClD,cAAc,uCAAuC,CAAC;AACtD,cAAc,iCAAiC,CAAC;AAChD,cAAc,sBAAsB,CAAC;AACrC,cAAc,sBAAsB,CAAC;AACrC,cAAc,uBAAuB,CAAC;AACtC,cAAc,eAAe,CAAC;AAC9B,cAAc,sBAAsB,CAAC;AACrC,cAAc,yBAAyB,CAAC;AACxC,cAAc,8BAA8B,CAAC;AAC7C,OAAO,EAAE,WAAW,EAAE,WAAW,EAAE,MAAM,YAAY,CAAC;AACtD,YAAY,EAAE,WAAW,EAAE,kBAAkB,EAAE,iBAAiB,EAAE,UAAU,EAAE,MAAM,YAAY,CAAC;AACjG,YAAY,EAAE,YAAY,EAAE,UAAU,EAAE,gBAAgB,EAAE,YAAY,EAAE,MAAM,YAAY,CAAC;AAC3F,OAAO,EAAE,gBAAgB,EAAE,gBAAgB,EAAE,MAAM,wBAAwB,CAAC;AAC5E,OAAO,EAAE,SAAS,EAAE,UAAU,EAAE,kBAAkB,EAAE,oBAAoB,EAAE,oBAAoB,EAAE,MAAM,YAAY,CAAC;AACnH,YAAY,EAAE,QAAQ,EAAE,aAAa,EAAE,UAAU,EAAE,MAAM,YAAY,CAAC;AAGtE,YAAY,EACV,SAAS,GACV,MAAM,YAAY,CAAC;AACpB,YAAY,EACV,UAAU,EACV,SAAS,EACT,YAAY,GACb,MAAM,eAAe,CAAC;AACvB,OAAO,EAAE,cAAc,EAAE,MAAM,gBAAgB,CAAC;
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
|
package/dist/index.js
CHANGED
|
@@ -44,13 +44,24 @@ export * from "./renderer.js";
|
|
|
44
44
|
export * from "./enrich-findings.js";
|
|
45
45
|
export * from "./data-source-loader.js";
|
|
46
46
|
export * from "./rules/data/data-binding.js";
|
|
47
|
+
export { llmsTxtRule, validateLlmsTxt } from "./rules/aeo/llms-txt.js";
|
|
48
|
+
export { crawlerAccessRule, parseRobotsByUserAgent, isFullyDisallowed, DEFAULT_AI_CRAWLERS } from "./rules/aeo/crawler-access.js";
|
|
49
|
+
export { freshnessSignalsRule } from "./rules/aeo/freshness-signals.js";
|
|
50
|
+
export { faqCoverageRule } from "./rules/aeo/faq-coverage.js";
|
|
51
|
+
export { answerFirstRule, extractFirstParagraph } from "./rules/aeo/answer-first.js";
|
|
52
|
+
export { citableFactsRule } from "./rules/aeo/citable-facts.js";
|
|
53
|
+
export { nonReplicableValueRule } from "./rules/aeo/non-replicable-value.js";
|
|
54
|
+
export { contentModularityRule } from "./rules/aeo/content-modularity.js";
|
|
55
|
+
export { summaryBaitRule } from "./rules/aeo/summary-bait.js";
|
|
47
56
|
export { cachedFetch, cacheKeyFor } from "./cache.js";
|
|
48
57
|
export { stratifiedSample, inferUrlTemplate } from "./stratified-sample.js";
|
|
49
58
|
export { readState, writeState, computeContentHash, normalizeHtmlForHash, STATE_SCHEMA_VERSION } from "./state.js";
|
|
50
|
-
export { triageFindings } from "./ai/triage.js";
|
|
59
|
+
export { triageFindings, triage } from "./ai/triage.js";
|
|
51
60
|
export { createLanguageModel, detectProvider } from "./ai/adapters/index.js";
|
|
52
61
|
export { PROMPT_VERSION, assignFindingId } from "./ai/prompt.js";
|
|
53
62
|
export { estimateCostUsd } from "./ai/cost.js";
|
|
54
63
|
export * from "./telemetry/index.js";
|
|
55
64
|
export { promptTriageFeedback } from "./ai/feedback-prompt.js";
|
|
65
|
+
export { RULE_SCOPE, isRuleAllowedInDiff } from "./rules/scope.js";
|
|
66
|
+
export { DEFAULT_ANALYTICS_HOSTS, isAnalyticsRequest } from "./analytics-blocklist.js";
|
|
56
67
|
//# sourceMappingURL=index.js.map
|
package/dist/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,cAAc,YAAY,CAAC;AAC3B,cAAc,cAAc,CAAC;AAC7B,cAAc,aAAa,CAAC;AAC5B,cAAc,oBAAoB,CAAC;AACnC,cAAc,yBAAyB,CAAC;AACxC,cAAc,6BAA6B,CAAC;AAC5C,cAAc,gCAAgC,CAAC;AAC/C,cAAc,6BAA6B,CAAC;AAC5C,cAAc,8BAA8B,CAAC;AAC7C,cAAc,mCAAmC,CAAC;AAClD,cAAc,oCAAoC,CAAC;AACnD,cAAc,sCAAsC,CAAC;AACrD,cAAc,iCAAiC,CAAC;AAChD,cAAc,mCAAmC,CAAC;AAClD,cAAc,iCAAiC,CAAC;AAChD,cAAc,uCAAuC,CAAC;AACtD,cAAc,oCAAoC,CAAC;AACnD,cAAc,mCAAmC,CAAC;AAClD,cAAc,iCAAiC,CAAC;AAChD,cAAc,+BAA+B,CAAC;AAC9C,cAAc,4BAA4B,CAAC;AAC3C,cAAc,6BAA6B,CAAC;AAC5C,cAAc,uCAAuC,CAAC;AACtD,cAAc,4BAA4B,CAAC;AAC3C,cAAc,uCAAuC,CAAC;AACtD,cAAc,4CAA4C,CAAC;AAC3D,cAAc,yCAAyC,CAAC;AACxD,cAAc,sCAAsC,CAAC;AACrD,cAAc,gCAAgC,CAAC;AAC/C,cAAc,0BAA0B,CAAC;AACzC,cAAc,iCAAiC,CAAC;AAChD,cAAc,sCAAsC,CAAC;AACrD,cAAc,iCAAiC,CAAC;AAChD,cAAc,mCAAmC,CAAC;AAClD,cAAc,+BAA+B,CAAC;AAC9C,cAAc,wBAAwB,CAAC;AACvC,cAAc,mCAAmC,CAAC;AAClD,cAAc,uCAAuC,CAAC;AACtD,cAAc,iCAAiC,CAAC;AAChD,cAAc,sBAAsB,CAAC;AACrC,cAAc,sBAAsB,CAAC;AACrC,cAAc,uBAAuB,CAAC;AACtC,cAAc,eAAe,CAAC;AAC9B,cAAc,sBAAsB,CAAC;AACrC,cAAc,yBAAyB,CAAC;AACxC,cAAc,8BAA8B,CAAC;AAC7C,OAAO,EAAE,WAAW,EAAE,WAAW,EAAE,MAAM,YAAY,CAAC;AAGtD,OAAO,EAAE,gBAAgB,EAAE,gBAAgB,EAAE,MAAM,wBAAwB,CAAC;AAC5E,OAAO,EAAE,SAAS,EAAE,UAAU,EAAE,kBAAkB,EAAE,oBAAoB,EAAE,oBAAoB,EAAE,MAAM,YAAY,CAAC;AAYnH,OAAO,EAAE,cAAc,EAAE,MAAM,gBAAgB,CAAC;
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
|
package/dist/renderer.d.ts
CHANGED
|
@@ -1,7 +1,21 @@
|
|
|
1
|
+
import { type AnalyticsMode } from "./analytics-blocklist.js";
|
|
1
2
|
export interface RenderOptions {
|
|
2
3
|
browserWsEndpoint?: string;
|
|
3
4
|
concurrency: number;
|
|
4
5
|
timeoutMs: number;
|
|
6
|
+
/**
|
|
7
|
+
* How to handle analytics / telemetry / session-replay beacons.
|
|
8
|
+
* "block" (default) — abort known analytics hosts (Google Analytics, Plausible,
|
|
9
|
+
* Mixpanel, Hotjar, PostHog, Sentry, etc.). Prevents the audit from injecting
|
|
10
|
+
* fake pageviews / sessions into the site owner's dashboards.
|
|
11
|
+
* "allow-first-party" — block third-party analytics only; keep same-origin
|
|
12
|
+
* requests for sites that self-host analytics on their own domain.
|
|
13
|
+
* "allow" — don't intercept anything. Use this only when you're auditing a
|
|
14
|
+
* site you own and explicitly want render-mode traffic in your analytics.
|
|
15
|
+
*/
|
|
16
|
+
analyticsMode?: AnalyticsMode;
|
|
17
|
+
/** Extra host tokens to block in addition to the default list (substring match). */
|
|
18
|
+
extraBlockedHosts?: readonly string[];
|
|
5
19
|
}
|
|
6
20
|
interface RenderedPage {
|
|
7
21
|
url: string;
|
package/dist/renderer.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"renderer.d.ts","sourceRoot":"","sources":["../src/renderer.ts"],"names":[],"mappings":"AAIA,MAAM,WAAW,aAAa;IAC5B,iBAAiB,CAAC,EAAE,MAAM,CAAC;IAC3B,WAAW,EAAE,MAAM,CAAC;IACpB,SAAS,EAAE,MAAM,CAAC;
|
|
1
|
+
{"version":3,"file":"renderer.d.ts","sourceRoot":"","sources":["../src/renderer.ts"],"names":[],"mappings":"AAIA,OAAO,EAAsB,KAAK,aAAa,EAAE,MAAM,0BAA0B,CAAC;AAoClF,MAAM,WAAW,aAAa;IAC5B,iBAAiB,CAAC,EAAE,MAAM,CAAC;IAC3B,WAAW,EAAE,MAAM,CAAC;IACpB,SAAS,EAAE,MAAM,CAAC;IAClB;;;;;;;;;OASG;IACH,aAAa,CAAC,EAAE,aAAa,CAAC;IAC9B,oFAAoF;IACpF,iBAAiB,CAAC,EAAE,SAAS,MAAM,EAAE,CAAC;CACvC;AAED,UAAU,YAAY;IACpB,GAAG,EAAE,MAAM,CAAC;IACZ,IAAI,EAAE,MAAM,CAAC;CACd;AA0ED,wBAAsB,WAAW,CAC/B,KAAK,EAAE,KAAK,CAAC;IAAE,GAAG,EAAE,MAAM,CAAC;IAAC,SAAS,CAAC,EAAE,MAAM,CAAA;CAAE,CAAC,EACjD,SAAS,EAAE,MAAM,GAAG,IAAI,EACxB,OAAO,EAAE,aAAa,GACrB,OAAO,CAAC,YAAY,EAAE,CAAC,CA6IzB"}
|
package/dist/renderer.js
CHANGED
|
@@ -1,6 +1,41 @@
|
|
|
1
1
|
import { createServer } from "node:http";
|
|
2
2
|
import { readFile } from "node:fs/promises";
|
|
3
|
+
import { createRequire } from "node:module";
|
|
3
4
|
import { join, extname } from "node:path";
|
|
5
|
+
import { isAnalyticsRequest } from "./analytics-blocklist.js";
|
|
6
|
+
/**
|
|
7
|
+
* Distinct User-Agent for rendered audits. Includes the standard `+URL` bot
|
|
8
|
+
* marker so server-side analytics filters (GA4, Matomo, Cloudflare) can drop
|
|
9
|
+
* it automatically, and keeps the `compatible` token so sites that sniff real
|
|
10
|
+
* browsers for feature gating still serve content. The version is read from
|
|
11
|
+
* package.json at module load so it stays accurate across releases.
|
|
12
|
+
*/
|
|
13
|
+
const RENDER_VERSION = (() => {
|
|
14
|
+
try {
|
|
15
|
+
const require = createRequire(import.meta.url);
|
|
16
|
+
const pkg = require("../package.json");
|
|
17
|
+
return pkg.version ?? "0";
|
|
18
|
+
}
|
|
19
|
+
catch {
|
|
20
|
+
return "0";
|
|
21
|
+
}
|
|
22
|
+
})();
|
|
23
|
+
const RENDER_USER_AGENT = `Mozilla/5.0 (compatible; pseolint-render/${RENDER_VERSION}; +https://pseolint.dev/bot)`;
|
|
24
|
+
/**
|
|
25
|
+
* Playwright resource types that can carry analytics beacons. CSS, fonts,
|
|
26
|
+
* images, and media typically don't — skipping them keeps the route handler
|
|
27
|
+
* off most subresource requests and preserves Playwright's fast path.
|
|
28
|
+
*/
|
|
29
|
+
const INTERCEPTED_RESOURCE_TYPES = new Set([
|
|
30
|
+
"document",
|
|
31
|
+
"script",
|
|
32
|
+
"xhr",
|
|
33
|
+
"fetch",
|
|
34
|
+
"websocket",
|
|
35
|
+
"eventsource",
|
|
36
|
+
"ping",
|
|
37
|
+
"other", // navigator.sendBeacon shows up as "other" in some Playwright versions
|
|
38
|
+
]);
|
|
4
39
|
const MIME_TYPES = {
|
|
5
40
|
".html": "text/html",
|
|
6
41
|
".htm": "text/html",
|
|
@@ -82,6 +117,79 @@ export async function renderPages(pages, sourceDir, options) {
|
|
|
82
117
|
else {
|
|
83
118
|
browser = await pw.chromium.launch({ headless: true });
|
|
84
119
|
}
|
|
120
|
+
// One browser context carries the UA + privacy headers + init script for every
|
|
121
|
+
// audited page. `Sec-GPC` signals privacy-respecting analytics stacks to skip
|
|
122
|
+
// collection (DNT is kept for legacy consumers but is deprecated and mostly
|
|
123
|
+
// ignored today). `window.__pseolint_audit` lets cooperating sites
|
|
124
|
+
// short-circuit their own analytics bootloader.
|
|
125
|
+
const context = await browser.newContext({
|
|
126
|
+
userAgent: RENDER_USER_AGENT,
|
|
127
|
+
extraHTTPHeaders: {
|
|
128
|
+
"DNT": "1",
|
|
129
|
+
"Sec-GPC": "1",
|
|
130
|
+
},
|
|
131
|
+
});
|
|
132
|
+
await context.addInitScript(() => {
|
|
133
|
+
// @ts-ignore -- evaluated in the browser, window is the page's window
|
|
134
|
+
window.__pseolint_audit = true;
|
|
135
|
+
});
|
|
136
|
+
const analyticsMode = options.analyticsMode ?? "block";
|
|
137
|
+
if (analyticsMode !== "allow") {
|
|
138
|
+
// eslint-disable-next-line @typescript-eslint/no-explicit-any
|
|
139
|
+
await context.route("**/*", (route, request) => {
|
|
140
|
+
let blocked = false;
|
|
141
|
+
try {
|
|
142
|
+
// Skip resource types that can't carry an analytics beacon — CSS, fonts,
|
|
143
|
+
// images, media. Keeps the fast path for the vast majority of subresources
|
|
144
|
+
// and preserves Playwright's in-browser networking.
|
|
145
|
+
const resourceType = typeof request.resourceType === "function" ? request.resourceType() : "";
|
|
146
|
+
if (resourceType && !INTERCEPTED_RESOURCE_TYPES.has(resourceType)) {
|
|
147
|
+
// Fall through to continue().
|
|
148
|
+
}
|
|
149
|
+
else {
|
|
150
|
+
const requestUrl = request.url();
|
|
151
|
+
// Use the top-level navigation URL as the page origin for first-party
|
|
152
|
+
// matching. `request.frame().url()` is `about:blank` before the first
|
|
153
|
+
// navigation commits, which is an opaque origin and would otherwise
|
|
154
|
+
// under-protect same-origin first-party mode.
|
|
155
|
+
const pageOrigin = (() => {
|
|
156
|
+
try {
|
|
157
|
+
const frameUrl = request.frame?.().url?.() ?? "";
|
|
158
|
+
if (frameUrl && frameUrl !== "about:blank")
|
|
159
|
+
return new URL(frameUrl).origin;
|
|
160
|
+
if (typeof request.isNavigationRequest === "function" && request.isNavigationRequest()) {
|
|
161
|
+
return new URL(requestUrl).origin;
|
|
162
|
+
}
|
|
163
|
+
return undefined;
|
|
164
|
+
}
|
|
165
|
+
catch {
|
|
166
|
+
return undefined;
|
|
167
|
+
}
|
|
168
|
+
})();
|
|
169
|
+
if (isAnalyticsRequest(requestUrl, {
|
|
170
|
+
mode: analyticsMode,
|
|
171
|
+
pageOrigin,
|
|
172
|
+
extraBlockedHosts: options.extraBlockedHosts,
|
|
173
|
+
})) {
|
|
174
|
+
blocked = true;
|
|
175
|
+
}
|
|
176
|
+
}
|
|
177
|
+
}
|
|
178
|
+
catch {
|
|
179
|
+
// fall through on any interception-time error — better to let the
|
|
180
|
+
// request proceed than to break rendering over a bad URL parse.
|
|
181
|
+
}
|
|
182
|
+
// Exactly one of abort()/continue() is called; each is wrapped to swallow
|
|
183
|
+
// "Route is already handled" errors that can fire during teardown when a
|
|
184
|
+
// page has been closed mid-flight.
|
|
185
|
+
if (blocked) {
|
|
186
|
+
route.abort().catch(() => { });
|
|
187
|
+
}
|
|
188
|
+
else {
|
|
189
|
+
route.continue().catch(() => { });
|
|
190
|
+
}
|
|
191
|
+
});
|
|
192
|
+
}
|
|
85
193
|
let server = null;
|
|
86
194
|
if (sourceDir) {
|
|
87
195
|
server = await startStaticServer(sourceDir);
|
|
@@ -93,7 +201,7 @@ export async function renderPages(pages, sourceDir, options) {
|
|
|
93
201
|
const current = index;
|
|
94
202
|
index += 1;
|
|
95
203
|
const entry = pages[current];
|
|
96
|
-
const page = await
|
|
204
|
+
const page = await context.newPage();
|
|
97
205
|
let navigateUrl = entry.url;
|
|
98
206
|
if (entry.localPath && server) {
|
|
99
207
|
const relativePath = entry.localPath.replace(/\\/g, "/");
|
|
@@ -116,9 +224,27 @@ export async function renderPages(pages, sourceDir, options) {
|
|
|
116
224
|
}
|
|
117
225
|
}
|
|
118
226
|
const workers = Array.from({ length: Math.min(options.concurrency, pages.length) }, () => processNext());
|
|
119
|
-
|
|
120
|
-
|
|
121
|
-
|
|
227
|
+
try {
|
|
228
|
+
await Promise.all(workers);
|
|
229
|
+
}
|
|
230
|
+
finally {
|
|
231
|
+
// Always tear down server + context + browser, even if a worker threw.
|
|
232
|
+
// Leaking a Chromium process across audit runs is expensive; each of
|
|
233
|
+
// these calls is independently guarded so one failure doesn't skip the
|
|
234
|
+
// others.
|
|
235
|
+
try {
|
|
236
|
+
server?.close();
|
|
237
|
+
}
|
|
238
|
+
catch { /* noop */ }
|
|
239
|
+
try {
|
|
240
|
+
await context.close();
|
|
241
|
+
}
|
|
242
|
+
catch { /* noop */ }
|
|
243
|
+
try {
|
|
244
|
+
await browser.close();
|
|
245
|
+
}
|
|
246
|
+
catch { /* noop */ }
|
|
247
|
+
}
|
|
122
248
|
return results;
|
|
123
249
|
}
|
|
124
250
|
//# sourceMappingURL=renderer.js.map
|
package/dist/renderer.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"renderer.js","sourceRoot":"","sources":["../src/renderer.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,YAAY,EAAE,MAAM,WAAW,CAAC;AACzC,OAAO,EAAE,QAAQ,EAAE,MAAM,kBAAkB,CAAC;AAC5C,OAAO,EAAE,IAAI,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;
|
|
1
|
+
{"version":3,"file":"renderer.js","sourceRoot":"","sources":["../src/renderer.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"rule-references.d.ts","sourceRoot":"","sources":["../src/rule-references.ts"],"names":[],"mappings":"AAAA,eAAO,MAAM,eAAe,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,
|
|
1
|
+
{"version":3,"file":"rule-references.d.ts","sourceRoot":"","sources":["../src/rule-references.ts"],"names":[],"mappings":"AAAA,eAAO,MAAM,eAAe,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CA6ClD,CAAC"}
|
package/dist/rule-references.js
CHANGED
|
@@ -34,5 +34,14 @@ export const RULE_REFERENCES = {
|
|
|
34
34
|
"cannibal/url-pattern": "https://developers.google.com/search/docs/crawling-indexing/consolidate-duplicate-urls",
|
|
35
35
|
"data/missing-binding": "https://developers.google.com/search/docs/essentials/spam-policies#thin-content",
|
|
36
36
|
"data/identical-across-pages": "https://developers.google.com/search/docs/essentials/spam-policies#scraped-content",
|
|
37
|
+
"aeo/llms-txt": "https://llmstxt.org",
|
|
38
|
+
"aeo/crawler-access": "https://www.robotstxt.org/robotstxt.html",
|
|
39
|
+
"aeo/freshness-signals": "https://developers.google.com/search/docs/appearance/publication-dates",
|
|
40
|
+
"aeo/faq-coverage": "https://developers.google.com/search/docs/appearance/structured-data/faqpage",
|
|
41
|
+
"aeo/answer-first": "https://developers.google.com/search/docs/appearance/featured-snippets",
|
|
42
|
+
"aeo/citable-facts": "https://developers.google.com/search/docs/fundamentals/creating-helpful-content",
|
|
43
|
+
"aeo/non-replicable-value": "https://developers.google.com/search/docs/fundamentals/creating-helpful-content",
|
|
44
|
+
"aeo/content-modularity": "https://developers.google.com/search/docs/appearance/structured-data/intro-structured-data",
|
|
45
|
+
"aeo/summary-bait": "https://developers.google.com/search/docs/fundamentals/creating-helpful-content",
|
|
37
46
|
};
|
|
38
47
|
//# sourceMappingURL=rule-references.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"rule-references.js","sourceRoot":"","sources":["../src/rule-references.ts"],"names":[],"mappings":"AAAA,MAAM,CAAC,MAAM,eAAe,GAA2B;IACrD,qBAAqB,EAAE,oFAAoF;IAC3G,kBAAkB,EAAE,kFAAkF;IACtG,mBAAmB,EAAE,iFAAiF;IACtG,wBAAwB,EAAE,iFAAiF;IAC3G,yBAAyB,EAAE,kFAAkF;IAC7G,2BAA2B,EAAE,kGAAkG;IAC/H,sBAAsB,EAAE,kFAAkF;IAC1G,wBAAwB,EAAE,kFAAkF;IAC5G,sBAAsB,EAAE,iFAAiF;IACzG,yBAAyB,EAAE,gFAAgF;IAC3G,4BAA4B,EAAE,uEAAuE;IACrG,wBAAwB,EAAE,sFAAsF;IAChH,sBAAsB,EAAE,sFAAsF;IAC9G,oBAAoB,EAAE,6EAA6E;IACnG,iBAAiB,EAAE,6EAA6E;IAChG,4BAA4B,EAAE,6EAA6E;IAC3G,iBAAiB,EAAE,6EAA6E;IAChG,kBAAkB,EAAE,6EAA6E;IACjG,wBAAwB,EAAE,0EAA0E;IACpG,4BAA4B,EAAE,wFAAwF;IACtH,iCAAiC,EAAE,wFAAwF;IAC3H,8BAA8B,EAAE,4EAA4E;IAC5G,2BAA2B,EAAE,+EAA+E;IAC5G,qBAAqB,EAAE,2EAA2E;IAClG,eAAe,EAAE,6EAA6E;IAC9F,sBAAsB,EAAE,8DAA8D;IACtF,2BAA2B,EAAE,iGAAiG;IAC9H,sBAAsB,EAAE,4FAA4F;IACpH,wBAAwB,EAAE,4FAA4F;IACtH,oBAAoB,EAAE,4FAA4F;IAClH,wBAAwB,EAAE,wFAAwF;IAClH,4BAA4B,EAAE,wFAAwF;IACtH,sBAAsB,EAAE,wFAAwF;IAChH,sBAAsB,EAAE,iFAAiF;IACzG,6BAA6B,EAAE,oFAAoF;
|
|
1
|
+
{"version":3,"file":"rule-references.js","sourceRoot":"","sources":["../src/rule-references.ts"],"names":[],"mappings":"AAAA,MAAM,CAAC,MAAM,eAAe,GAA2B;IACrD,qBAAqB,EAAE,oFAAoF;IAC3G,kBAAkB,EAAE,kFAAkF;IACtG,mBAAmB,EAAE,iFAAiF;IACtG,wBAAwB,EAAE,iFAAiF;IAC3G,yBAAyB,EAAE,kFAAkF;IAC7G,2BAA2B,EAAE,kGAAkG;IAC/H,sBAAsB,EAAE,kFAAkF;IAC1G,wBAAwB,EAAE,kFAAkF;IAC5G,sBAAsB,EAAE,iFAAiF;IACzG,yBAAyB,EAAE,gFAAgF;IAC3G,4BAA4B,EAAE,uEAAuE;IACrG,wBAAwB,EAAE,sFAAsF;IAChH,sBAAsB,EAAE,sFAAsF;IAC9G,oBAAoB,EAAE,6EAA6E;IACnG,iBAAiB,EAAE,6EAA6E;IAChG,4BAA4B,EAAE,6EAA6E;IAC3G,iBAAiB,EAAE,6EAA6E;IAChG,kBAAkB,EAAE,6EAA6E;IACjG,wBAAwB,EAAE,0EAA0E;IACpG,4BAA4B,EAAE,wFAAwF;IACtH,iCAAiC,EAAE,wFAAwF;IAC3H,8BAA8B,EAAE,4EAA4E;IAC5G,2BAA2B,EAAE,+EAA+E;IAC5G,qBAAqB,EAAE,2EAA2E;IAClG,eAAe,EAAE,6EAA6E;IAC9F,sBAAsB,EAAE,8DAA8D;IACtF,2BAA2B,EAAE,iGAAiG;IAC9H,sBAAsB,EAAE,4FAA4F;IACpH,wBAAwB,EAAE,4FAA4F;IACtH,oBAAoB,EAAE,4FAA4F;IAClH,wBAAwB,EAAE,wFAAwF;IAClH,4BAA4B,EAAE,wFAAwF;IACtH,sBAAsB,EAAE,wFAAwF;IAChH,sBAAsB,EAAE,iFAAiF;IACzG,6BAA6B,EAAE,oFAAoF;IACnH,cAAc,EAAE,qBAAqB;IACrC,oBAAoB,EAAE,0CAA0C;IAChE,uBAAuB,EAAE,wEAAwE;IACjG,kBAAkB,EAAE,8EAA8E;IAClG,kBAAkB,EAAE,wEAAwE;IAC5F,mBAAmB,EAAE,iFAAiF;IACtG,0BAA0B,EAAE,iFAAiF;IAC7G,wBAAwB,EAAE,4FAA4F;IACtH,kBAAkB,EAAE,iFAAiF;CACtG,CAAC"}
|
|
@@ -0,0 +1,18 @@
|
|
|
1
|
+
import type { EntityMaskPattern, ParsedPage, RuleResult } from "../../types.js";
|
|
2
|
+
export interface AnswerFirstOptions {
|
|
3
|
+
/** First paragraph should fit under this many words to be "extractable". Default: 100. */
|
|
4
|
+
maxFirstParagraphWords?: number;
|
|
5
|
+
/** Opener longer than this is penalized as too long to extract. Default: 150. */
|
|
6
|
+
paragraphTooLongWords?: number;
|
|
7
|
+
/** Minimum score-points for a passing opener. Default: 2. */
|
|
8
|
+
minScoreToPass?: number;
|
|
9
|
+
}
|
|
10
|
+
/**
|
|
11
|
+
* Extract the first paragraph-ish content block after the H1. Walks the DOM in document
|
|
12
|
+
* order starting at the H1 and finds the next `<p>` with >=5 words that is NOT inside a
|
|
13
|
+
* nav/aside/footer/header/breadcrumb. Falls back to the first qualifying `<p>` inside
|
|
14
|
+
* `main`/`article` if the H1-sibling walk finds nothing.
|
|
15
|
+
*/
|
|
16
|
+
export declare function extractFirstParagraph(html: string): string;
|
|
17
|
+
export declare function answerFirstRule(pages: ParsedPage[], entityPatterns: EntityMaskPattern[], options?: AnswerFirstOptions): RuleResult[];
|
|
18
|
+
//# sourceMappingURL=answer-first.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"answer-first.d.ts","sourceRoot":"","sources":["../../../src/rules/aeo/answer-first.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,iBAAiB,EAAE,UAAU,EAAE,UAAU,EAAE,MAAM,gBAAgB,CAAC;AAEhF,MAAM,WAAW,kBAAkB;IACjC,0FAA0F;IAC1F,sBAAsB,CAAC,EAAE,MAAM,CAAC;IAChC,iFAAiF;IACjF,qBAAqB,CAAC,EAAE,MAAM,CAAC;IAC/B,6DAA6D;IAC7D,cAAc,CAAC,EAAE,MAAM,CAAC;CACzB;AA6BD;;;;;GAKG;AACH,wBAAgB,qBAAqB,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM,CA0D1D;AA8CD,wBAAgB,eAAe,CAC7B,KAAK,EAAE,UAAU,EAAE,EACnB,cAAc,EAAE,iBAAiB,EAAE,EACnC,OAAO,CAAC,EAAE,kBAAkB,GAC3B,UAAU,EAAE,CA0Dd"}
|
|
@@ -0,0 +1,191 @@
|
|
|
1
|
+
import { load } from "cheerio";
|
|
2
|
+
const BOILERPLATE_PATTERNS = [
|
|
3
|
+
/^\s*(welcome\s+to|our\s+(complete|comprehensive|ultimate)|in\s+this\s+(post|article|guide)|home\s*»|skip\s+to)/i,
|
|
4
|
+
/^\s*(generate|create|build)\s+your\s+/i,
|
|
5
|
+
];
|
|
6
|
+
const NUMBER_PATTERNS = [
|
|
7
|
+
/\$[\d,]+(\.\d{2})?/,
|
|
8
|
+
/\b\d+(\.\d+)?\s*%/,
|
|
9
|
+
/\b\d+\s*(days?|weeks?|months?|years?|business\s+days?|hours?|minutes?)\b/i,
|
|
10
|
+
/\b(19|20)\d{2}\b/, // years
|
|
11
|
+
];
|
|
12
|
+
/**
|
|
13
|
+
* "Proper-noun entity" detector. Accepts multi-word proper nouns (e.g. "Secretary of State",
|
|
14
|
+
* "Delaware Division") AND standalone capitalized entities that are not sentence-initial
|
|
15
|
+
* (e.g. "...with the Delaware office", "filed in California").
|
|
16
|
+
*/
|
|
17
|
+
const MULTI_WORD_PROPER_NOUN = /\b[A-Z][a-z]+(?:\s+(?:of\s+|de\s+|and\s+)?[A-Z][a-z]+)+\b/;
|
|
18
|
+
const SINGLE_WORD_PROPER_NOUN = /(?<!^)(?<=\s)[A-Z][a-z]{2,}\b/;
|
|
19
|
+
const FORM_PATTERN = /\bForm\s+[A-Z0-9-]+\b/i;
|
|
20
|
+
function wordCount(text) {
|
|
21
|
+
const trimmed = text.trim();
|
|
22
|
+
if (!trimmed)
|
|
23
|
+
return 0;
|
|
24
|
+
return trimmed.split(/\s+/).length;
|
|
25
|
+
}
|
|
26
|
+
/**
|
|
27
|
+
* Extract the first paragraph-ish content block after the H1. Walks the DOM in document
|
|
28
|
+
* order starting at the H1 and finds the next `<p>` with >=5 words that is NOT inside a
|
|
29
|
+
* nav/aside/footer/header/breadcrumb. Falls back to the first qualifying `<p>` inside
|
|
30
|
+
* `main`/`article` if the H1-sibling walk finds nothing.
|
|
31
|
+
*/
|
|
32
|
+
export function extractFirstParagraph(html) {
|
|
33
|
+
const $ = load(html);
|
|
34
|
+
const h1 = $("h1").first();
|
|
35
|
+
const excludeSel = "nav, aside, footer, header, [role=navigation], .breadcrumbs, .breadcrumb";
|
|
36
|
+
const isExcluded = (el) => {
|
|
37
|
+
const $el = $(el);
|
|
38
|
+
return $el.closest(excludeSel).length > 0;
|
|
39
|
+
};
|
|
40
|
+
const pickFirstQualifyingP = (scope) => {
|
|
41
|
+
let found = null;
|
|
42
|
+
scope.find("p").each((_, el) => {
|
|
43
|
+
if (found)
|
|
44
|
+
return false;
|
|
45
|
+
if (isExcluded(el))
|
|
46
|
+
return undefined;
|
|
47
|
+
const text = $(el).text().trim();
|
|
48
|
+
if (wordCount(text) >= 5) {
|
|
49
|
+
found = text;
|
|
50
|
+
return false;
|
|
51
|
+
}
|
|
52
|
+
return undefined;
|
|
53
|
+
});
|
|
54
|
+
return found;
|
|
55
|
+
};
|
|
56
|
+
// Walk forward from the H1 through the document, checking every `<p>` that comes after it.
|
|
57
|
+
// cheerio has no compareDocumentPosition; emulate with a boolean gate in document order.
|
|
58
|
+
if (h1.length > 0) {
|
|
59
|
+
const h1El = h1.get(0);
|
|
60
|
+
let passedH1 = false;
|
|
61
|
+
let found = null;
|
|
62
|
+
$("h1, p").each((_, el) => {
|
|
63
|
+
if (found)
|
|
64
|
+
return false;
|
|
65
|
+
if (el === h1El) {
|
|
66
|
+
passedH1 = true;
|
|
67
|
+
return undefined;
|
|
68
|
+
}
|
|
69
|
+
if (!passedH1)
|
|
70
|
+
return undefined;
|
|
71
|
+
const tag = el.tagName?.toLowerCase?.();
|
|
72
|
+
if (tag !== "p")
|
|
73
|
+
return undefined;
|
|
74
|
+
if (isExcluded(el))
|
|
75
|
+
return undefined;
|
|
76
|
+
const text = $(el).text().trim();
|
|
77
|
+
if (wordCount(text) >= 5) {
|
|
78
|
+
found = text;
|
|
79
|
+
return false;
|
|
80
|
+
}
|
|
81
|
+
return undefined;
|
|
82
|
+
});
|
|
83
|
+
if (found)
|
|
84
|
+
return found;
|
|
85
|
+
}
|
|
86
|
+
// Fallbacks in order of specificity.
|
|
87
|
+
for (const scope of [$("main").first(), $("article").first(), $("body").first()]) {
|
|
88
|
+
if (scope.length === 0)
|
|
89
|
+
continue;
|
|
90
|
+
const found = pickFirstQualifyingP(scope);
|
|
91
|
+
if (found)
|
|
92
|
+
return found;
|
|
93
|
+
}
|
|
94
|
+
return "";
|
|
95
|
+
}
|
|
96
|
+
function applyEntityMask(text, patterns) {
|
|
97
|
+
let out = text;
|
|
98
|
+
for (const p of patterns) {
|
|
99
|
+
out = out.replace(p.pattern, p.placeholder);
|
|
100
|
+
}
|
|
101
|
+
return out;
|
|
102
|
+
}
|
|
103
|
+
function hasConcreteFact(text) {
|
|
104
|
+
return NUMBER_PATTERNS.some((re) => re.test(text)) || FORM_PATTERN.test(text);
|
|
105
|
+
}
|
|
106
|
+
function hasNamedEntity(text, entityPatterns) {
|
|
107
|
+
if (MULTI_WORD_PROPER_NOUN.test(text))
|
|
108
|
+
return true;
|
|
109
|
+
if (SINGLE_WORD_PROPER_NOUN.test(text))
|
|
110
|
+
return true;
|
|
111
|
+
// A user-defined entity pattern matching the opener also counts as a named entity —
|
|
112
|
+
// this is how pSEO operators declare their primary entity dimension (states, cities, etc.).
|
|
113
|
+
for (const p of entityPatterns) {
|
|
114
|
+
if (p.pattern.test(text)) {
|
|
115
|
+
// Reset lastIndex for global regexes so subsequent callers see fresh state.
|
|
116
|
+
p.pattern.lastIndex = 0;
|
|
117
|
+
return true;
|
|
118
|
+
}
|
|
119
|
+
p.pattern.lastIndex = 0;
|
|
120
|
+
}
|
|
121
|
+
return false;
|
|
122
|
+
}
|
|
123
|
+
function hasCompleteSentence(text) {
|
|
124
|
+
return /[.!?]\s*$/.test(text.trim()) && wordCount(text) >= 8;
|
|
125
|
+
}
|
|
126
|
+
function isBoilerplateOpener(text) {
|
|
127
|
+
return BOILERPLATE_PATTERNS.some((re) => re.test(text));
|
|
128
|
+
}
|
|
129
|
+
export function answerFirstRule(pages, entityPatterns, options) {
|
|
130
|
+
const maxWords = options?.maxFirstParagraphWords ?? 100;
|
|
131
|
+
const tooLong = options?.paragraphTooLongWords ?? 150;
|
|
132
|
+
const minPass = options?.minScoreToPass ?? 2;
|
|
133
|
+
const scored = [];
|
|
134
|
+
for (const page of pages) {
|
|
135
|
+
const paragraph = extractFirstParagraph(page.html);
|
|
136
|
+
if (!paragraph)
|
|
137
|
+
continue;
|
|
138
|
+
const opener = paragraph.split(/\s+/).slice(0, maxWords).join(" ");
|
|
139
|
+
const wc = wordCount(paragraph);
|
|
140
|
+
let score = 0;
|
|
141
|
+
if (hasConcreteFact(opener))
|
|
142
|
+
score += 1;
|
|
143
|
+
if (hasNamedEntity(opener, entityPatterns))
|
|
144
|
+
score += 1;
|
|
145
|
+
if (hasCompleteSentence(opener))
|
|
146
|
+
score += 1;
|
|
147
|
+
if (wc > tooLong)
|
|
148
|
+
score -= 1;
|
|
149
|
+
if (isBoilerplateOpener(opener))
|
|
150
|
+
score -= 2;
|
|
151
|
+
const masked = applyEntityMask(opener, entityPatterns);
|
|
152
|
+
scored.push({ url: page.url, score, paragraph: opener, wordCount: wc, masked });
|
|
153
|
+
}
|
|
154
|
+
const maskFrequency = new Map();
|
|
155
|
+
for (const s of scored) {
|
|
156
|
+
maskFrequency.set(s.masked, (maskFrequency.get(s.masked) ?? 0) + 1);
|
|
157
|
+
}
|
|
158
|
+
const templateThreshold = Math.max(3, Math.floor(scored.length * 0.2));
|
|
159
|
+
const findings = [];
|
|
160
|
+
for (const s of scored) {
|
|
161
|
+
let finalScore = s.score;
|
|
162
|
+
const isTemplated = (maskFrequency.get(s.masked) ?? 0) >= templateThreshold && scored.length > 3;
|
|
163
|
+
if (isTemplated)
|
|
164
|
+
finalScore -= 3;
|
|
165
|
+
if (finalScore >= minPass)
|
|
166
|
+
continue;
|
|
167
|
+
const severity = finalScore <= 0 ? "error" : "warning";
|
|
168
|
+
const reasons = [];
|
|
169
|
+
if (isTemplated)
|
|
170
|
+
reasons.push("opener is identical to other pages after entity masking");
|
|
171
|
+
if (s.wordCount > tooLong)
|
|
172
|
+
reasons.push(`opener is ${s.wordCount} words (too long to extract)`);
|
|
173
|
+
if (isBoilerplateOpener(s.paragraph))
|
|
174
|
+
reasons.push("opener is boilerplate ('Welcome to...', 'Generate your...')");
|
|
175
|
+
if (!hasConcreteFact(s.paragraph))
|
|
176
|
+
reasons.push("no specific numbers, dates, or dollar amounts");
|
|
177
|
+
if (!hasNamedEntity(s.paragraph, entityPatterns))
|
|
178
|
+
reasons.push("no named entities (agencies, laws, proper nouns)");
|
|
179
|
+
findings.push({
|
|
180
|
+
ruleId: "aeo/answer-first",
|
|
181
|
+
severity,
|
|
182
|
+
message: `${s.url} does not open with a direct, extractable answer${reasons.length ? `: ${reasons.join("; ")}` : "."}`,
|
|
183
|
+
pageUrl: s.url,
|
|
184
|
+
fix: `Restructure the template to open with entity-specific facts. Instead of boilerplate or a topic preamble, ` +
|
|
185
|
+
`lead with a complete-answer sentence containing the key number, date, agency, or form name a reader ` +
|
|
186
|
+
`(or AI Overview) would cite. Target: <${maxWords} words, at least one concrete number, at least one named entity.`,
|
|
187
|
+
});
|
|
188
|
+
}
|
|
189
|
+
return findings;
|
|
190
|
+
}
|
|
191
|
+
//# sourceMappingURL=answer-first.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"answer-first.js","sourceRoot":"","sources":["../../../src/rules/aeo/answer-first.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
import type { EntityMaskPattern, ParsedPage, RuleResult } from "../../types.js";
|
|
2
|
+
export interface CitableFactsOptions {
|
|
3
|
+
/** Below this count → error. Default: 3. */
|
|
4
|
+
minFactsPerPage?: number;
|
|
5
|
+
/** At or above this count → pass. Default: 8. */
|
|
6
|
+
targetFactsPerPage?: number;
|
|
7
|
+
}
|
|
8
|
+
export declare function citableFactsRule(pages: ParsedPage[], entityPatterns: EntityMaskPattern[], options?: CitableFactsOptions): RuleResult[];
|
|
9
|
+
//# sourceMappingURL=citable-facts.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"citable-facts.d.ts","sourceRoot":"","sources":["../../../src/rules/aeo/citable-facts.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,iBAAiB,EAAE,UAAU,EAAE,UAAU,EAAE,MAAM,gBAAgB,CAAC;AAEhF,MAAM,WAAW,mBAAmB;IAClC,4CAA4C;IAC5C,eAAe,CAAC,EAAE,MAAM,CAAC;IACzB,iDAAiD;IACjD,kBAAkB,CAAC,EAAE,MAAM,CAAC;CAC7B;AAkCD,wBAAgB,gBAAgB,CAC9B,KAAK,EAAE,UAAU,EAAE,EACnB,cAAc,EAAE,iBAAiB,EAAE,EACnC,OAAO,CAAC,EAAE,mBAAmB,GAC5B,UAAU,EAAE,CAmEd"}
|