diff options
Diffstat (limited to 'gnu/packages/node-xyz.scm')
-rw-r--r-- | gnu/packages/node-xyz.scm | 1763 |
1 files changed, 898 insertions, 865 deletions
diff --git a/gnu/packages/node-xyz.scm b/gnu/packages/node-xyz.scm index 9097d611a6..b49a19372b 100644 --- a/gnu/packages/node-xyz.scm +++ b/gnu/packages/node-xyz.scm @@ -33,6 +33,10 @@ #:use-module (guix git-download) #:use-module (guix build-system node)) +;;; +;;; Please: Try to add new module packages in alphabetic order. +;;; + (define-public node-acorn (package (name "node-acorn") @@ -107,6 +111,113 @@ architecture supporting plugins.") (license license:expat))) +(define-public node-addon-api + (package + (name "node-addon-api") + (version "4.2.0") + (source + (origin + (method git-fetch) + (uri (git-reference + (url "https://github.com/nodejs/node-addon-api") + (commit (string-append "v" version)))) + (file-name (git-file-name name version)) + (sha256 + (base32 "1bhvfi2m9nxfz418s619914vmidcnrzbjv6l9nid476c3zlpazch")))) + (inputs + (list python node-safe-buffer)) + (build-system node-build-system) + (arguments + `(#:modules + ((guix build node-build-system) + (srfi srfi-1) + (ice-9 match) + (guix build utils)) + #:phases + (modify-phases %standard-phases + (add-after 'patch-dependencies 'delete-dependencies + (lambda args + (delete-dependencies + `("benchmark" + "bindings" + "clang-format" + "eslint" + "eslint-config-semistandard" + "eslint-config-standard" + "eslint-plugin-import" + "eslint-plugin-node" + "eslint-plugin-promise" + "fs-extra" + "path" + "pre-commit")))) + (add-after 'unpack 'skip-js-tests + ;; We can't run the js-based tests, + ;; but we can still do the C++ parts + (lambda args + (define new-test-script + "echo stopping after pretest on Guix") + (with-atomic-json-file-replacement "package.json" + (match-lambda + (('@ . pkg-meta-alist) + (cons + '@ + (map (match-lambda + (("scripts" '@ . scripts-alist) + `("scripts" @ ,@(map (match-lambda + (("test" . _) + (cons "test" + new-test-script)) + (other + other)) + scripts-alist))) + (other + other)) + pkg-meta-alist)))))))))) + (home-page "https://github.com/nodejs/node-addon-api") + (synopsis "Node.js API (Node-API) header-only C++ wrappers") + (description "This module contains header-only C++ wrapper classes which +simplify the use of the C based Node-API provided by Node.js when using C++. +It provides a C++ object model and exception handling semantics with low +overhead. + +Node-API is an ABI stable C interface provided by Node.js for building native +addons. It is intended to insulate native addons from changes in the +underlying JavaScript engine and allow modules compiled for one version to run +on later versions of Node.js without recompilation. The @code{node-addon-api} +module, which is not part of Node.js, preserves the benefits of the Node-API +as it consists only of inline code that depends only on the stable API +provided by Node-API. + +It is important to remember that @emph{other} Node.js interfaces such as +@code{libuv} (included in a project via @code{#include <uv.h>}) are not +ABI-stable across Node.js major versions.") + (license license:expat))) + +(define-public node-bindings + (package + (name "node-bindings") + (version "1.5.0") + (source + (origin + (method git-fetch) + (uri (git-reference + (url "https://github.com/TooTallNate/node-bindings") + (commit version))) + (file-name (git-file-name name version)) + (sha256 + (base32 "100gp6kpjvd4j1dqnp0sbjr1hqx5mz7r61q9qy527jyhk9mj47wk")))) + (inputs + (list node-file-uri-to-path)) + (build-system node-build-system) + (arguments + ;; there are no tests + `(#:tests? #f)) + (home-page "https://github.com/TooTallNate/node-bindings") + (synopsis "Locate native addons") + (description "This package provides a helper module to locate native +addons in a wide array of potential locations.") + (license license:expat))) + (define-public node-buffer-crc32 (package (name "node-buffer-crc32") @@ -198,6 +309,48 @@ and fancy character sets, signed or unsigned data and has tests, for Node.") 64.0.3242 and above and all other browsers supporting the file format and API.") (license license:bsd-3))) +(define-public node-debug + (package + (name "node-debug") + (version "4.3.3") + (source + (origin + (method git-fetch) + (uri (git-reference + (url "https://github.com/debug-js/debug") + (commit version))) + (file-name (git-file-name name version)) + (sha256 + (base32 "0ji0dmdl2xkgxqxvd6xjy7k3mmknmhvqjgc40vyly9ka1mpf20vb")))) + (inputs + (list node-ms)) + (build-system node-build-system) + (arguments + `(#:phases + (modify-phases %standard-phases + (add-after 'patch-dependencies 'delete-dependencies + (lambda args + (delete-dependencies `("brfs" + "browserify" + "coveralls" + "istanbul" + "karma" + "karma-browserify" + "karma-chrome-launcher" + "karma-mocha" + "mocha" + "mocha-lcov-reporter" + "xo" + "supports-color"))))) + #:tests? #f)) + (home-page "https://github.com/debug-js/debug") + (synopsis "Debugging utility for Node.js") + (description "The @code{debug} module exposes a function, which if called +with a module name as argument provides a function that writes debug output to +@code{console.error} under that module name. This output can be controlled in +a more fine-grained manner by binding the @env{DEBUG} variable.") + (license license:expat))) + (define-public node-env-variable (package (name "node-env-variable") @@ -252,6 +405,60 @@ multiple node.js files, while providing useful information about output and exit codes.") (license license:expat))) +(define-public node-file-uri-to-path + (package + (name "node-file-uri-to-path") + (version "2.0.0") + (source + (origin + (method git-fetch) + (uri (git-reference + (url "https://github.com/TooTallNate/file-uri-to-path") + (commit version))) + (file-name (git-file-name name version)) + (sha256 + (base32 "08l779az44czm12xdhgcrnzpqw34s59hbrlfphs7g9y2k26drqav")))) + (native-inputs + (list esbuild)) + (build-system node-build-system) + (arguments + `(#:phases + (modify-phases %standard-phases + (add-after 'patch-dependencies 'delete-dependencies + (lambda args + (delete-dependencies `("@types/mocha" + "@types/node" + "@typescript-eslint/eslint-plugin" + "@typescript-eslint/parser" + "cpy-cli" + "eslint" + "eslint-config-airbnb" + "eslint-config-prettier" + "eslint-import-resolver-typescript" + "eslint-plugin-import" + "eslint-plugin-jsx-a11y" + "eslint-plugin-react" + "mocha" + "rimraf" + "typescript")))) + (replace 'build + (lambda* (#:key inputs native-inputs #:allow-other-keys) + (copy-recursively "src" "dist") + (invoke (search-input-file (or native-inputs inputs) + "/bin/esbuild") + "dist/index.ts" + "--outfile=dist/src/index.js" + "--format=cjs" + "--sourcemap" + "--platform=node")))) + #:tests? #f)) + (home-page "https://github.com/TooTallNate/file-uri-to-path") + (synopsis "Convert a @code{file:} URI to a file path") + (description "This package provides a function to convert a @code{file:} +URI to a file path. It accepts a @code{file:} URI and returns a file path +suitable for use with the @code{fs} module functions.") + (license license:expat))) + (define-public node-global-gradle-clean (package (name "node-global-gradle-clean") @@ -276,6 +483,121 @@ projects under a given directory. It uses the gradle wrapper to execute the clean task of each project.") (license license:expat))) +(define-public node-ieee754 + (package + (name "node-ieee754") + (version "1.2.1") + (source (origin + (method git-fetch) + (uri (git-reference + (url "https://github.com/feross/ieee754") + (commit (string-append "v" version)))) + (file-name (git-file-name name version)) + (sha256 + (base32 + "19rlg59lavnwsvbblhvrqwinz2wzqlxhddqpwrc3cyqkscjgza7i")))) + (build-system node-build-system) + (arguments + '(#:tests? #f + #:phases (modify-phases %standard-phases + (add-after 'patch-dependencies 'delete-dependencies + (lambda _ + (delete-dependencies '("airtap" "standard" "tape"))))))) + (home-page "https://github.com/feross/ieee754") + (synopsis "Read/write IEEE754 floating point numbers in Javascript") + (description "This package can read and write IEEE754 floating point +numbers from/to a Buffer or array-like object in Javascript.") + (license license:bsd-3))) + +(define-public node-inherits + (package + (name "node-inherits") + (version "2.0.4") + (source + (origin + (method git-fetch) + (uri (git-reference + (url "https://github.com/isaacs/inherits") + (commit (string-append "v" version)))) + (file-name (git-file-name name version)) + (sha256 + (base32 + "0cpsr5yqwkxpbbbbl0rwk4mcby6zbx841k2zb4c3gb1579i5wq9p")))) + (build-system node-build-system) + (arguments + '(#:phases + (modify-phases %standard-phases + (add-after 'patch-dependencies 'delete-dependencies + (lambda args + (delete-dependencies '("tap"))))) + ;; FIXME: Tests depend on node-tap + #:tests? #f)) + (home-page "https://github.com/isaacs/inherits") + (synopsis "Browser-friendly object inheritance") + (description "This package provides an alternative implementation of +Node's @code{inherits} constructor that can be used in browsers, while +defaulting to Node's implementation otherwise.") + (license license:isc))) + +(define-public node-irc + (package + (name "node-irc") + (version "0.5.2") + (source (origin + (method git-fetch) + (uri (git-reference + (url "https://github.com/martynsmith/node-irc") + (commit (string-append "v" version)))) + (file-name (git-file-name name version)) + (sha256 + (base32 + "1ln4qfx20jbwg4cp8lp0vf27m5281z2sz16d15xd6150n26cbi4x")))) + (build-system node-build-system) + (arguments + '(#:phases + (modify-phases %standard-phases + (add-after 'patch-dependencies 'delete-dependencies + (lambda args + (delete-dependencies + `("ansi-color" "faucet" "jscs" "tape"))))) + #:tests? #f)) + (inputs + (list node-irc-colors)) + (home-page "https://github.com/martynsmith/node-irc") + (synopsis "IRC client library for Node.js") + (description "@code{node-irc} is an IRC client library for Node.js. +It has functions for joining, parting, talking, and many other IRC commands.") + (license license:gpl3+))) + +(define-public node-irc-colors + (package + (name "node-irc-colors") + (version "1.5.0") + (source (origin + (method git-fetch) + (uri (git-reference + (url "https://github.com/fent/irc-colors.js") + (commit (string-append "v" version)))) + (file-name (git-file-name name version)) + (sha256 + (base32 + "0q3y34rbnlc55jcakmdxkicwazyvyph9r6gaf6hi8k7wj2nfwfli")))) + (build-system node-build-system) + (arguments + '(#:phases + (modify-phases %standard-phases + (add-after 'patch-dependencies 'delete-dependencies + (lambda args + (delete-dependencies `("istanbul" "vows"))))) + #:tests? #f)) + (home-page "https://github.com/fent/irc-colors.js") + (synopsis "Node.js module providing color and formatting for IRC") + (description "@code{node-irc-colors} is a Node.js module that +allows you to easily use colored output and formatting in IRC bots. +It contains functions for colours as well as more complex formatting +such as rainbows.") + (license license:expat))) + (define-public node-long-stack-traces (package (name "node-long-stack-traces") @@ -347,6 +669,78 @@ random number generator.") Javascript.") (license license:expat))) +(define-public node-ms + (package + (name "node-ms") + (version "2.1.3") + (source + (origin + (method git-fetch) + (uri (git-reference + (url "https://github.com/vercel/ms") + (commit version))) + (file-name (git-file-name name version)) + (sha256 + (base32 "1l74kmmwffmzdz38lli0v5mdb9p9jmsjxpb48ncknqw2n74cgf08")))) + (build-system node-build-system) + (arguments + `(#:phases + (modify-phases %standard-phases + (add-after 'patch-dependencies 'delete-dependencies + (lambda args + (delete-dependencies `("eslint" + "expect.js" + "husky" + "lint-staged" + "mocha" + "prettier"))))) + #:tests? #f)) + (home-page "https://github.com/vercel/ms") + (synopsis "Convert time to milliseconds") + (description "Use this package to easily convert various time formats to +milliseconds. A number supplied as integer or string is returned as-is, while +a string consisting of a number and a time unit is converted to milliseconds.") + (license license:expat))) + +(define-public node-nan + (package + (name "node-nan") + (version "2.15.0") + (source + (origin + (method git-fetch) + (uri (git-reference + (url "https://github.com/nodejs/nan") + (commit (string-append "v" version)))) + (file-name (git-file-name name version)) + (sha256 + (base32 "18xslh9va5ld872scrp5y4251ax9s3c6qh0lnl1200lpzbsxy7yd")))) + (build-system node-build-system) + (arguments + `(#:phases + (modify-phases %standard-phases + (add-after 'patch-dependencies 'delete-dependencies + (lambda args + (delete-dependencies + '("bindings" + "commander" + "glob" + "request" + "node-gyp" ;; would be needed for tests + "tap" + "xtend"))))) + ;; tests need tap and other dependencies + #:tests? #f)) + (inputs + (list node-readable-stream)) + (home-page "https://github.com/nodejs/nan") + (synopsis "Native Abstractions for Node.js") + (description "Native Abstractions for Node.js (``NaN'') provides a header +file filled with macros and utilities for making add-on development for Node.js +easier across versions. The goal is to provide all logic necessary to develop +native Node.js addons without having to inspect @code{NODE_MODULE_VERSION}.") + (license license:expat))) + (define-public node-normalize-path (package (name "node-normalize-path") @@ -376,6 +770,38 @@ Can also condense repeated slashes to a single slash and remove trailing slashes, unless disabled.") (license license:expat))) +(define-public node-once + (package + (name "node-once") + (version "1.4.0") + (source (origin + (method git-fetch) + (uri (git-reference + (url "https://github.com/isaacs/once") + (commit (string-append "v" version)))) + (file-name (git-file-name name version)) + (sha256 + (base32 + "1z8dcbf28dqdcp4wb0c53wrs90a07nkrax2c9kk26dsk1dhrnxav")))) + (build-system node-build-system) + (arguments + '(#:phases + (modify-phases %standard-phases + (add-after 'patch-dependencies 'delete-dependencies + (lambda args + (delete-dependencies '("tap"))))) + ;; FIXME: Tests depend on node-tap + #:tests? #f)) + (inputs + (list node-wrappy)) + (home-page "https://github.com/isaacs/once") + (synopsis "Node.js module to call a function only once") + (description + "@code{once} is a Node.js module to call a function exactly one time. +Subsequent calls will either return the cached previous value or throw an error +if desired.") + (license license:isc))) + (define-public node-oop ;; No releases, last commit was February 2013. (let ((commit "f9d87cda0958886955c14a0a716e57021ed295dc") @@ -401,6 +827,32 @@ slashes, unless disabled.") while being as light-weight and simple as possible.") (license license:expat)))) +(define-public node-path-key + (package + (name "node-path-key") + (version "4.0.0") + (source + (origin + (method git-fetch) + (uri (git-reference + (url "https://github.com/sindresorhus/path-key") + (commit (string-append "v" version)))) + (file-name (git-file-name name version)) + (sha256 + (base32 "09f4rf70qhq234fcc3pw9nrqic8cb75pk2b6wfnpr96v0r1h8d8g")))) + (build-system node-build-system) + (arguments + '(#:tests? #f + #:phases (modify-phases %standard-phases + (add-after 'patch-dependencies 'delete-dependencies + (lambda _ + (delete-dependencies '("@types/node" "ava" "tsd" "xo"))))))) + (home-page "https://github.com/sindresorhus/path-key") + (synopsis "Cross-platform utility to compute the PATH environment variable key") + (description "@code{path-key} provides an implementation to compute the +particular cross-platform spellings of the PATH environment variable key.") + (license license:expat))) + (define-public node-pbf (package (name "node-pbf") @@ -468,358 +920,6 @@ code.") written in Javascript.") (license license:expat))) -(define-public node-resolve-protobuf-schema - (package - (name "node-resolve-protobuf-schema") - (version "2.1.0") - (source (origin - (method git-fetch) - (uri (git-reference - (url "https://github.com/mafintosh/resolve-protobuf-schema") - (commit (string-append "v" version)))) - (file-name (git-file-name name version)) - (sha256 - (base32 - "0zxavr0b2yz9xzp6zlsg5g09i0a6zqb24j12rdvfgph6wd4mzk40")))) - (build-system node-build-system) - (arguments - '(#:tests? #f - #:phases (modify-phases %standard-phases - (add-after 'patch-dependencies 'delete-dependencies - (lambda _ - (delete-dependencies '("standard" "tape"))))))) - (inputs (list node-protocol-buffers-schema)) - (home-page "https://github.com/mafintosh/resolve-protobuf-schema") - (synopsis "Resolve protobuf imports") - (description - "This package can read a protobuf schema from the disk, parse it and -resolve all imports.") - (license license:expat))) - -(define-public node-safe-stable-stringify - (package - (name "node-safe-stable-stringify") - (version "2.4.3") - (source - (origin - (method git-fetch) - (uri (git-reference - (url "https://github.com/BridgeAR/safe-stable-stringify") - (commit (string-append "v" version)))) - (file-name (git-file-name name version)) - (sha256 - (base32 "008adig8j13rn2a21ngnp770y4zz6yq176ix5rkskjbb8g2qwapg")))) - (build-system node-build-system) - (arguments - '(#:tests? #f - #:phases (modify-phases %standard-phases - (add-after 'patch-dependencies 'delete-dependencies - (lambda _ - (delete-dependencies '("benchmark" "clone" - "fast-json-stable-stringify" - "fast-safe-stringify" - "fast-stable-stringify" - "faster-stable-stringify" - "fastest-stable-stringify" - "json-stable-stringify" - "json-stringify-deterministic" - "json-stringify-safe" - "standard" - "tap" - "typescript" - "@types/node" - "@types/json-stable-stringify"))))))) - (home-page "https://github.com/BridgeAR/safe-stable-stringify") - (synopsis "Serialization of javascript objects") - (description - "Safe, deterministic and fast serialization alternative to JSON.stringify. -Gracefully handles circular structures and bigint instead of throwing. -Optional custom circular values, deterministic behavior or strict JSON -compatibility check.") - (license license:expat))) - -(define-public node-stack-trace - ;; There have been improvements since the last release. - (let ((commit "4fd379ee78965ce7ce8820b436f1b1b590d5dbcf") - (revision "1")) - (package - (name "node-stack-trace") - (version (git-version "0.0.10" revision commit)) - (source - (origin - (method git-fetch) - (uri (git-reference - (url "https://github.com/felixge/node-stack-trace") - (commit commit))) - (file-name (git-file-name name version)) - (sha256 - (base32 - "1pk19wcpy8i95z5jr77fybd57qj7xmzmniap4dy47vjlmpkqia4i")))) - (build-system node-build-system) - (arguments - '(#:phases - (modify-phases %standard-phases - (add-before 'check 'skip-intentionally-failing-test - (lambda _ - (substitute* "test/run.js" - (("far.include") "far.exclude(/test-parse.js/)\nfar.include")) - #t))))) - (native-inputs - (list node-far node-long-stack-traces)) - (home-page "https://github.com/felixge/node-stack-trace") - (synopsis "Get v8 stack traces as an array of CallSite objects") - (description "Get v8 stack traces as an array of CallSite objects.") - (license license:expat)))) - -(define-public node-statsd-parser - (package - (name "node-statsd-parser") - (version "0.0.4") - (source - (origin - (method git-fetch) - (uri (git-reference - (url "https://github.com/dscape/statsd-parser") - (commit version))) - (file-name (git-file-name name version)) - (sha256 - (base32 - "049rnczsd6pv6bk282q4w72bhqc5cs562djgr7yncy7lk0wzq5j3")))) - (build-system node-build-system) - (arguments '(#:tests? #f)) ; No tests. - (home-page "https://github.com/dscape/statsd-parser") - (synopsis "Streaming parser for the statsd protocol") - (description "This package provides a streaming parser for the statsd -protocol used in @code{node-lynx}.") - (license license:asl2.0))) - -(define-public node-util-deprecate - (package - (name "node-util-deprecate") - (version "1.0.2") - (source - (origin - (method git-fetch) - (uri (git-reference - (url "https://github.com/TooTallNate/util-deprecate") - (commit version))) - (file-name (git-file-name name version)) - (sha256 - (base32 - "1rk94nl3qc7znsk8400bnga30v0m7j2mmvz9ldwjinxv1d3n11xc")))) - (build-system node-build-system) - (arguments '(#:tests? #f)) ; No test suite. - (home-page "https://github.com/TooTallNate/util-deprecate") - (synopsis "Node.js `util.deprecate()` function with browser support") - (description "This package provides the Node.js @code{util.deprecate()} -function with browser support.") - (license license:expat))) - -(define-public node-semver - (package - (name "node-semver") - (version "7.2.1") - (source (origin - (method git-fetch) - (uri (git-reference - (url "https://github.com/npm/node-semver") - (commit (string-append "v" version)))) - (file-name (git-file-name name version)) - (sha256 - (base32 - "06biknqb05r9xsmcflm3ygh50pjvdk84x6r79w43kmck4fn3qn5p")))) - (build-system node-build-system) - (arguments - '(#:phases - (modify-phases %standard-phases - (add-after 'patch-dependencies 'delete-dependencies - (lambda args - (delete-dependencies '("tap"))))) - ;; FIXME: Tests depend on node-tap - #:tests? #f)) - (home-page "https://github.com/npm/node-semver") - (synopsis "Parses semantic versions strings") - (description - "@code{node-semver} is a JavaScript implementation of the -@uref{https://semver.org/, SemVer.org} specification.") - (license license:isc))) - -(define-public node-wrappy - (package - (name "node-wrappy") - (version "1.0.2") - (source (origin - (method git-fetch) - (uri (git-reference - (url "https://github.com/npm/wrappy") - (commit (string-append "v" version)))) - (file-name (git-file-name name version)) - (sha256 - (base32 - "1ymlc61cja6v5438vwb04gq8wg2b784lj39zf0g4i36fvgcw9783")))) - (build-system node-build-system) - (arguments - '(#:tests? #f ; FIXME: Tests depend on node-tap - #:phases - (modify-phases %standard-phases - (add-after 'patch-dependencies 'delete-dependencies - (lambda args - (delete-dependencies '("tap"))))))) - (home-page "https://github.com/npm/wrappy") - (synopsis "Callback wrapping utility") - (description "@code{wrappy} is a utility for Node.js to wrap callbacks.") - (license license:isc))) - -(define-public node-once - (package - (name "node-once") - (version "1.4.0") - (source (origin - (method git-fetch) - (uri (git-reference - (url "https://github.com/isaacs/once") - (commit (string-append "v" version)))) - (file-name (git-file-name name version)) - (sha256 - (base32 - "1z8dcbf28dqdcp4wb0c53wrs90a07nkrax2c9kk26dsk1dhrnxav")))) - (build-system node-build-system) - (arguments - '(#:phases - (modify-phases %standard-phases - (add-after 'patch-dependencies 'delete-dependencies - (lambda args - (delete-dependencies '("tap"))))) - ;; FIXME: Tests depend on node-tap - #:tests? #f)) - (inputs - (list node-wrappy)) - (home-page "https://github.com/isaacs/once") - (synopsis "Node.js module to call a function only once") - (description - "@code{once} is a Node.js module to call a function exactly one time. -Subsequent calls will either return the cached previous value or throw an error -if desired.") - (license license:isc))) - -(define-public node-ieee754 - (package - (name "node-ieee754") - (version "1.2.1") - (source (origin - (method git-fetch) - (uri (git-reference - (url "https://github.com/feross/ieee754") - (commit (string-append "v" version)))) - (file-name (git-file-name name version)) - (sha256 - (base32 - "19rlg59lavnwsvbblhvrqwinz2wzqlxhddqpwrc3cyqkscjgza7i")))) - (build-system node-build-system) - (arguments - '(#:tests? #f - #:phases (modify-phases %standard-phases - (add-after 'patch-dependencies 'delete-dependencies - (lambda _ - (delete-dependencies '("airtap" "standard" "tape"))))))) - (home-page "https://github.com/feross/ieee754") - (synopsis "Read/write IEEE754 floating point numbers in Javascript") - (description "This package can read and write IEEE754 floating point -numbers from/to a Buffer or array-like object in Javascript.") - (license license:bsd-3))) - -(define-public node-inherits - (package - (name "node-inherits") - (version "2.0.4") - (source - (origin - (method git-fetch) - (uri (git-reference - (url "https://github.com/isaacs/inherits") - (commit (string-append "v" version)))) - (file-name (git-file-name name version)) - (sha256 - (base32 - "0cpsr5yqwkxpbbbbl0rwk4mcby6zbx841k2zb4c3gb1579i5wq9p")))) - (build-system node-build-system) - (arguments - '(#:phases - (modify-phases %standard-phases - (add-after 'patch-dependencies 'delete-dependencies - (lambda args - (delete-dependencies '("tap"))))) - ;; FIXME: Tests depend on node-tap - #:tests? #f)) - (home-page "https://github.com/isaacs/inherits") - (synopsis "Browser-friendly object inheritance") - (description "This package provides an alternative implementation of -Node's @code{inherits} constructor that can be used in browsers, while -defaulting to Node's implementation otherwise.") - (license license:isc))) - -(define-public node-safe-buffer - (package - (name "node-safe-buffer") - (version "5.2.1") - (source - (origin - (method git-fetch) - (uri (git-reference - (url "https://github.com/feross/safe-buffer") - (commit (string-append "v" version)))) - (file-name (git-file-name name version)) - (sha256 - (base32 - "0r26m0nl41h90ihnl2xf0cqs6z9z7jb87dl5j8yqb7887r9jlbpi")))) - (build-system node-build-system) - (arguments - '(#:phases - (modify-phases %standard-phases - (add-after 'patch-dependencies 'delete-dependencies - (lambda args - (delete-dependencies '("tape" "standard"))))) - #:tests? #f)) - (home-page "https://github.com/feross/safe-buffer") - (synopsis "Buffer creation with explicit semantics") - (description "This package provides a drop-in replacement for Node.js -@code{Buffer} API, which provides newer, explicit constructors (such as -@code{Buffer.alloc(SIZE)}) in older versions.") - (license license:expat))) - -(define-public node-string-decoder - (package - (name "node-string-decoder") - (version "1.3.0") - (source - (origin - (method git-fetch) - (uri (git-reference - (url "https://github.com/nodejs/string_decoder") - (commit (string-append "v" version)))) - (file-name (git-file-name name version)) - (sha256 - (base32 - "0xxvyya9fl9rlkqwmxzqzbz4rdr3jgw4vf37hff7cgscxkhg266k")))) - (build-system node-build-system) - (arguments - '(#:phases - (modify-phases %standard-phases - (add-after 'patch-dependencies 'delete-dependencies - (lambda args - (delete-dependencies - '("tap" "core-util-is" "babel-polyfill"))))) - ;; FIXME: Tests depend on node-tap - #:tests? #f)) - (inputs (list node-safe-buffer node-inherits)) - (home-page "https://github.com/nodejs/string_decoder") - (synopsis "Decode buffers while preserving multi-byte sequences") - (description "This package provides a user-land implementation of -Node-core's @code{string_decoder}, which serves to decode buffers to -strings so that the decoded string does not contain incomplete multibyte -sequences.") - (license license:expat))) - (define-public node-readable-stream (package (name "node-readable-stream") @@ -869,392 +969,103 @@ sequences.") that behaves the same across different versions.") (license license:expat))) -(define-public node-irc-colors +(define-public node-resolve-protobuf-schema (package - (name "node-irc-colors") - (version "1.5.0") + (name "node-resolve-protobuf-schema") + (version "2.1.0") (source (origin (method git-fetch) (uri (git-reference - (url "https://github.com/fent/irc-colors.js") + (url "https://github.com/mafintosh/resolve-protobuf-schema") (commit (string-append "v" version)))) (file-name (git-file-name name version)) (sha256 (base32 - "0q3y34rbnlc55jcakmdxkicwazyvyph9r6gaf6hi8k7wj2nfwfli")))) + "0zxavr0b2yz9xzp6zlsg5g09i0a6zqb24j12rdvfgph6wd4mzk40")))) (build-system node-build-system) (arguments - '(#:phases - (modify-phases %standard-phases - (add-after 'patch-dependencies 'delete-dependencies - (lambda args - (delete-dependencies `("istanbul" "vows"))))) - #:tests? #f)) - (home-page "https://github.com/fent/irc-colors.js") - (synopsis "Node.js module providing color and formatting for IRC") - (description "@code{node-irc-colors} is a Node.js module that -allows you to easily use colored output and formatting in IRC bots. -It contains functions for colours as well as more complex formatting -such as rainbows.") + '(#:tests? #f + #:phases (modify-phases %standard-phases + (add-after 'patch-dependencies 'delete-dependencies + (lambda _ + (delete-dependencies '("standard" "tape"))))))) + (inputs (list node-protocol-buffers-schema)) + (home-page "https://github.com/mafintosh/resolve-protobuf-schema") + (synopsis "Resolve protobuf imports") + (description + "This package can read a protobuf schema from the disk, parse it and +resolve all imports.") (license license:expat))) -(define-public node-irc - (package - (name "node-irc") - (version "0.5.2") - (source (origin - (method git-fetch) - (uri (git-reference - (url "https://github.com/martynsmith/node-irc") - (commit (string-append "v" version)))) - (file-name (git-file-name name version)) - (sha256 - (base32 - "1ln4qfx20jbwg4cp8lp0vf27m5281z2sz16d15xd6150n26cbi4x")))) - (build-system node-build-system) - (arguments - '(#:phases - (modify-phases %standard-phases - (add-after 'patch-dependencies 'delete-dependencies - (lambda args - (delete-dependencies - `("ansi-color" "faucet" "jscs" "tape"))))) - #:tests? #f)) - (inputs - (list node-irc-colors)) - (home-page "https://github.com/martynsmith/node-irc") - (synopsis "IRC client library for Node.js") - (description "@code{node-irc} is an IRC client library for Node.js. -It has functions for joining, parting, talking, and many other IRC commands.") - (license license:gpl3+))) - -(define-public node-nan +(define-public node-safe-buffer (package - (name "node-nan") - (version "2.15.0") + (name "node-safe-buffer") + (version "5.2.1") (source (origin (method git-fetch) (uri (git-reference - (url "https://github.com/nodejs/nan") + (url "https://github.com/feross/safe-buffer") (commit (string-append "v" version)))) (file-name (git-file-name name version)) (sha256 - (base32 "18xslh9va5ld872scrp5y4251ax9s3c6qh0lnl1200lpzbsxy7yd")))) + (base32 + "0r26m0nl41h90ihnl2xf0cqs6z9z7jb87dl5j8yqb7887r9jlbpi")))) (build-system node-build-system) (arguments - `(#:phases + '(#:phases (modify-phases %standard-phases (add-after 'patch-dependencies 'delete-dependencies (lambda args - (delete-dependencies - '("bindings" - "commander" - "glob" - "request" - "node-gyp" ;; would be needed for tests - "tap" - "xtend"))))) - ;; tests need tap and other dependencies + (delete-dependencies '("tape" "standard"))))) #:tests? #f)) - (inputs - (list node-readable-stream)) - (home-page "https://github.com/nodejs/nan") - (synopsis "Native Abstractions for Node.js") - (description "Native Abstractions for Node.js (``NaN'') provides a header -file filled with macros and utilities for making add-on development for Node.js -easier across versions. The goal is to provide all logic necessary to develop -native Node.js addons without having to inspect @code{NODE_MODULE_VERSION}.") - (license license:expat))) - -(define-public node-addon-api - (package - (name "node-addon-api") - (version "4.2.0") - (source - (origin - (method git-fetch) - (uri (git-reference - (url "https://github.com/nodejs/node-addon-api") - (commit (string-append "v" version)))) - (file-name (git-file-name name version)) - (sha256 - (base32 "1bhvfi2m9nxfz418s619914vmidcnrzbjv6l9nid476c3zlpazch")))) - (inputs - (list python node-safe-buffer)) - (build-system node-build-system) - (arguments - `(#:modules - ((guix build node-build-system) - (srfi srfi-1) - (ice-9 match) - (guix build utils)) - #:phases - (modify-phases %standard-phases - (add-after 'patch-dependencies 'delete-dependencies - (lambda args - (delete-dependencies - `("benchmark" - "bindings" - "clang-format" - "eslint" - "eslint-config-semistandard" - "eslint-config-standard" - "eslint-plugin-import" - "eslint-plugin-node" - "eslint-plugin-promise" - "fs-extra" - "path" - "pre-commit")))) - (add-after 'unpack 'skip-js-tests - ;; We can't run the js-based tests, - ;; but we can still do the C++ parts - (lambda args - (define new-test-script - "echo stopping after pretest on Guix") - (with-atomic-json-file-replacement "package.json" - (match-lambda - (('@ . pkg-meta-alist) - (cons - '@ - (map (match-lambda - (("scripts" '@ . scripts-alist) - `("scripts" @ ,@(map (match-lambda - (("test" . _) - (cons "test" - new-test-script)) - (other - other)) - scripts-alist))) - (other - other)) - pkg-meta-alist)))))))))) - (home-page "https://github.com/nodejs/node-addon-api") - (synopsis "Node.js API (Node-API) header-only C++ wrappers") - (description "This module contains header-only C++ wrapper classes which -simplify the use of the C based Node-API provided by Node.js when using C++. -It provides a C++ object model and exception handling semantics with low -overhead. - -Node-API is an ABI stable C interface provided by Node.js for building native -addons. It is intended to insulate native addons from changes in the -underlying JavaScript engine and allow modules compiled for one version to run -on later versions of Node.js without recompilation. The @code{node-addon-api} -module, which is not part of Node.js, preserves the benefits of the Node-API -as it consists only of inline code that depends only on the stable API -provided by Node-API. - -It is important to remember that @emph{other} Node.js interfaces such as -@code{libuv} (included in a project via @code{#include <uv.h>}) are not -ABI-stable across Node.js major versions.") + (home-page "https://github.com/feross/safe-buffer") + (synopsis "Buffer creation with explicit semantics") + (description "This package provides a drop-in replacement for Node.js +@code{Buffer} API, which provides newer, explicit constructors (such as +@code{Buffer.alloc(SIZE)}) in older versions.") (license license:expat))) -(define-public node-sqlite3 +(define-public node-safe-stable-stringify (package - (name "node-sqlite3") - (version "5.0.2") + (name "node-safe-stable-stringify") + (version "2.4.3") (source (origin (method git-fetch) (uri (git-reference - (url "https://github.com/mapbox/node-sqlite3") + (url "https://github.com/BridgeAR/safe-stable-stringify") (commit (string-append "v" version)))) (file-name (git-file-name name version)) (sha256 - (base32 "0sbbzzli282nxyfha10zx0k5m8hdp0sf3ipl59khjb7wm449j86h")) - (snippet - (with-imported-modules '((guix build utils)) - #~(begin - (use-modules (guix build utils)) - ;; unbundle sqlite - (for-each delete-file-recursively - (find-files "deps" - (lambda (pth stat) - (gzip-file? pth))))))))) - (inputs - (list node-addon-api python sqlite)) + (base32 "008adig8j13rn2a21ngnp770y4zz6yq176ix5rkskjbb8g2qwapg")))) (build-system node-build-system) (arguments - `(#:modules - ((guix build node-build-system) - (srfi srfi-1) - (ice-9 match) - (guix build utils)) - #:tests? #f ; FIXME: tests depend on node-mocha - #:phases - (modify-phases %standard-phases - (add-after 'patch-dependencies 'delete-dependencies - (lambda args - (delete-dependencies - `(;; Normally, this is "built" using @mapbox/node-pre-gyp, - ;; which publishes or downloads pre-built binaries or - ;; falls back to building from source. Here, we patch out - ;; all of that and just build directly. It might be - ;; better to patch a version of @mapbox/node-pre-gyp that - ;; always builds from source, as Debian does, but there - ;; are a number of dependencies that need to be packaged - ;; or removed. - "@mapbox/node-pre-gyp" - "node-pre-gyp" ;; deprecated name still used in some places - "aws-sdk" - "@mapbox/cloudfriend" - ;; Confusingly, this is only a dependency because of - ;; @mapbox/node-pre-gyp: with that removed, - ;; npm will use its own copy: - "node-gyp" - ;; These we'd like, we just don't have them yet: - "eslint" - "mocha")))) - (add-before 'configure 'npm-config-sqlite - ;; We need this step even if we do replace @mapbox/node-pre-gyp - ;; because the package expects to build its bundled sqlite - (lambda* (#:key inputs #:allow-other-keys) - (setenv "npm_config_sqlite" (assoc-ref inputs "sqlite")))) - (add-after 'install 'patch-binding-path - ;; We replace a file that dynamic searches for the addon using - ;; node-pre-gyp (which we don't have) with a version that - ;; simply uses the path to the addon we built directly. - ;; The exact path is supposed to depend on things like the - ;; architecture and napi_build_version, so, to avoid having - ;; hard-code the details accurately, we do this after the addon - ;; has been built so we can just find where it ended up. - (lambda* (#:key outputs #:allow-other-keys) - (with-directory-excursion - (search-input-directory outputs - "lib/node_modules/sqlite3/lib") - (match (find-files "binding" "\\.node$") - ((rel-path) - (with-atomic-file-replacement "sqlite3-binding.js" - (lambda (in out) - (format out "var binding = require('./~a');\n" rel-path) - (display "module.exports = exports = binding;\n" - out)))))))) - (add-after 'patch-dependencies 'avoid-node-pre-gyp - (lambda args - ;; We need to patch .npmignore before the 'repack phase - ;; so that the built addon is installed with in the package. - ;; (Upstream assumes node-pre-gyp will download a pre-built - ;; version when this package is installed.) - (substitute* ".npmignore" - (("lib/binding") - "#lib/binding # <- patched for Guix")) - (with-atomic-json-file-replacement "package.json" - (match-lambda - (('@ . pkg-meta-alist) - (match (assoc-ref pkg-meta-alist "binary") - (('@ . binary-alist) - ;; When it builds from source, node-pre-gyp supplies - ;; module_name and module_path based on the entries under - ;; "binary" from "package.json", so this package's - ;; "binding.gyp" doesn't define them. Thus, we also need - ;; to supply them. The GYP_DEFINES environment variable - ;; turns out to be the easiest way to make sure they are - ;; propagated from npm to node-gyp to gyp. - (setenv "GYP_DEFINES" - (string-append - "module_name=" - (assoc-ref binary-alist "module_name") - " " - "module_path=" - (assoc-ref binary-alist "module_path"))))) - ;; We need to remove the install script from "package.json", - ;; as it would try to use node-pre-gyp and would block the - ;; automatic building performed by `npm install`. - (cons '@ (map (match-lambda - (("scripts" @ . scripts-alist) - `("scripts" @ ,@(filter (match-lambda - (("install" . _) - #f) - (_ - #t)) - scripts-alist))) - (other - other)) - pkg-meta-alist)))))))))) - (home-page "https://github.com/mapbox/node-sqlite3") - (synopsis "Node.js bindings for SQLite3") + '(#:tests? #f + #:phases (modify-phases %standard-phases + (add-after 'patch-dependencies 'delete-dependencies + (lambda _ + (delete-dependencies '("benchmark" "clone" + "fast-json-stable-stringify" + "fast-safe-stringify" + "fast-stable-stringify" + "faster-stable-stringify" + "fastest-stable-stringify" + "json-stable-stringify" + "json-stringify-deterministic" + "json-stringify-safe" + "standard" + "tap" + "typescript" + "@types/node" + "@types/json-stable-stringify"))))))) + (home-page "https://github.com/BridgeAR/safe-stable-stringify") + (synopsis "Serialization of javascript objects") (description - "@code{node-sqlite3} provides a set of a Node.js bindings for interacting -with SQLite3 databases.") - (license license:bsd-3))) - -(define-public node-file-uri-to-path - (package - (name "node-file-uri-to-path") - (version "2.0.0") - (source - (origin - (method git-fetch) - (uri (git-reference - (url "https://github.com/TooTallNate/file-uri-to-path") - (commit version))) - (file-name (git-file-name name version)) - (sha256 - (base32 "08l779az44czm12xdhgcrnzpqw34s59hbrlfphs7g9y2k26drqav")))) - (native-inputs - (list esbuild)) - (build-system node-build-system) - (arguments - `(#:phases - (modify-phases %standard-phases - (add-after 'patch-dependencies 'delete-dependencies - (lambda args - (delete-dependencies `("@types/mocha" - "@types/node" - "@typescript-eslint/eslint-plugin" - "@typescript-eslint/parser" - "cpy-cli" - "eslint" - "eslint-config-airbnb" - "eslint-config-prettier" - "eslint-import-resolver-typescript" - "eslint-plugin-import" - "eslint-plugin-jsx-a11y" - "eslint-plugin-react" - "mocha" - "rimraf" - "typescript")))) - (replace 'build - (lambda* (#:key inputs native-inputs #:allow-other-keys) - (copy-recursively "src" "dist") - (invoke (search-input-file (or native-inputs inputs) - "/bin/esbuild") - "dist/index.ts" - "--outfile=dist/src/index.js" - "--format=cjs" - "--sourcemap" - "--platform=node")))) - #:tests? #f)) - (home-page "https://github.com/TooTallNate/file-uri-to-path") - (synopsis "Convert a @code{file:} URI to a file path") - (description "This package provides a function to convert a @code{file:} -URI to a file path. It accepts a @code{file:} URI and returns a file path -suitable for use with the @code{fs} module functions.") - (license license:expat))) - -(define-public node-bindings - (package - (name "node-bindings") - (version "1.5.0") - (source - (origin - (method git-fetch) - (uri (git-reference - (url "https://github.com/TooTallNate/node-bindings") - (commit version))) - (file-name (git-file-name name version)) - (sha256 - (base32 "100gp6kpjvd4j1dqnp0sbjr1hqx5mz7r61q9qy527jyhk9mj47wk")))) - (inputs - (list node-file-uri-to-path)) - (build-system node-build-system) - (arguments - ;; there are no tests - `(#:tests? #f)) - (home-page "https://github.com/TooTallNate/node-bindings") - (synopsis "Locate native addons") - (description "This package provides a helper module to locate native -addons in a wide array of potential locations.") + "Safe, deterministic and fast serialization alternative to JSON.stringify. +Gracefully handles circular structures and bigint instead of throwing. +Optional custom circular values, deterministic behavior or strict JSON +compatibility check.") (license license:expat))) (define-public node-segfault-handler @@ -1286,97 +1097,84 @@ code modules and getting stack traces when things go wrong. If a both @file{stderr} and to a timestamped file.") (license license:bsd-3))) -(define-public node-ms +(define-public node-semver (package - (name "node-ms") - (version "2.1.3") - (source - (origin - (method git-fetch) - (uri (git-reference - (url "https://github.com/vercel/ms") - (commit version))) - (file-name (git-file-name name version)) - (sha256 - (base32 "1l74kmmwffmzdz38lli0v5mdb9p9jmsjxpb48ncknqw2n74cgf08")))) + (name "node-semver") + (version "7.2.1") + (source (origin + (method git-fetch) + (uri (git-reference + (url "https://github.com/npm/node-semver") + (commit (string-append "v" version)))) + (file-name (git-file-name name version)) + (sha256 + (base32 + "06biknqb05r9xsmcflm3ygh50pjvdk84x6r79w43kmck4fn3qn5p")))) (build-system node-build-system) (arguments - `(#:phases + '(#:phases (modify-phases %standard-phases (add-after 'patch-dependencies 'delete-dependencies (lambda args - (delete-dependencies `("eslint" - "expect.js" - "husky" - "lint-staged" - "mocha" - "prettier"))))) + (delete-dependencies '("tap"))))) + ;; FIXME: Tests depend on node-tap #:tests? #f)) - (home-page "https://github.com/vercel/ms") - (synopsis "Convert time to milliseconds") - (description "Use this package to easily convert various time formats to -milliseconds. A number supplied as integer or string is returned as-is, while -a string consisting of a number and a time unit is converted to milliseconds.") - (license license:expat))) + (home-page "https://github.com/npm/node-semver") + (synopsis "Parses semantic versions strings") + (description + "@code{node-semver} is a JavaScript implementation of the +@uref{https://semver.org/, SemVer.org} specification.") + (license license:isc))) -(define-public node-debug +(define-public node-serialport (package - (name "node-debug") - (version "4.3.3") + (name "node-serialport") + (version "9.2.7") (source (origin (method git-fetch) (uri (git-reference - (url "https://github.com/debug-js/debug") - (commit version))) - (file-name (git-file-name name version)) + (url "https://github.com/serialport/node-serialport") + (commit (string-append "v" version)))) (sha256 - (base32 "0ji0dmdl2xkgxqxvd6xjy7k3mmknmhvqjgc40vyly9ka1mpf20vb")))) + (base32 "0x7zm59a5ff5yygjyw15xs3r5m3rb8av1yfrh4snn44mrwq87yg8")))) (inputs - (list node-ms)) + (list node-serialport-bindings + node-serialport-parser-delimiter + node-serialport-parser-readline + node-serialport-parser-regex + node-serialport-parser-ready + node-serialport-parser-inter-byte-timeout + node-serialport-parser-cctalk + node-serialport-parser-byte-length + node-serialport-stream + node-debug)) (build-system node-build-system) (arguments `(#:phases (modify-phases %standard-phases (add-after 'patch-dependencies 'delete-dependencies (lambda args - (delete-dependencies `("brfs" - "browserify" - "coveralls" - "istanbul" - "karma" - "karma-browserify" - "karma-chrome-launcher" - "karma-mocha" - "mocha" - "mocha-lcov-reporter" - "xo" - "supports-color"))))) + (delete-dependencies `("@serialport/binding-mock")))) + (add-after 'unpack 'chdir + (lambda args + (chdir "packages/serialport")))) #:tests? #f)) - (home-page "https://github.com/debug-js/debug") - (synopsis "Debugging utility for Node.js") - (description "The @code{debug} module exposes a function, which if called -with a module name as argument provides a function that writes debug output to -@code{console.error} under that module name. This output can be controlled in -a more fine-grained manner by binding the @env{DEBUG} variable.") + (home-page "https://serialport.io") + (synopsis "Node.js package to access serial ports") + (description "Node SerialPort is a modular suite of Node.js packages for +accessing serial ports. This package is the recommended entry point for most +projects. It combines a high-level Node.js stream interface with a useful +default set of parsers and bindings.") (license license:expat))) (define-public node-serialport-binding-abstract (package + (inherit node-serialport) (name "node-serialport-binding-abstract") (version "9.2.3") - (source - (origin - (method git-fetch) - (uri (git-reference - (url "https://github.com/serialport/node-serialport") - (commit "v9.2.7"))) - (file-name (git-file-name "serialport-monorepo" version)) - (sha256 - (base32 "0x7zm59a5ff5yygjyw15xs3r5m3rb8av1yfrh4snn44mrwq87yg8")))) (inputs (list node-debug)) - (build-system node-build-system) (arguments `(#:phases (modify-phases %standard-phases @@ -1384,7 +1182,6 @@ a more fine-grained manner by binding the @env{DEBUG} variable.") (lambda args (chdir "packages/binding-abstract")))) #:tests? #f)) - (home-page "https://serialport.io") (synopsis "Abstract base class for Node SerialPort bindings") (description "Node SerialPort is a modular suite of Node.js packages for accessing serial ports. The Guix package @code{node-serialport} provides the @@ -1392,57 +1189,11 @@ recommended high-level interface. This package provides the @code{AbstractBinding} class, the base for all Node SerialPort bindings. You wouldn't use this class directly, but instead extend -it to make a new binding for a different platform or underling technology.") - (license license:expat))) - -(define-public node-serialport-parser-delimiter - (package - (inherit node-serialport-binding-abstract) - (name "node-serialport-parser-delimiter") - (version "9.2.4") - (inputs `()) - (arguments - `(#:phases - (modify-phases %standard-phases - (add-after 'unpack 'chdir - (lambda args - (chdir "packages/parser-delimiter")))) - #:tests? #f)) - (synopsis "Node SerialPort parser to split data on a delimiter") - (description "Node SerialPort is a modular suite of Node.js packages for -accessing serial ports. The Guix package @code{node-serialport} provides the -recommended high-level interface. - -Parsers are used to take raw binary data and transform them into usable -messages. This package provides @code{Delimiter}, a parser that emits data -each time a specified byte sequence is received."))) - -(define-public node-serialport-parser-readline - (package - (inherit node-serialport-binding-abstract) - (name "node-serialport-parser-readline") - (version "9.2.4") - (inputs - (list node-serialport-parser-delimiter)) - (arguments - `(#:phases - (modify-phases %standard-phases - (add-after 'unpack 'chdir - (lambda args - (chdir "packages/parser-readline")))) - #:tests? #f)) - (synopsis "Node SerialPort parser to split data on newlines") - (description "Node SerialPort is a modular suite of Node.js packages for -accessing serial ports. The Guix package @code{node-serialport} provides the -recommended high-level interface. - -Parsers are used to take raw binary data and transform them into usable -messages. This package provides @code{Readline}, a parser that emits data -after a (configurable) newline delimiter is received."))) +it to make a new binding for a different platform or underling technology."))) (define-public node-serialport-bindings (package - (inherit node-serialport-binding-abstract) + (inherit node-serialport) (name "node-serialport-bindings") (version "9.2.7") (native-inputs @@ -1496,10 +1247,10 @@ talk to the underlying system. You never have to use @code{Binding} objects directly. There is also a @code{MockBinding} available (but not yet packaged for Guix) to assist with testing."))) -(define-public node-serialport-parser-regex +(define-public node-serialport-parser-byte-length (package - (inherit node-serialport-binding-abstract) - (name "node-serialport-parser-regex") + (inherit node-serialport) + (name "node-serialport-parser-byte-length") (version "9.2.4") (inputs `()) (arguments @@ -1507,21 +1258,21 @@ for Guix) to assist with testing."))) (modify-phases %standard-phases (add-after 'unpack 'chdir (lambda args - (chdir "packages/parser-regex")))) + (chdir "packages/parser-byte-length")))) #:tests? #f)) - (synopsis "Node SerialPort parser to split data on a regular expression") + (synopsis "Node SerialPort parser for fixed-length buffers") (description "Node SerialPort is a modular suite of Node.js packages for accessing serial ports. The Guix package @code{node-serialport} provides the recommended high-level interface. Parsers are used to take raw binary data and transform them into usable -messages. This package provides @code{Regex}, a parser that uses a regular -expression to split the incoming text."))) +messages. This package provides @code{ByteLength}, a parser that emits data +as a buffer every time a specified number of bytes are received."))) -(define-public node-serialport-parser-ready +(define-public node-serialport-parser-cctalk (package - (inherit node-serialport-binding-abstract) - (name "node-serialport-parser-ready") + (inherit node-serialport) + (name "node-serialport-parser-cctalk") (version "9.2.4") (inputs `()) (arguments @@ -1529,21 +1280,43 @@ expression to split the incoming text."))) (modify-phases %standard-phases (add-after 'unpack 'chdir (lambda args - (chdir "packages/parser-ready")))) + (chdir "packages/parser-cctalk")))) #:tests? #f)) - (synopsis "Node SerialPort parser to wait for specified byte sequence") + (synopsis "Node SerialPort parser for the ccTalk protocol") (description "Node SerialPort is a modular suite of Node.js packages for accessing serial ports. The Guix package @code{node-serialport} provides the recommended high-level interface. Parsers are used to take raw binary data and transform them into usable -messages. This package provides @code{Ready}, a parser that waits for a -specified sequence of ``ready'' bytes before emitting a ready event and -emitting data events."))) +messages. This package provides @code{CCTalk}, which emits packets for the +ccTalk protocol (an open standard for currency detectors) as they are +received."))) + +(define-public node-serialport-parser-delimiter + (package + (inherit node-serialport) + (name "node-serialport-parser-delimiter") + (version "9.2.4") + (inputs `()) + (arguments + `(#:phases + (modify-phases %standard-phases + (add-after 'unpack 'chdir + (lambda args + (chdir "packages/parser-delimiter")))) + #:tests? #f)) + (synopsis "Node SerialPort parser to split data on a delimiter") + (description "Node SerialPort is a modular suite of Node.js packages for +accessing serial ports. The Guix package @code{node-serialport} provides the +recommended high-level interface. + +Parsers are used to take raw binary data and transform them into usable +messages. This package provides @code{Delimiter}, a parser that emits data +each time a specified byte sequence is received."))) (define-public node-serialport-parser-inter-byte-timeout (package - (inherit node-serialport-binding-abstract) + (inherit node-serialport) (name "node-serialport-parser-inter-byte-timeout") (version "9.2.4") (inputs `()) @@ -1563,10 +1336,33 @@ Parsers are used to take raw binary data and transform them into usable messages. This package provides @code{InterByteTimeout}, a parser that emits data if there is a pause between packets for the specified amount of time."))) -(define-public node-serialport-parser-cctalk +(define-public node-serialport-parser-readline (package - (inherit node-serialport-binding-abstract) - (name "node-serialport-parser-cctalk") + (inherit node-serialport) + (name "node-serialport-parser-readline") + (version "9.2.4") + (inputs + (list node-serialport-parser-delimiter)) + (arguments + `(#:phases + (modify-phases %standard-phases + (add-after 'unpack 'chdir + (lambda args + (chdir "packages/parser-readline")))) + #:tests? #f)) + (synopsis "Node SerialPort parser to split data on newlines") + (description "Node SerialPort is a modular suite of Node.js packages for +accessing serial ports. The Guix package @code{node-serialport} provides the +recommended high-level interface. + +Parsers are used to take raw binary data and transform them into usable +messages. This package provides @code{Readline}, a parser that emits data +after a (configurable) newline delimiter is received."))) + +(define-public node-serialport-parser-ready + (package + (inherit node-serialport) + (name "node-serialport-parser-ready") (version "9.2.4") (inputs `()) (arguments @@ -1574,22 +1370,22 @@ data if there is a pause between packets for the specified amount of time."))) (modify-phases %standard-phases (add-after 'unpack 'chdir (lambda args - (chdir "packages/parser-cctalk")))) + (chdir "packages/parser-ready")))) #:tests? #f)) - (synopsis "Node SerialPort parser for the ccTalk protocol") + (synopsis "Node SerialPort parser to wait for specified byte sequence") (description "Node SerialPort is a modular suite of Node.js packages for accessing serial ports. The Guix package @code{node-serialport} provides the recommended high-level interface. Parsers are used to take raw binary data and transform them into usable -messages. This package provides @code{CCTalk}, which emits packets for the -ccTalk protocol (an open standard for currency detectors) as they are -received."))) +messages. This package provides @code{Ready}, a parser that waits for a +specified sequence of ``ready'' bytes before emitting a ready event and +emitting data events."))) -(define-public node-serialport-parser-byte-length +(define-public node-serialport-parser-regex (package - (inherit node-serialport-binding-abstract) - (name "node-serialport-parser-byte-length") + (inherit node-serialport) + (name "node-serialport-parser-regex") (version "9.2.4") (inputs `()) (arguments @@ -1597,20 +1393,20 @@ received."))) (modify-phases %standard-phases (add-after 'unpack 'chdir (lambda args - (chdir "packages/parser-byte-length")))) + (chdir "packages/parser-regex")))) #:tests? #f)) - (synopsis "Node SerialPort parser for fixed-length buffers") + (synopsis "Node SerialPort parser to split data on a regular expression") (description "Node SerialPort is a modular suite of Node.js packages for accessing serial ports. The Guix package @code{node-serialport} provides the recommended high-level interface. Parsers are used to take raw binary data and transform them into usable -messages. This package provides @code{ByteLength}, a parser that emits data -as a buffer every time a specified number of bytes are received."))) +messages. This package provides @code{Regex}, a parser that uses a regular +expression to split the incoming text."))) (define-public node-serialport-stream (package - (inherit node-serialport-binding-abstract) + (inherit node-serialport) (name "node-serialport-stream") (version "9.2.4") (inputs @@ -1636,38 +1432,270 @@ Node.js Stream API. The stream is a duplex stream, allowing for reading and writing. It has additional methods for managing the SerialPort connection."))) -(define-public node-serialport +(define-public node-sqlite3 (package - (inherit node-serialport-binding-abstract) - (name "node-serialport") - (version "9.2.7") + (name "node-sqlite3") + (version "5.0.2") + (source + (origin + (method git-fetch) + (uri (git-reference + (url "https://github.com/mapbox/node-sqlite3") + (commit (string-append "v" version)))) + (file-name (git-file-name name version)) + (sha256 + (base32 "0sbbzzli282nxyfha10zx0k5m8hdp0sf3ipl59khjb7wm449j86h")) + (snippet + (with-imported-modules '((guix build utils)) + #~(begin + (use-modules (guix build utils)) + ;; unbundle sqlite + (for-each delete-file-recursively + (find-files "deps" + (lambda (pth stat) + (gzip-file? pth))))))))) (inputs - (list node-serialport-bindings - node-serialport-parser-delimiter - node-serialport-parser-readline - node-serialport-parser-regex - node-serialport-parser-ready - node-serialport-parser-inter-byte-timeout - node-serialport-parser-cctalk - node-serialport-parser-byte-length - node-serialport-stream - node-debug)) + (list node-addon-api python sqlite)) + (build-system node-build-system) (arguments - `(#:phases + `(#:modules + ((guix build node-build-system) + (srfi srfi-1) + (ice-9 match) + (guix build utils)) + #:tests? #f ; FIXME: tests depend on node-mocha + #:phases (modify-phases %standard-phases (add-after 'patch-dependencies 'delete-dependencies (lambda args - (delete-dependencies `("@serialport/binding-mock")) - )) - (add-after 'unpack 'chdir + (delete-dependencies + `(;; Normally, this is "built" using @mapbox/node-pre-gyp, + ;; which publishes or downloads pre-built binaries or + ;; falls back to building from source. Here, we patch out + ;; all of that and just build directly. It might be + ;; better to patch a version of @mapbox/node-pre-gyp that + ;; always builds from source, as Debian does, but there + ;; are a number of dependencies that need to be packaged + ;; or removed. + "@mapbox/node-pre-gyp" + "node-pre-gyp" ;; deprecated name still used in some places + "aws-sdk" + "@mapbox/cloudfriend" + ;; Confusingly, this is only a dependency because of + ;; @mapbox/node-pre-gyp: with that removed, + ;; npm will use its own copy: + "node-gyp" + ;; These we'd like, we just don't have them yet: + "eslint" + "mocha")))) + (add-before 'configure 'npm-config-sqlite + ;; We need this step even if we do replace @mapbox/node-pre-gyp + ;; because the package expects to build its bundled sqlite + (lambda* (#:key inputs #:allow-other-keys) + (setenv "npm_config_sqlite" (assoc-ref inputs "sqlite")))) + (add-after 'install 'patch-binding-path + ;; We replace a file that dynamic searches for the addon using + ;; node-pre-gyp (which we don't have) with a version that + ;; simply uses the path to the addon we built directly. + ;; The exact path is supposed to depend on things like the + ;; architecture and napi_build_version, so, to avoid having + ;; hard-code the details accurately, we do this after the addon + ;; has been built so we can just find where it ended up. + (lambda* (#:key outputs #:allow-other-keys) + (with-directory-excursion + (search-input-directory outputs + "lib/node_modules/sqlite3/lib") + (match (find-files "binding" "\\.node$") + ((rel-path) + (with-atomic-file-replacement "sqlite3-binding.js" + (lambda (in out) + (format out "var binding = require('./~a');\n" rel-path) + (display "module.exports = exports = binding;\n" + out)))))))) + (add-after 'patch-dependencies 'avoid-node-pre-gyp (lambda args - (chdir "packages/serialport")))) + ;; We need to patch .npmignore before the 'repack phase + ;; so that the built addon is installed with in the package. + ;; (Upstream assumes node-pre-gyp will download a pre-built + ;; version when this package is installed.) + (substitute* ".npmignore" + (("lib/binding") + "#lib/binding # <- patched for Guix")) + (with-atomic-json-file-replacement "package.json" + (match-lambda + (('@ . pkg-meta-alist) + (match (assoc-ref pkg-meta-alist "binary") + (('@ . binary-alist) + ;; When it builds from source, node-pre-gyp supplies + ;; module_name and module_path based on the entries under + ;; "binary" from "package.json", so this package's + ;; "binding.gyp" doesn't define them. Thus, we also need + ;; to supply them. The GYP_DEFINES environment variable + ;; turns out to be the easiest way to make sure they are + ;; propagated from npm to node-gyp to gyp. + (setenv "GYP_DEFINES" + (string-append + "module_name=" + (assoc-ref binary-alist "module_name") + " " + "module_path=" + (assoc-ref binary-alist "module_path"))))) + ;; We need to remove the install script from "package.json", + ;; as it would try to use node-pre-gyp and would block the + ;; automatic building performed by `npm install`. + (cons '@ (map (match-lambda + (("scripts" @ . scripts-alist) + `("scripts" @ ,@(filter (match-lambda + (("install" . _) + #f) + (_ + #t)) + scripts-alist))) + (other + other)) + pkg-meta-alist)))))))))) + (home-page "https://github.com/mapbox/node-sqlite3") + (synopsis "Node.js bindings for SQLite3") + (description + "@code{node-sqlite3} provides a set of a Node.js bindings for interacting +with SQLite3 databases.") + (license license:bsd-3))) + +(define-public node-stack-trace + ;; There have been improvements since the last release. + (let ((commit "4fd379ee78965ce7ce8820b436f1b1b590d5dbcf") + (revision "1")) + (package + (name "node-stack-trace") + (version (git-version "0.0.10" revision commit)) + (source + (origin + (method git-fetch) + (uri (git-reference + (url "https://github.com/felixge/node-stack-trace") + (commit commit))) + (file-name (git-file-name name version)) + (sha256 + (base32 + "1pk19wcpy8i95z5jr77fybd57qj7xmzmniap4dy47vjlmpkqia4i")))) + (build-system node-build-system) + (arguments + '(#:phases + (modify-phases %standard-phases + (add-before 'check 'skip-intentionally-failing-test + (lambda _ + (substitute* "test/run.js" + (("far.include") "far.exclude(/test-parse.js/)\nfar.include")) + #t))))) + (native-inputs + (list node-far node-long-stack-traces)) + (home-page "https://github.com/felixge/node-stack-trace") + (synopsis "Get v8 stack traces as an array of CallSite objects") + (description "Get v8 stack traces as an array of CallSite objects.") + (license license:expat)))) + +(define-public node-statsd-parser + (package + (name "node-statsd-parser") + (version "0.0.4") + (source + (origin + (method git-fetch) + (uri (git-reference + (url "https://github.com/dscape/statsd-parser") + (commit version))) + (file-name (git-file-name name version)) + (sha256 + (base32 + "049rnczsd6pv6bk282q4w72bhqc5cs562djgr7yncy7lk0wzq5j3")))) + (build-system node-build-system) + (arguments '(#:tests? #f)) ; No tests. + (home-page "https://github.com/dscape/statsd-parser") + (synopsis "Streaming parser for the statsd protocol") + (description "This package provides a streaming parser for the statsd +protocol used in @code{node-lynx}.") + (license license:asl2.0))) + +(define-public node-string-decoder + (package + (name "node-string-decoder") + (version "1.3.0") + (source + (origin + (method git-fetch) + (uri (git-reference + (url "https://github.com/nodejs/string_decoder") + (commit (string-append "v" version)))) + (file-name (git-file-name name version)) + (sha256 + (base32 + "0xxvyya9fl9rlkqwmxzqzbz4rdr3jgw4vf37hff7cgscxkhg266k")))) + (build-system node-build-system) + (arguments + '(#:phases + (modify-phases %standard-phases + (add-after 'patch-dependencies 'delete-dependencies + (lambda args + (delete-dependencies + '("tap" "core-util-is" "babel-polyfill"))))) + ;; FIXME: Tests depend on node-tap #:tests? #f)) - (synopsis "Node.js package to access serial ports") - (description "Node SerialPort is a modular suite of Node.js packages for -accessing serial ports. This package is the recommended entry point for most -projects. It combines a high-level Node.js stream interface with a useful -default set of parsers and bindings."))) + (inputs (list node-safe-buffer node-inherits)) + (home-page "https://github.com/nodejs/string_decoder") + (synopsis "Decode buffers while preserving multi-byte sequences") + (description "This package provides a user-land implementation of +Node-core's @code{string_decoder}, which serves to decode buffers to +strings so that the decoded string does not contain incomplete multibyte +sequences.") + (license license:expat))) + +(define-public node-util-deprecate + (package + (name "node-util-deprecate") + (version "1.0.2") + (source + (origin + (method git-fetch) + (uri (git-reference + (url "https://github.com/TooTallNate/util-deprecate") + (commit version))) + (file-name (git-file-name name version)) + (sha256 + (base32 + "1rk94nl3qc7znsk8400bnga30v0m7j2mmvz9ldwjinxv1d3n11xc")))) + (build-system node-build-system) + (arguments '(#:tests? #f)) ; No test suite. + (home-page "https://github.com/TooTallNate/util-deprecate") + (synopsis "Node.js `util.deprecate()` function with browser support") + (description "This package provides the Node.js @code{util.deprecate()} +function with browser support.") + (license license:expat))) + +(define-public node-wrappy + (package + (name "node-wrappy") + (version "1.0.2") + (source (origin + (method git-fetch) + (uri (git-reference + (url "https://github.com/npm/wrappy") + (commit (string-append "v" version)))) + (file-name (git-file-name name version)) + (sha256 + (base32 + "1ymlc61cja6v5438vwb04gq8wg2b784lj39zf0g4i36fvgcw9783")))) + (build-system node-build-system) + (arguments + '(#:tests? #f ; FIXME: Tests depend on node-tap + #:phases + (modify-phases %standard-phases + (add-after 'patch-dependencies 'delete-dependencies + (lambda args + (delete-dependencies '("tap"))))))) + (home-page "https://github.com/npm/wrappy") + (synopsis "Callback wrapping utility") + (description "@code{wrappy} is a utility for Node.js to wrap callbacks.") + (license license:isc))) (define-public node-yazl (package @@ -1702,3 +1730,8 @@ files in RAM at once. @item Prefer to open input files one at a time than all at once. @end enumerate") (license license:expat))) + +;;; +;;; Avoid adding new packages to the end of this file. To reduce the chances +;;; of a merge conflict, place them above in alphabetic order. +;;; |