Review: node-single-file-core 1.0.47+ds1-1
Package Information
| Description | save a web page as one self-contained HTML file (browser bundles) SingleFile saves a page into a single HTML file, inlining the stylesheets, images and frames it needs. This package ships the browser bundles built from the single-file-core library, which Zotero loads when it captures a snapshot. |
|---|---|
| Maintainer | Emfox Zhou <emfox@debian.org> |
| Changed By | Emfox Zhou <emfox@debian.org> |
| Sponsor | emfox@debian.org |
| Distribution | unstable |
| Architecture | all |
| VCS | git: https://salsa.debian.org/js-team/node-single-file-core.git (browse) |
| Closes | #1152662 |
| Tracker | https://tracker.debian.org/pkg/node-single-file-core |
| Uploaded | 3 hours ago |
New Package Report
.changes
| Date | Sat, 31 Oct 2026 00:34:13 +0800 |
|---|---|
| Source | node-single-file-core |
| Version | 1.0.47+ds1-1 |
| Changed-By | Emfox Zhou <emfox@debian.org> |
| Architecture | source all |
| Distribution | unstable |
Changelog
node-single-file-core (1.0.47+ds1-1) unstable; urgency=medium . * Initial release. (Closes: #1152662)
.dsc
| Component | main |
|---|---|
| Package-List | node-single-file-core deb javascript optional arch=all |
| Section | javascript |
| Priority | optional |
debian/copyright
Format: https://www.debian.org/doc/packaging-manuals/copyright-format/1.0/
Upstream-Name: single-file-core
Upstream-Contact: Gildas Lormeau <gildas.lormeau@gmail.com>
Source: https://github.com/gildas-lormeau/single-file-core
Files-Excluded: vendor/css-tree.js
Files: *
Copyright: 2010-2022 Gildas Lormeau
License: AGPL-3+
Files: vendor/index.js
Copyright: 2010-2022 Gildas Lormeau
License: AGPL-3+
Files: vendor/css-minifier.js
Copyright: 2010-2022 Gildas Lormeau
2011-2022 Franck Marcia
2009 Stoyan Stefanov
2011 Julien Lecomte, Yahoo! Inc.
License: Expat and BSD-3-clause
Comment: UglifyCSS by Franck Marcia, whose CSS compressor is Stoyan Stefanov's
port of YUI Compressor, itself carrying a BSD (revised) part by Julien
Lecomte and Yahoo! Inc.
Files: vendor/css-font-property-parser.js
Copyright: 2010-2022 Gildas Lormeau
2015 Jed Mao
License: Expat
Files: vendor/css-unescape.js
Copyright: 2010-2022 Gildas Lormeau
2014 Ben Briggs
License: Expat
Files: vendor/mime-type-parser.js
Copyright: 2010-2022 Gildas Lormeau
2017-2018 Domenic Denicola
License: Expat
Files: vendor/css-media-query-parser.js
Copyright: 2010-2022 Gildas Lormeau
License: Expat
Files: vendor/html-srcset-parser.js
Copyright: 2010-2022 Gildas Lormeau
2015 Alex Bell
License: Expat
Files: debian/*
Copyright: 2026 Emfox Zhou
License: AGPL-3+
License: AGPL-3+
On Debian systems the complete text of the GNU Affero General Public License
version 3 can be found in /usr/share/common-licenses/AGPL-3.0.
License: Expat
Permission is hereby granted, free of charge, to any person obtaining a copy
of this software and associated documentation files (the "Software"), to deal
in the Software without restriction, including without limitation the rights
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
copies of the Software, and to permit persons to whom the Software is
furnished to do so, subject to the following conditions:
.
The above copyright notice and this permission notice shall be included in
all copies or substantial portions of the Software.
.
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
SOFTWARE.
License: BSD-3-clause
Redistribution and use in source and binary forms, with or without
modification, are permitted provided that the following conditions are met:
.
1. Redistributions of source code must retain the above copyright notice,
this list of conditions and the following disclaimer.
.
2. Redistributions in binary form must reproduce the above copyright notice,
this list of conditions and the following disclaimer in the documentation
and/or other materials provided with the distribution.
.
3. Neither the name of the copyright holder nor the names of its contributors
may be used to endorse or promote products derived from this software without
specific prior written permission.
.
THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE
LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
POSSIBILITY OF SUCH DAMAGE.
DFSG Assistant LLM REVIEW 0 blocker, 2 important, 2 minor
This is an LLM based review using a Debian Inference based workflow. It was not written by a member of the DFSG team and has not been checked by one. It is not a decision on the package: it may be wrong, and it may have missed things.
Reviewed 2 hours ago.
Report
DFSG NEW review for node-single-file-core version 1.0.47+ds1-1
Summary
- Licensing is DFSG-compliant and
debian/copyrightis accurate: No - Packaging is of good quality: No
- Issues: 0 blocker, 2 important, 2 minor
- debian/watch: version 5
- debian/copyright: machine-readable
- Scan before the review: nothing found
Licensing
All licences in the tree are DFSG-free: the bulk is AGPL-3+ with an upstream additional section 7 permission, and the vendored parsers and CSS minifier are Expat or BSD-3-clause, both compatible with AGPL-3; no non-free wording was found. debian/copyright is DEP-5 and handles the vendor/ derivations well, but it does not describe the whole tree accurately: modules/html-minifier.js credits htmlnano's author Kirill Maltsev, whom the file does not name; .eslintrc.js carries a MIT grant while the catch-all stanza says AGPL-3+; and the section 7 additional permission that every source file grants is not reproduced.
Packaging
The packaging is compact and mostly clean: debhelper compat 14 with plain dh, a build that turns the shipped ES sources into the bundles with all build dependencies present, correct file layout, an autopkgtest and upstream metadata. The substantive defect is that the shipped bundles inline csstree from node-css-tree while the binary package declares no Built-Using (Policy 7.8), so the archive is never told which node-css-tree source the binary was built from.
Issues
1. [important] [licensing] modules/html-minifier.js is credited to Kirill Maltsev's htmlnano but his copyright/MIT notice is missing from debian/copyright
- Files:
modules/html-minifier.js:24,debian/copyright:7-10 - Basis: inferred from what was read, not seen directly
- Evidence:
// Derived from the work of Kirill Maltsev - https://github.com/posthtml/htmlnanoin the file; the copyright file has no stanza formodules/, onlyFiles: *withCopyright: 2010-2022 Gildas LormeauandLicense: AGPL-3+. - Problem: htmlnano is MIT (Expat), and the file states it is derived from it, but neither the file nor
debian/copyrightretains Kirill Maltsev's copyright and permission notice, so the file's copyright and licence are described inaccurately and the MIT attribution that Debian must pass on is lost. Every other derived file undervendor/(Jed Mao, Ben Briggs, Alex Bell, Domenic Denicola) has its upstream author in the copyright file, so this one was simply missed. - Fix: Add a
Files: modules/html-minifier.jsstanza naming Kirill Maltsev (with htmlnano's copyright years) as well as Gildas Lormeau, withLicense: AGPL-3+ and Expat.
2. [important] [packaging] Binary bundles inline csstree from node-css-tree but the package has no Built-Using field (Policy 7.8)
- Files:
debian/rules:9-15,debian/css-tree-shim.js:4,debian/control:14-19 - Basis: checked, in the package or with a reference tool
- Evidence:
debian/css-tree-shim.jsis copied tovendor/css-tree.jsand rollup bundles it:export { findAll, find, generate, parse } from "/usr/share/nodejs/css-tree/dist/csstree.esm.js";;debian/control's package stanza has onlyDepends: ${misc:Depends}. Policy 7.8: "the Built-Using field must list the corresponding source package ... including an 'exactly equal' ('=') version relation". - Problem: The
lib/*.jsobjects shipped contain compiled csstree code taken from the node-css-tree source package during the build, which the package itself omits (Files-Excluded: vendor/css-tree.js). The shipped bundle is AGPL-3+, whose Corresponding Source requirement covers that incorporated code, so Policy 7.8 applies; without the field the archive need not retain the node-css-tree version the binary was actually built with. - Fix: Add
Built-Using: node-css-tree (= 3.2.1-1)(the version the build used) to thenode-single-file-corestanza ofdebian/control.
3. [minor] [licensing] .eslintrc.js is MIT but the catch-all Files: * stanza calls it AGPL-3+
- Files:
.eslintrc.js:1-23,debian/copyright:7-10 - Basis: checked, in the package or with a reference tool
- Evidence: The file begins
The MIT License (MIT)/Author: Gildas Lormeaufollowed by the full MIT permission text;debian/copyrighthas no stanza for it, soFiles: *applies withLicense: AGPL-3+. - Problem:
debian/copyrightstates a stricter licence than the file actually grants, so it does not accurately describe this file's licensing. - Fix: Add
Files: .eslintrc.jswithCopyright: 2010-2022 Gildas LormeauandLicense: Expat.
4. [minor] [licensing] AGPL-3+ stanza omits the additional section 7 permission every file grants
- Files:
debian/copyright:53-56,single-file.js:17-21 - Basis: checked, in the package or with a reference tool
- Evidence: Every source header says:
As additional permission under GNU AGPL version 3 section 7, you may distribute UNMODIFIED VERSIONS OF THIS file without the copy of the GNU AGPL normally required by section 4, provided you include this license notice and a URL through which recipients can access the Corresponding Source.TheLicense: AGPL-3+paragraph only points to/usr/share/common-licenses/AGPL-3.0. - Problem: The files are offered under AGPL-3+ plus this permission; the permission is neither in common-licenses nor in
debian/copyright, so the licence actually granted is not fully described (this understates rights; it is not a DFSG problem). - Fix: Reproduce the section 7 permission paragraph in the stand-alone AGPL-3+ licence paragraph, or give it its own short name and use it in the stanzas.
Verified
- All 34 upstream files were examined. Every
.jsfile carries a licence header: 24 of them Gildas Lormeau's AGPL-3+ header (v3 or later plus the section 7 permission); the prescan's 24 files withcontact : gildas.lormeau <at> gmail.comare those same files, and the holder it flagged as merely similar is Gildas Lormeau, named exactly in every relevant stanza, so nothing is missing there. - The seven
vendor/files with third-party notices are matched by their ownFiles:stanzas: Jed Mao, Ben Briggs, Alex Bell, Domenic Denicola (Expat), and Franck Marcia, Stoyan Stefanov, Julien Lecomte/Yahoo! Inc. (Expat and BSD-3-clause); the Expat and BSD-3-clause texts are reproduced in full.vendor/index.jsis AGPL-3+ and has its own stanza. - No built or minified file is in the tarball:
single-file-core.js(2127 lines) and the othersingle-file-*.jsfiles are formatted sources, andcommon/content-infobar-web.jsis hand-written despite its three longdata:image/png;base64constants (icons embedded in the file, PNG metadata says 'Created with GIMP');lib/exists only after a build, asdebian/README.sourcedescribes. vendor/css-tree.js, named byFiles-Excluded, is absent from the tree;debian/rulesrecreates it fromdebian/css-tree-shim.jsfor the rollup build andoverride_dh_cleanremoves it again.- The only module specifier outside the tree is the shim's absolute import; the csstree API used by the sources is exactly the four functions the shim exports (
parse,generate,find,findAll), so the shim covers all call sites. - Build dependencies exist in the archive: node-css-tree 3.2.1-1, rollup 3.30.0-7 (provides the virtual node-rollup), node-rollup-plugin-node-resolve 15.2.3+ds-3.
nodeitself is not listed in Build-Depends but arrives with them, which Policy 4.2 says need not be listed. - The autopkgtest dependency chain reaches an interpreter: node-jsdom depends on node-acorn, which depends on nodejs, so the
#!/usr/bin/nodescript has/usr/bin/nodein the testbed;Testsuite-Triggers: node-jsdomis declared in the.dsc. debian/copyrightis DEP-5 with the currentFormatURL and the correctSource;AGPL-3.0exists in/usr/share/common-licenses.- Standards-Version 4.7.4 matches the reviewing system's Policy 4.7.4.1 and is not an issue; the changelog is a proper
unstableinitial release that closes the ITP, with a date consistent with its weekday. - No patches, no maintainer scripts and no
debian/patches;debian/source/formatis3.0 (quilt),debian/gbp.confanddebian/upstream/metadataare consistent with the repository..pc/was left unread anddebian/cargo-checksum.jsonis not present. - The binary package installs only the five UMD bundles under
lib/andpackage.json; that matches the description (browser bundles for Zotero) and upstream's ownpackage.json, which likewise defines nomain. - uscan found upstream releases with
debian/watch; a newer upstream version is available (upstream1.8.0, packaged1.0.47+ds1), which is not a fault of the package. - Every pointer of
debian/copyrightto /usr/share/common-licenses names a file that is there (AGPL-3.0).
Not confirmed
- Whether node-css-tree 3.2.1-1 actually installs
dist/csstree.esm.js, the absolute path the shim imports: the package is not installed on the reviewing system and its file list is not reachable with these tools; a build would show it immediately. vendor/css-media-query-parser.jsis marked// derived from https://github.com/dryoma/postcss-media-query-parserand the MIT block it carries has had its copyright line dropped, so a holder may be missing from its stanza; no holder is named anywhere in the package, so it could not be verified here.- The file mode of
debian/tests/load-bundles(autopkgtest requires it to be executable) is not visible through the tools available.
Proposed changes
None.
Uploader's response to the LLM review
The uploader rejected this upload in response to the review.
Review Information
rejected — allocated to dfsg-uploader 1 hour ago, started 1 hour ago, completed 1 hour ago.
Final Comment
The uploader rejected this upload in response to the automated (LLM) review of it, so that they can fix the problems it found and upload again.