npm package discovery and stats viewer.

Discover Tips

  • General search

    [free text search, go nuts!]

  • Package details

    pkg:[package-name]

  • User packages

    @[username]

Sponsor

Optimize Toolset

I’ve always been into building performant and accessible sites, but lately I’ve been taking it extremely seriously. So much so that I’ve been building a tool to help me optimize and monitor the sites that I build to make sure that I’m making an attempt to offer the best experience to those who visit them. If you’re into performant, accessible and SEO friendly sites, you might like it too! You can check it out at Optimize Toolset.

About

Hi, 👋, I’m Ryan Hefner  and I built this site for me, and you! The goal of this site was to provide an easy way for me to check the stats on my npm packages, both for prioritizing issues and updates, and to give me a little kick in the pants to keep up on stuff.

As I was building it, I realized that I was actually using the tool to build the tool, and figured I might as well put this out there and hopefully others will find it to be a fast and useful way to search and browse npm packages as I have.

If you’re interested in other things I’m working on, follow me on Twitter or check out the open source projects I’ve been publishing on GitHub.

I am also working on a Twitter bot for this site to tweet the most popular, newest, random packages from npm. Please follow that account now and it will start sending out packages soon–ish.

Open Software & Tools

This site wouldn’t be possible without the immense generosity and tireless efforts from the people who make contributions to the world and share their work via open source initiatives. Thank you 🙏

© 2026 – Pkg Stats / Ryan Hefner

@devchecks/pci-pagecheck

v0.1.0

Published

PCI DSS readiness aid for payment pages: script inventory against an approved baseline, CSP review, card-data exposure checks and control-mapped evidence.

Readme

@devchecks/pci-pagecheck

A readiness aid for payment pages. It:

  • inventories every script the browser actually runs, including ones injected later by tag managers, with SHA-256 hashes, and compares them with an approved baseline that records a business justification for each script
  • identifies third-party scripts, categorized (payment provider, tag manager, analytics, session replay, advertising...), and flags missing Subresource Integrity
  • reviews the Content-Security-Policy and security headers: unsafe-inline, unsafe-eval, wildcards, JSONP-bypassable hosts, object-src, base-uri, form-action, frame-ancestors, connect-src, reporting, report-only mode, HSTS
  • flags card-data exposure: card fields in the merchant DOM (instead of a provider iframe), card forms posting over HTTP or to unknown origins, GET forms, and first-party code that logs, stores or sends card data to analytics; also hard-coded card numbers (Luhn-checked, with test cards ignored)
  • generates evidence mapped to PCI DSS v4.0.1 requirements 6.4.3, 11.6.1, 4.2.1, 3.3.1, 3.5.1 and 6.2.4, saying what was collected automatically and what still needs manual evidence

This is a PCI readiness aid, not a PCI DSS assessment or compliance certification. It does not replace a QSA or your acquirer's requirements.

CLI

npm i -D @devchecks/pci-pagecheck playwright && npx playwright install chromium

# 1. Record the current scripts as the approved baseline, then add justifications and approvers
npx pci-pagecheck approve https://staging.shop.example/checkout -b pci-scripts.json

# 2. Check (in CI, or on a schedule for 11.6.1 change detection)
npx pci-pagecheck https://staging.shop.example/checkout -b pci-scripts.json \
  --source src/checkout --evidence pci-evidence.md --fail-on high

pci-scripts.json entry: { "id": "https://js.stripe.com/v3/", "hash": "sha256-…", "justification": "Stripe Elements card fields", "approvedBy": "security@", "approvedAt": "2026-10-01" }. Leave hash out for scripts whose content legitimately changes (vendor SDKs), and rely on the vendor's integrity controls for those.

Options: --first-party <origins>, --payment-origin <origins> (allowed card form targets), --wait-for <selector>. A config file (pci-pagecheck.config.json) takes the same keys.

A changed hash on an approved script is reported as critical (script-integrity-changed). Treat it as possible skimming until someone explains it.

Browser / CDN

Run it on a staging copy of the page:

<script src="https://cdn.jsdelivr.net/gh/ravikiran476/[email protected]/cdn/pci-pagecheck.min.js"></script>
<script>
  PCIPageCheck.check({ baseline }).then((r) => {
    console.table(r.inventory);
    console.log(PCIPageCheck.evidenceToMarkdown(PCIPageCheck.buildEvidence(r)));
  });
</script>

In the browser, cross-origin scripts can only be hashed when they are served with CORS. The Node/Playwright scanner captures every script body from the network.