bluemonday VS npmgraph

Compare bluemonday vs npmgraph and see what are their differences.

bluemonday

bluemonday: a fast golang HTML sanitizer (inspired by the OWASP Java HTML Sanitizer) to scrub user generated content of XSS (by microcosm-cc)

npmgraph

A tool for exploring NPM modules and dependencies (by npmgraph)
InfluxDB - Power Real-Time Data Analytics at Scale
Get real-time insights from all types of time series data with InfluxDB. Ingest, query, and analyze billions of data points in real-time with unbounded cardinality.
www.influxdata.com
featured
SaaSHub - Software Alternatives and Reviews
SaaSHub helps you find the best software and product alternatives
www.saashub.com
featured
bluemonday npmgraph
6 10
2,977 442
0.9% 1.8%
5.1 8.6
about 1 month ago 8 days ago
Go TypeScript
GNU General Public License v3.0 or later MIT License
The number of mentions indicates the total number of mentions that we've tracked plus the number of user suggested alternatives.
Stars - the number of stars that a project has on GitHub. Growth - month over month growth in stars.
Activity is a relative number indicating how actively a project is being developed. Recent commits have higher weight than older ones.
For example, an activity of 9.0 indicates that a project is amongst the top 10% of the most actively developed projects that we are tracking.

bluemonday

Posts with mentions or reviews of bluemonday. We have used some of these posts to build our list of alternatives and similar projects. The last one was on 2023-04-10.
  • Sponsor the open source projects you depend on
    6 projects | news.ycombinator.com | 10 Apr 2023
    I'm on the receiving end of donations from sourcegraph for this. It's around $10 per month from that single donation and is for the only Go HTML santizer, which you use when you have user generated / untrusted input that you need to display as HTML. https://github.com/microcosm-cc/bluemonday

    For me the library has been good enough for my own use for a very very long time. I mostly neglect it unless there's some critical issue. I don't improve it at all as my time is better spent on my day job.

    I've often thought that there's room for improvement such as a DOM style santizer to validate input rather than just a SAX style sanitizer, perhaps formatting of output in addition to sanitising input, transformation rules, etc.

    When I got the donation I was surprised, first ever bit of support for open source software I'd written (as this was not written on company dime).

    Even at $10 per month it's motivating enough to think someone values it. If it accrues into something significant I may actually feel motivated to improve it.

    Interesting is that I'd regard this as successful by usage, it's used by virtually everything in the Go world that makes a website.

    Perhaps people don't know it exists though? And for that awareness thanks to thanks.dev

  • How to secure POST API endpoint getting rich text editor HTML string
    1 project | /r/golang | 10 Apr 2023
    bluemonday is an html sanitizer you could try
  • Does anyone know of an HTML parser that would allow me to manipulate the HMTL? Namely I'm interested in stripping all attributes from strings.
    2 projects | /r/golang | 16 Dec 2022
    For sanitizing html input at work we use https://github.com/microcosm-cc/bluemonday.
  • Bluemonday: A fast Golang HTML sanitizer
    1 project | news.ycombinator.com | 29 May 2022
  • How to validate a string is a valid HTML tag/attribute?
    1 project | /r/golang | 6 Mar 2022
    Sounds like a task for bluemonday.
  • HTML Sanitizer API
    5 projects | news.ycombinator.com | 6 May 2021
    My thoughts as a maintainer of a HTML sanitizer https://github.com/microcosm-cc/bluemonday

    1. Sanitizing is not difficult, defining the policy/config is difficult as your need is not someone else's. First glance of this proposal is that this needs a lot more work to cover people's needs. It's good enough, but will have a lot of edges and will need to evolve.

    2. If you allow a blocklist then people will use that by default as it's easier to say "I don't want " than it is to say "I only accept 3. Even if you sanitize something you should keep the raw input... you should store the raw input alongside the sanitized (in fact the sanitized is merely a cached version of the raw input having been sanitized). The reason for this is you will have issues you need to debug (and can't without the input) and you will have round-trip edits you should support (but it's not round-trippable when everything you return is different from the input, do not punish a user who pasted HTML thinking it was safe by then not allowing them to edit it out because you threw everything away). Additionally if you want to ever report on the input, i.e. topK values, and you've modified the input and not kept raw, then you can never do this.

    4. Provide a sane default. Most engineers simply do not know what is safe or not. I ship a policy in bluemonday for user generated content... it is safe by default and good enough for most people, and it can be taken and extended due to the way the API is structured so can cover other scenarios as a foundation policy.

    I think the proposal in general: specify a standard for a sanitization API has merit. But mostly it has merit if it specifies a standard for defining sanitization policies/configuration, allowing them to be portable across different languages and systems.

    The one I wrote is very heavily inspired by https://github.com/owasp/java-html-sanitizer which is the OWASP project one maintained by Mike Samuel. When I did my research before writing the Go one, this was far and away the best way to construct the policy/config and I already saw that this perspective was more valuable than whether it's a token based parser (GIGO but low memory) or a DOM builder (more memory)... no-one cares about the internals, they care about expressing what safe means to them.

