diff --git a/comps/comps-foreman-el9.xml b/comps/comps-foreman-el9.xml
index 06c12e5ced..566e73d462 100644
--- a/comps/comps-foreman-el9.xml
+++ b/comps/comps-foreman-el9.xml
@@ -92,6 +92,7 @@
nodejs-mini-css-extract-plugin
nodejs-module-federation-utilities
nodejs-multiselect
+ nodejs-neo-async
nodejs-novnc-novnc
nodejs-number_helpers
nodejs-openshift-dynamic-plugin-sdk
diff --git a/package_manifest.yaml b/package_manifest.yaml
index 725fac16fa..753b7376b8 100644
--- a/package_manifest.yaml
+++ b/package_manifest.yaml
@@ -431,6 +431,7 @@ foreman_nodejs_packages:
nodejs-mini-css-extract-plugin: {}
nodejs-module-federation-utilities: {}
nodejs-multiselect: {}
+ nodejs-neo-async: {}
nodejs-novnc-novnc: {}
nodejs-number_helpers: {}
nodejs-openshift-dynamic-plugin-sdk: {}
diff --git a/packages/foreman/nodejs-sass-loader/neo-async-2.6.2.tgz b/packages/foreman/nodejs-neo-async/neo-async-2.6.2.tgz
similarity index 100%
rename from packages/foreman/nodejs-sass-loader/neo-async-2.6.2.tgz
rename to packages/foreman/nodejs-neo-async/neo-async-2.6.2.tgz
diff --git a/packages/foreman/nodejs-neo-async/nodejs-neo-async.spec b/packages/foreman/nodejs-neo-async/nodejs-neo-async.spec
new file mode 100644
index 0000000000..140ca309b0
--- /dev/null
+++ b/packages/foreman/nodejs-neo-async/nodejs-neo-async.spec
@@ -0,0 +1,160 @@
+%{?scl:%scl_package nodejs-%{npm_name}}
+%{!?scl:%global pkg_name %{name}}
+
+%global npm_name neo-async
+
+Name: %{?scl_prefix}nodejs-neo-async
+Version: 2.6.2
+Release: 1%{?dist}
+Summary: Neo-Async is a drop-in replacement for Async, it almost fully covers its functionality and runs faster
+License: MIT
+Group: Development/Libraries
+URL: https://github.com/suguru03/neo-async
+Source0: https://registry.npmjs.org/neo-async/-/neo-async-%{version}.tgz
+%if 0%{?!scl:1}
+BuildRequires: nodejs-packaging
+%endif
+BuildArch: noarch
+ExclusiveArch: %{nodejs_arches} noarch
+Provides: %{?scl_prefix}npm(%{npm_name}) = %{version}
+
+%description
+%{summary}
+
+%prep
+%setup -q -n package
+
+%install
+mkdir -p %{buildroot}%{nodejs_sitelib}/%{npm_name}
+cp -pfr all.js %{buildroot}%{nodejs_sitelib}/%{npm_name}
+cp -pfr allLimit.js %{buildroot}%{nodejs_sitelib}/%{npm_name}
+cp -pfr allSeries.js %{buildroot}%{nodejs_sitelib}/%{npm_name}
+cp -pfr angelFall.js %{buildroot}%{nodejs_sitelib}/%{npm_name}
+cp -pfr any.js %{buildroot}%{nodejs_sitelib}/%{npm_name}
+cp -pfr anyLimit.js %{buildroot}%{nodejs_sitelib}/%{npm_name}
+cp -pfr anySeries.js %{buildroot}%{nodejs_sitelib}/%{npm_name}
+cp -pfr apply.js %{buildroot}%{nodejs_sitelib}/%{npm_name}
+cp -pfr applyEach.js %{buildroot}%{nodejs_sitelib}/%{npm_name}
+cp -pfr applyEachSeries.js %{buildroot}%{nodejs_sitelib}/%{npm_name}
+cp -pfr async.js %{buildroot}%{nodejs_sitelib}/%{npm_name}
+cp -pfr async.min.js %{buildroot}%{nodejs_sitelib}/%{npm_name}
+cp -pfr asyncify.js %{buildroot}%{nodejs_sitelib}/%{npm_name}
+cp -pfr auto.js %{buildroot}%{nodejs_sitelib}/%{npm_name}
+cp -pfr autoInject.js %{buildroot}%{nodejs_sitelib}/%{npm_name}
+cp -pfr cargo.js %{buildroot}%{nodejs_sitelib}/%{npm_name}
+cp -pfr compose.js %{buildroot}%{nodejs_sitelib}/%{npm_name}
+cp -pfr concat.js %{buildroot}%{nodejs_sitelib}/%{npm_name}
+cp -pfr concatLimit.js %{buildroot}%{nodejs_sitelib}/%{npm_name}
+cp -pfr concatSeries.js %{buildroot}%{nodejs_sitelib}/%{npm_name}
+cp -pfr constant.js %{buildroot}%{nodejs_sitelib}/%{npm_name}
+cp -pfr createLogger.js %{buildroot}%{nodejs_sitelib}/%{npm_name}
+cp -pfr detect.js %{buildroot}%{nodejs_sitelib}/%{npm_name}
+cp -pfr detectLimit.js %{buildroot}%{nodejs_sitelib}/%{npm_name}
+cp -pfr detectSeries.js %{buildroot}%{nodejs_sitelib}/%{npm_name}
+cp -pfr dir.js %{buildroot}%{nodejs_sitelib}/%{npm_name}
+cp -pfr doDuring.js %{buildroot}%{nodejs_sitelib}/%{npm_name}
+cp -pfr doUntil.js %{buildroot}%{nodejs_sitelib}/%{npm_name}
+cp -pfr doWhilst.js %{buildroot}%{nodejs_sitelib}/%{npm_name}
+cp -pfr during.js %{buildroot}%{nodejs_sitelib}/%{npm_name}
+cp -pfr each.js %{buildroot}%{nodejs_sitelib}/%{npm_name}
+cp -pfr eachLimit.js %{buildroot}%{nodejs_sitelib}/%{npm_name}
+cp -pfr eachOf.js %{buildroot}%{nodejs_sitelib}/%{npm_name}
+cp -pfr eachOfLimit.js %{buildroot}%{nodejs_sitelib}/%{npm_name}
+cp -pfr eachOfSeries.js %{buildroot}%{nodejs_sitelib}/%{npm_name}
+cp -pfr eachSeries.js %{buildroot}%{nodejs_sitelib}/%{npm_name}
+cp -pfr ensureAsync.js %{buildroot}%{nodejs_sitelib}/%{npm_name}
+cp -pfr every.js %{buildroot}%{nodejs_sitelib}/%{npm_name}
+cp -pfr everyLimit.js %{buildroot}%{nodejs_sitelib}/%{npm_name}
+cp -pfr everySeries.js %{buildroot}%{nodejs_sitelib}/%{npm_name}
+cp -pfr fast.js %{buildroot}%{nodejs_sitelib}/%{npm_name}
+cp -pfr filter.js %{buildroot}%{nodejs_sitelib}/%{npm_name}
+cp -pfr filterLimit.js %{buildroot}%{nodejs_sitelib}/%{npm_name}
+cp -pfr filterSeries.js %{buildroot}%{nodejs_sitelib}/%{npm_name}
+cp -pfr find.js %{buildroot}%{nodejs_sitelib}/%{npm_name}
+cp -pfr findLimit.js %{buildroot}%{nodejs_sitelib}/%{npm_name}
+cp -pfr findSeries.js %{buildroot}%{nodejs_sitelib}/%{npm_name}
+cp -pfr foldl.js %{buildroot}%{nodejs_sitelib}/%{npm_name}
+cp -pfr foldr.js %{buildroot}%{nodejs_sitelib}/%{npm_name}
+cp -pfr forEach.js %{buildroot}%{nodejs_sitelib}/%{npm_name}
+cp -pfr forEachLimit.js %{buildroot}%{nodejs_sitelib}/%{npm_name}
+cp -pfr forEachOf.js %{buildroot}%{nodejs_sitelib}/%{npm_name}
+cp -pfr forEachOfLimit.js %{buildroot}%{nodejs_sitelib}/%{npm_name}
+cp -pfr forEachOfSeries.js %{buildroot}%{nodejs_sitelib}/%{npm_name}
+cp -pfr forEachSeries.js %{buildroot}%{nodejs_sitelib}/%{npm_name}
+cp -pfr forever.js %{buildroot}%{nodejs_sitelib}/%{npm_name}
+cp -pfr groupBy.js %{buildroot}%{nodejs_sitelib}/%{npm_name}
+cp -pfr groupByLimit.js %{buildroot}%{nodejs_sitelib}/%{npm_name}
+cp -pfr groupBySeries.js %{buildroot}%{nodejs_sitelib}/%{npm_name}
+cp -pfr inject.js %{buildroot}%{nodejs_sitelib}/%{npm_name}
+cp -pfr iterator.js %{buildroot}%{nodejs_sitelib}/%{npm_name}
+cp -pfr log.js %{buildroot}%{nodejs_sitelib}/%{npm_name}
+cp -pfr map.js %{buildroot}%{nodejs_sitelib}/%{npm_name}
+cp -pfr mapLimit.js %{buildroot}%{nodejs_sitelib}/%{npm_name}
+cp -pfr mapSeries.js %{buildroot}%{nodejs_sitelib}/%{npm_name}
+cp -pfr mapValues.js %{buildroot}%{nodejs_sitelib}/%{npm_name}
+cp -pfr mapValuesLimit.js %{buildroot}%{nodejs_sitelib}/%{npm_name}
+cp -pfr mapValuesSeries.js %{buildroot}%{nodejs_sitelib}/%{npm_name}
+cp -pfr memoize.js %{buildroot}%{nodejs_sitelib}/%{npm_name}
+cp -pfr nextTick.js %{buildroot}%{nodejs_sitelib}/%{npm_name}
+cp -pfr omit.js %{buildroot}%{nodejs_sitelib}/%{npm_name}
+cp -pfr omitLimit.js %{buildroot}%{nodejs_sitelib}/%{npm_name}
+cp -pfr omitSeries.js %{buildroot}%{nodejs_sitelib}/%{npm_name}
+cp -pfr package.json %{buildroot}%{nodejs_sitelib}/%{npm_name}
+cp -pfr parallel.js %{buildroot}%{nodejs_sitelib}/%{npm_name}
+cp -pfr parallelLimit.js %{buildroot}%{nodejs_sitelib}/%{npm_name}
+cp -pfr pick.js %{buildroot}%{nodejs_sitelib}/%{npm_name}
+cp -pfr pickLimit.js %{buildroot}%{nodejs_sitelib}/%{npm_name}
+cp -pfr pickSeries.js %{buildroot}%{nodejs_sitelib}/%{npm_name}
+cp -pfr priorityQueue.js %{buildroot}%{nodejs_sitelib}/%{npm_name}
+cp -pfr queue.js %{buildroot}%{nodejs_sitelib}/%{npm_name}
+cp -pfr race.js %{buildroot}%{nodejs_sitelib}/%{npm_name}
+cp -pfr reduce.js %{buildroot}%{nodejs_sitelib}/%{npm_name}
+cp -pfr reduceRight.js %{buildroot}%{nodejs_sitelib}/%{npm_name}
+cp -pfr reflect.js %{buildroot}%{nodejs_sitelib}/%{npm_name}
+cp -pfr reflectAll.js %{buildroot}%{nodejs_sitelib}/%{npm_name}
+cp -pfr reject.js %{buildroot}%{nodejs_sitelib}/%{npm_name}
+cp -pfr rejectLimit.js %{buildroot}%{nodejs_sitelib}/%{npm_name}
+cp -pfr rejectSeries.js %{buildroot}%{nodejs_sitelib}/%{npm_name}
+cp -pfr retry.js %{buildroot}%{nodejs_sitelib}/%{npm_name}
+cp -pfr retryable.js %{buildroot}%{nodejs_sitelib}/%{npm_name}
+cp -pfr safe.js %{buildroot}%{nodejs_sitelib}/%{npm_name}
+cp -pfr select.js %{buildroot}%{nodejs_sitelib}/%{npm_name}
+cp -pfr selectLimit.js %{buildroot}%{nodejs_sitelib}/%{npm_name}
+cp -pfr selectSeries.js %{buildroot}%{nodejs_sitelib}/%{npm_name}
+cp -pfr seq.js %{buildroot}%{nodejs_sitelib}/%{npm_name}
+cp -pfr series.js %{buildroot}%{nodejs_sitelib}/%{npm_name}
+cp -pfr setImmediate.js %{buildroot}%{nodejs_sitelib}/%{npm_name}
+cp -pfr some.js %{buildroot}%{nodejs_sitelib}/%{npm_name}
+cp -pfr someLimit.js %{buildroot}%{nodejs_sitelib}/%{npm_name}
+cp -pfr someSeries.js %{buildroot}%{nodejs_sitelib}/%{npm_name}
+cp -pfr sortBy.js %{buildroot}%{nodejs_sitelib}/%{npm_name}
+cp -pfr sortByLimit.js %{buildroot}%{nodejs_sitelib}/%{npm_name}
+cp -pfr sortBySeries.js %{buildroot}%{nodejs_sitelib}/%{npm_name}
+cp -pfr timeout.js %{buildroot}%{nodejs_sitelib}/%{npm_name}
+cp -pfr times.js %{buildroot}%{nodejs_sitelib}/%{npm_name}
+cp -pfr timesLimit.js %{buildroot}%{nodejs_sitelib}/%{npm_name}
+cp -pfr timesSeries.js %{buildroot}%{nodejs_sitelib}/%{npm_name}
+cp -pfr transform.js %{buildroot}%{nodejs_sitelib}/%{npm_name}
+cp -pfr transformLimit.js %{buildroot}%{nodejs_sitelib}/%{npm_name}
+cp -pfr transformSeries.js %{buildroot}%{nodejs_sitelib}/%{npm_name}
+cp -pfr tryEach.js %{buildroot}%{nodejs_sitelib}/%{npm_name}
+cp -pfr unmemoize.js %{buildroot}%{nodejs_sitelib}/%{npm_name}
+cp -pfr until.js %{buildroot}%{nodejs_sitelib}/%{npm_name}
+cp -pfr waterfall.js %{buildroot}%{nodejs_sitelib}/%{npm_name}
+cp -pfr whilst.js %{buildroot}%{nodejs_sitelib}/%{npm_name}
+cp -pfr wrapSync.js %{buildroot}%{nodejs_sitelib}/%{npm_name}
+
+%nodejs_symlink_deps
+
+%check
+%{nodejs_symlink_deps} --check
+
+%files
+%{nodejs_sitelib}/%{npm_name}
+%license LICENSE
+%doc README.md
+
+%changelog
+* Tue Dec 23 2025 Ewoud Kohl van Wijngaarden 2.6.2-1
+- Add nodejs-neo-async generated by npm2rpm using the single strategy
+
diff --git a/packages/foreman/nodejs-sass-loader/nodejs-sass-loader-13.3.3-registry.npmjs.org.tgz b/packages/foreman/nodejs-sass-loader/nodejs-sass-loader-13.3.3-registry.npmjs.org.tgz
deleted file mode 100644
index d06091aeec..0000000000
Binary files a/packages/foreman/nodejs-sass-loader/nodejs-sass-loader-13.3.3-registry.npmjs.org.tgz and /dev/null differ
diff --git a/packages/foreman/nodejs-sass-loader/nodejs-sass-loader.spec b/packages/foreman/nodejs-sass-loader/nodejs-sass-loader.spec
index d2d1967922..d1f04500bc 100644
--- a/packages/foreman/nodejs-sass-loader/nodejs-sass-loader.spec
+++ b/packages/foreman/nodejs-sass-loader/nodejs-sass-loader.spec
@@ -5,66 +5,46 @@
Name: %{?scl_prefix}nodejs-sass-loader
Version: 13.3.3
-Release: 2%{?dist}
+Release: 3%{?dist}
Summary: Sass loader for webpack
License: MIT
Group: Development/Libraries
URL: https://github.com/webpack-contrib/sass-loader
-Source0: https://registry.npmjs.org/neo-async/-/neo-async-2.6.2.tgz
-Source1: https://registry.npmjs.org/sass-loader/-/sass-loader-13.3.3.tgz
-Source2: nodejs-sass-loader-%{version}-registry.npmjs.org.tgz
-BuildRequires: %{?scl_prefix_nodejs}npm
-%if 0%{!?scl:1}
+Source0: https://registry.npmjs.org/sass-loader/-/sass-loader-%{version}.tgz
+%if 0%{?!scl:1}
BuildRequires: nodejs-packaging
%endif
+Requires: npm(neo-async) >= 2.6.2
+Requires: npm(neo-async) < 3.0.0
BuildArch: noarch
ExclusiveArch: %{nodejs_arches} noarch
-
Provides: %{?scl_prefix}npm(%{npm_name}) = %{version}
-Provides: bundled(npm(neo-async)) = 2.6.2
-Provides: bundled(npm(sass-loader)) = 13.3.3
-AutoReq: no
-AutoProv: no
-
-%if 0%{?scl:1}
-%define npm_cache_dir npm_cache
-%else
-%define npm_cache_dir /tmp/npm_cache_%{name}-%{version}-%{release}
-%endif
%description
%{summary}
%prep
-mkdir -p %{npm_cache_dir}
-%{?scl:scl enable %{?scl_nodejs} - << \end_of_scl}
-for tgz in %{sources}; do
- echo $tgz | grep -q registry.npmjs.org || npm cache add --cache %{npm_cache_dir} $tgz
-done
-%{?scl:end_of_scl}
-
-%setup -T -q -a 2 -D -n %{npm_cache_dir}
-
-%build
-%{?scl:scl enable %{?scl_nodejs} - << \end_of_scl}
-npm install --legacy-peer-deps --cache-min Infinity --cache %{?scl:../}%{npm_cache_dir} --no-shrinkwrap --no-optional --global-style true %{npm_name}@%{version}
-%{?scl:end_of_scl}
+%setup -q -n package
%install
mkdir -p %{buildroot}%{nodejs_sitelib}/%{npm_name}
-cp -pfr node_modules/%{npm_name}/node_modules %{buildroot}%{nodejs_sitelib}/%{npm_name}
-cp -pfr node_modules/%{npm_name}/dist %{buildroot}%{nodejs_sitelib}/%{npm_name}
-cp -pfr node_modules/%{npm_name}/package.json %{buildroot}%{nodejs_sitelib}/%{npm_name}
+cp -pfr dist %{buildroot}%{nodejs_sitelib}/%{npm_name}
+cp -pfr package.json %{buildroot}%{nodejs_sitelib}/%{npm_name}
+
+%nodejs_symlink_deps
-%clean
-rm -rf %{buildroot} %{npm_cache_dir}
+%check
+%{nodejs_symlink_deps} --check
%files
%{nodejs_sitelib}/%{npm_name}
-%license node_modules/%{npm_name}/LICENSE
-%doc node_modules/%{npm_name}/README.md
+%license LICENSE
+%doc README.md
%changelog
+* Tue Dec 23 2025 Ewoud Kohl van Wijngaarden 13.3.3-3
+- Unbundle dependencies
+
* Thu Feb 01 2024 Eric D. Helms - 13.3.3-2
- Use --legacy-peer-deps during npm install