%global npm_name sanitize-html
Name: nodejs-sanitize-html
Version: 2.3.2
Release: 2%{?dist}
Summary: Clean up user-submitted HTML, preserving whitelisted elements and whitelisted attributes on a per-element basis
License: MIT
Group: Development/Libraries
URL: https://github.com/apostrophecms/sanitize-html#readme
Source0: https://registry.npmjs.org/deepmerge/-/deepmerge-4.3.1.tgz
Source1: https://registry.npmjs.org/dom-serializer/-/dom-serializer-1.4.1.tgz
Source2: https://registry.npmjs.org/domelementtype/-/domelementtype-2.3.0.tgz
Source3: https://registry.npmjs.org/domhandler/-/domhandler-4.3.1.tgz
Source4: https://registry.npmjs.org/domutils/-/domutils-2.8.0.tgz
Source5: https://registry.npmjs.org/entities/-/entities-2.2.0.tgz
Source6: https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-4.0.0.tgz
Source7: https://registry.npmjs.org/htmlparser2/-/htmlparser2-6.1.0.tgz
Source8: https://registry.npmjs.org/is-plain-object/-/is-plain-object-5.0.0.tgz
Source9: https://registry.npmjs.org/klona/-/klona-2.0.6.tgz
Source10: https://registry.npmjs.org/nanoid/-/nanoid-3.3.16.tgz
Source11: https://registry.npmjs.org/parse-srcset/-/parse-srcset-1.0.2.tgz
Source12: https://registry.npmjs.org/picocolors/-/picocolors-1.1.1.tgz
Source13: https://registry.npmjs.org/postcss/-/postcss-8.5.25.tgz
Source14: https://registry.npmjs.org/sanitize-html/-/sanitize-html-2.3.2.tgz
Source15: https://registry.npmjs.org/source-map-js/-/source-map-js-1.2.1.tgz
Source16: nodejs-sanitize-html-%{version}-package-lock.json
BuildRequires: npm >= 7
BuildRequires: nodejs-packaging
# The prep section runs node directly, so this is needed unconditionally. It
# also works around https://issues.redhat.com/browse/RHEL-137712 on RHEL 10
# before 10.3, where the nodejs major version macro does not resolve without
# node in the buildroot.
BuildRequires: /usr/bin/node
BuildArch: noarch
ExclusiveArch: %{nodejs_arches} noarch
Provides: npm(%{npm_name}) = %{version}
Provides: bundled(npm(deepmerge)) = 4.3.1
Provides: bundled(npm(dom-serializer)) = 1.4.1
Provides: bundled(npm(domelementtype)) = 2.3.0
Provides: bundled(npm(domhandler)) = 4.3.1
Provides: bundled(npm(domutils)) = 2.8.0
Provides: bundled(npm(entities)) = 2.2.0
Provides: bundled(npm(escape-string-regexp)) = 4.0.0
Provides: bundled(npm(htmlparser2)) = 6.1.0
Provides: bundled(npm(is-plain-object)) = 5.0.0
Provides: bundled(npm(klona)) = 2.0.6
Provides: bundled(npm(nanoid)) = 3.3.16
Provides: bundled(npm(parse-srcset)) = 1.0.2
Provides: bundled(npm(picocolors)) = 1.1.1
Provides: bundled(npm(postcss)) = 8.5.25
Provides: bundled(npm(sanitize-html)) = 2.3.2
Provides: bundled(npm(source-map-js)) = 1.2.1
AutoReq: no
AutoProv: no
%define npm_cache_dir npm_cache_%{name}-%{version}-%{release}
%description
%{summary}
%prep
mkdir -p %{npm_cache_dir}
# npm ci installs the tree recorded in the lockfile: every entry carries a
# resolved URL and an integrity hash, and npm serves the tarballs from the
# cache primed here by content hash. No registry access is needed.
for src in %{sources}; do
case "$src" in
*.tgz) npm cache add --cache %{npm_cache_dir} "$src" ;;
*-package-lock.json) cp "$src" package-lock.json ;;
esac
done
# Derive package.json from the lockfile so the two cannot disagree.
node -e '
const fs = require("fs");
const lock = JSON.parse(fs.readFileSync("package-lock.json"));
fs.writeFileSync("package.json", JSON.stringify({
name: lock.name,
version: lock.version,
dependencies: lock.packages[""].dependencies
}, null, 2) + "\n");
'
%build
npm ci --legacy-peer-deps --offline --cache %{_builddir}/%{npm_cache_dir} --omit optional
%install
mkdir -p %{buildroot}%{nodejs_sitelib}/%{npm_name}
cp -pfr node_modules/%{npm_name}/node_modules %{buildroot}%{nodejs_sitelib}/%{npm_name}
# npm creates a scope directory for every scope named in the lockfile, including
# scopes whose packages were all omitted, which leaves empty dirs behind.
# -delete implies -depth, so nested empties go bottom-up in a single pass.
find %{buildroot}%{nodejs_sitelib}/%{npm_name} -type d -empty -delete
cp -pfr node_modules/%{npm_name}/index.js %{buildroot}%{nodejs_sitelib}/%{npm_name}
cp -pfr node_modules/%{npm_name}/package.json %{buildroot}%{nodejs_sitelib}/%{npm_name}
%clean
rm -rf %{buildroot} %{npm_cache_dir}
%files
%{nodejs_sitelib}/%{npm_name}
%license node_modules/%{npm_name}/LICENSE
%doc node_modules/%{npm_name}/CHANGELOG.md
%doc node_modules/%{npm_name}/README.md
%changelog
* Thu Jul 30 2026 Zach Huntington-Meath 2.3.2-2
- Update to 2.3.2
* Thu Jun 19 2025 MariaAga 2.3.2-1
- Add nodejs-sanitize-html generated by npm2rpm using the bundle strategy