npmgraph

Posts with mentions or reviews of npmgraph. We have used some of these posts to build our list of alternatives and similar projects. The last one was on 2024-02-05.
  • Panda CSS: build time and type-safe CSS-in-JS
    8 projects | news.ycombinator.com | 5 Feb 2024
    This looks a lot better than I expected.

    One thing that bugs me about this (and Tailwind) is the number of dependencies they pull in. Panda has 152 nodes (239, if you count their dev-dependencies)[0].

    Tailwind has 98 (594 if you count their dev-dependencies).

    I know they're only dev-dependencies, but still... I've got all of that code running on my machine, just to process CSS. I really don't love it.

    [0] https://npmgraph.js.org/?q=%40pandacss%2Fdev

  • List all dependencies from package-lock.json without npm: Vet my code!
    2 projects | /r/node | 28 Nov 2023
    This is what I came up with. I get 514. I got 496 here https://npmgraph.js.org/. I'm curious what you get using npm and/or yarn, or other tool.
  • Why do we use bundlers if most modern modules are ES modules?
    3 projects | /r/node | 17 Apr 2023
    For a real-world example, check out my npmgraph.js.org tool. It crawls a module's dependency tree on the fly, fetching the NPM registry info for each module. For a large dependency graph like the one for gatsby, on my 60 mbps connection the client completes 1,200+ requests (120MB of data) in about 10 seconds.
  • Sponsor the open source projects you depend on
    6 projects | news.ycombinator.com | 10 Apr 2023
    Why Array.isArray() when you can require("is-array").isArray()?

    deep-equal has 43 packages that are mostly has-*, is-* packages (https://npmgraph.js.org/?q=deep-equal) and you’ll find this package included in a lot of upstream libraries.

  • Show HN: Unknown Pleasures, a tiny web experiment with WebGL
    5 projects | news.ycombinator.com | 3 Apr 2023
    The great irony of this post is that the author dreams of a world where they can use a library without it depending on hundreds of other modules, yet their website is built on Gatsby, an NPM package with one of the most insane dependency graphs I've seen. Uploading the author's website's package.json[1] into npmgraph[2] lists a total of 1561 dependencies. All that for what amounts to a simple blog site.

    [1] https://github.com/poeti8/pouria.dev/blob/master/package.jso...

    [2] https://npmgraph.js.org/

  • I installed Node JS 5 min ago, and only installed React. Where the fuck all these packages came from?
    1 project | /r/ProgrammerHumor | 22 Oct 2022
    You can actually graph the horrible depencency tree of any package you want here: https://npmgraph.js.org/
  • Show HN: Postgres.js – Fastest Full-Featured PostgreSQL Client for Node and Deno
    15 projects | news.ycombinator.com | 24 Mar 2022
    > Postgres.js is also a zero dependency module, whereas Slonik has quite the dependency graph meaning - compare https://npmgraph.js.org/?q=slonik with https://npmgraph.js.org/?q=postgres.

    This one just made my day. Thanks. I remember trying to build a tool at work with as little as possible dependencies (in python) and how satisfying it was to see quite a few dependencies just being wrappers replaces with 5 lines of my own code that i could easily audit and ensure no supply chain attack was possible for that functionality.

  • Guidelines for choosing a Node.js framework
    3 projects | dev.to | 4 Oct 2021
    Dependency graph. The more dependencies a framework has, the larger the attack surface area. It can also make debugging issues in your applications much more difficult. You don’t need to find a framework with zero dependencies, but you should have some awareness of a framework’s dependency graph. The tool npmgraph can provide you with an excellent overview.
  • Should I be using TypeORM for a large scale project?
    4 projects | /r/node | 22 Apr 2021
    Recognize when you're the person holding the project back: This has happened to me a couple times now. When your interest in a project wanes, be deliberate about recognizing that. Focus what little energy you do have on recruiting people to help out (or even take over).

What are some alternatives?

When comparing bluemonday and npmgraph you can also consider the following projects:

mxj - Decode / encode XML to/from map[string]interface{} (or JSON); extract values with dot-notation paths and wildcards. Replaces x2j and j2x packages.

plv8 - V8 Engine Javascript Procedural Language add-on for PostgreSQL

inject

postgres - Postgres.js - The Fastest full featured PostgreSQL client for Node.js, Deno, Bun and CloudFlare

go-pkg-xmlx

node-redis - Redis Node.js client

GoQuery - A little like that j-thing, only in Go.

randomUUID - Polyfill for randomUUID as being standardized in https://github.com/WICG/uuid

jsonpath - JSONPath with dot notation generator for golang

delicense - Dispersal Framework for Delicensed Data

sh - A shell parser, formatter, and interpreter with bash support; includes shfmt

unknown-pleasures - Visualize your microphone with Joy Division's pulsar.