;;; GNU Guix --- Functional package management for GNU
;;; Copyright © 2017 Arun Isaac <arunisaac@systemreboot.net>
-;;; Copyright © 2017 Ricardo Wurmus <rekado@elephly.net>
-;;; Copyright © 2017, 2018 Tobias Geerinckx-Rice <me@tobias.gr>
-;;; Copyright © 2017, 2018, 2019 Efraim Flashner <efraim@flashner.co.il>
+;;; Copyright © 2017, 2019, 2020 Ricardo Wurmus <rekado@elephly.net>
+;;; Copyright © 2017, 2018, 2020, 2021 Tobias Geerinckx-Rice <me@tobias.gr>
+;;; Copyright © 2017, 2018, 2019, 2020 Efraim Flashner <efraim@flashner.co.il>
;;; Copyright © 2018 Nicolas Goaziou <mail@nicolasgoaziou.fr>
+;;; Copyright © 2021 Pierre Neidhardt <mail@ambrevar.xyz>
;;;
;;; This file is part of GNU Guix.
;;;
#:use-module (gnu packages)
#:use-module (gnu packages base)
#:use-module (gnu packages compression)
- #:use-module (gnu packages lisp)
+ #:use-module (gnu packages lisp-xyz)
#:use-module (gnu packages readline)
+ #:use-module (gnu packages web)
#:use-module (guix packages)
#:use-module (guix download)
#:use-module (guix git-download)
#:use-module (guix build-system gnu)
+ #:use-module (guix build-system cmake)
#:use-module (guix build-system trivial)
- #:use-module (guix build-system minify))
+ #:use-module (guix build-system minify)
+ #:use-module (guix utils))
+
+(define-public cjson
+ (package
+ (name "cjson")
+ (version "1.7.14")
+ (source (origin
+ (method git-fetch)
+ (uri (git-reference
+ (url "https://github.com/DaveGamble/cJSON")
+ (commit (string-append "v" version))))
+ (file-name (git-file-name name version))
+ (sha256
+ (base32 "1rlnailhjm180zb6pc17jwphjwivw8kfpqgixjfgq4iyryq46sah"))))
+ (build-system cmake-build-system)
+ (arguments
+ `(#:configure-flags '("-DENABLE_CJSON_UTILS=On")))
+ (home-page "https://github.com/DaveGamble/cJSON")
+ (synopsis "JSON parser written in ANSI C")
+ (description "This library provides a portable embeddable JSON parser.")
+ (license license:expat)))
+
+(define-public js-context-menu
+ (package
+ (name "js-context-menu")
+ (version "0.6.1")
+ (source
+ (origin
+ (method git-fetch)
+ (uri (git-reference
+ (url "https://github.com/zorkow/context-menu")
+ (commit (string-append "v" version))))
+ (file-name (git-file-name name version))
+ (sha256
+ (base32
+ "1q063l6477z285j6h5wvccp6iswvlp0jmb96sgk32sh0lf7nhknh"))))
+ (build-system trivial-build-system)
+ (arguments
+ `(#:modules ((guix build utils))
+ #:builder
+ (begin
+ (use-modules (guix build utils))
+ (chdir (assoc-ref %build-inputs "source"))
+ (let ((target (string-append %output "/share/javascript/context-menu")))
+ (apply invoke (string-append (assoc-ref %build-inputs "esbuild")
+ "/bin/esbuild")
+ "--bundle"
+ "--tsconfig=tsconfig.json"
+ (string-append "--outdir=" target)
+ (find-files "ts" "\\.ts$"))))))
+ (native-inputs
+ `(("esbuild" ,esbuild)))
+ (home-page "https://github.com/zorkow/context-menu")
+ (synopsis "Generic context menu")
+ (description "This package provides a reimplementation of the MathJax
+context menu in TypeScript.")
+ (license license:asl2.0)))
(define-public font-mathjax
(package
(version "2.7.2")
(source
(origin
- (method url-fetch)
- (uri (string-append
- "https://github.com/mathjax/MathJax/archive/"
- version ".tar.gz"))
- (file-name (string-append name "-" version ".tar.gz"))
+ (method git-fetch)
+ (uri (git-reference
+ (url "https://github.com/mathjax/MathJax")
+ (commit version)))
+ (file-name (git-file-name name version))
(sha256
(base32
- "1r72di4pg4i6pfhcskkxqmf1158m81ki6a7lbw6nz4zh7xw23hy4"))))
+ "127j12g7v2hx6k7r00b8cp49s7nkrwhxy6l8p03pw34xpxbgbimm"))))
(build-system trivial-build-system)
(arguments
`(#:modules ((guix build utils))
(begin
(use-modules (guix build utils)
(ice-9 match))
- (set-path-environment-variable
- "PATH" '("bin") (map (match-lambda
- ((_ . input)
- input))
- %build-inputs))
(let ((install-directory (string-append %output "/share/fonts/mathjax")))
(mkdir-p install-directory)
- (invoke "tar" "-C" install-directory "-xvf"
- (assoc-ref %build-inputs "source")
- ,(string-append "MathJax-" version "/fonts")
- "--strip" "2")))))
- (native-inputs
- `(("gzip" ,gzip)
- ("tar" ,tar)))
+ (copy-recursively (string-append (assoc-ref %build-inputs "source")
+ "/fonts")
+ install-directory)))))
(home-page "https://www.mathjax.org/")
(synopsis "Fonts for MathJax")
(description "This package contains the fonts required for MathJax.")
(list (assoc-ref %build-inputs "glibc-utf8-locales")))
(setenv "LANG" "en_US.UTF-8")
(let ((install-directory (string-append %output "/share/javascript/mathjax")))
- (invoke "tar" "xvf" (assoc-ref %build-inputs "source")
- ,(string-append "MathJax-" (package-version font-mathjax)
- "/unpacked")
- "--strip" "2")
+ (copy-recursively (string-append (assoc-ref %build-inputs "source") "/unpacked")
+ "MathJax-unpacked")
(mkdir-p install-directory)
(symlink (string-append (assoc-ref %build-inputs "font-mathjax")
"/share/fonts/mathjax")
(for-each
(lambda (file)
(let ((installed (string-append install-directory
- ;; remove prefix "."
- (string-drop file 1))))
+ ;; remove prefix "./MathJax-unpacked"
+ (string-drop file 18))))
(format #t "~a -> ~a~%" file installed)
(cond
((string-match "\\.js$" file)
write web documents that include mathematics and be confident that readers will
be able to view it naturally and easily.")))
+(define-public js-commander
+ (package
+ (name "js-commander")
+ (version "6.2.1")
+ (source
+ (origin
+ (method git-fetch)
+ (uri (git-reference
+ (url "https://github.com/tj/commander.js")
+ (commit (string-append "v" version))))
+ (file-name (git-file-name name version))
+ (sha256
+ (base32
+ "126m25s6mxpxmdj4aw5awz06b47r8r798lcf1c5bnmmh39cik5i1"))))
+ (build-system trivial-build-system)
+ (arguments
+ `(#:modules ((guix build utils))
+ #:builder
+ (begin
+ (use-modules (guix build utils))
+ (chdir (assoc-ref %build-inputs "source"))
+ (let ((esbuild (string-append (assoc-ref %build-inputs "esbuild")
+ "/bin/esbuild"))
+ (target (string-append %output "/share/javascript/commander")))
+ (invoke esbuild
+ "--bundle"
+ "--minify"
+ "--tsconfig=tsconfig.json"
+ "--platform=node"
+ (string-append "--outfile=" target "/index.min.js")
+ "index.js")))))
+ (native-inputs
+ `(("esbuild" ,esbuild)))
+ (home-page "https://github.com/tj/commander.js")
+ (synopsis "Library for node.js command-line interfaces")
+ (description "Commander.js aims to be the complete solution for node.js
+command-line interfaces. ")
+ (license license:expat)))
+
+(define-public js-xmldom-sre
+ ;; This commit corresponds to the untagged release 0.1.32
+ (let ((commit "3c79325bc2c9e5d27e3ba44b680fa8c5dd6a381d")
+ (revision "1"))
+ (package
+ (name "js-xmldom-sre")
+ (version "0.1.32")
+ (source
+ (origin
+ (method git-fetch)
+ (uri (git-reference
+ (url "https://github.com/zorkow/xmldom/")
+ (commit commit)))
+ (file-name (git-file-name name version))
+ (sha256
+ (base32
+ "0a88v0id3mjflpvjqhv8a28br0xvaaszxbf7alg6pxfbnkb69yyq"))))
+ (build-system trivial-build-system)
+ (arguments
+ `(#:modules ((guix build utils))
+ #:builder
+ (begin
+ (use-modules (guix build utils))
+ (chdir (assoc-ref %build-inputs "source"))
+ (let ((esbuild (string-append (assoc-ref %build-inputs "esbuild")
+ "/bin/esbuild"))
+ (target (string-append %output "/share/javascript/xmldom-sre")))
+ (invoke esbuild
+ "--bundle"
+ "--minify"
+ "--platform=node"
+ (string-append "--outfile=" target "/dom-parser.min.js")
+ "dom-parser.js")))))
+ (native-inputs
+ `(("esbuild" ,esbuild)))
+ (home-page "https://github.com/zorkow/xmldom/")
+ (synopsis "DOM parser and XML serializer")
+ (description "This is a fork of the xmldom library. It allows the use
+of wicked-good-xpath together with xmldom.")
+ ;; One of these licenses may be selected.
+ (license (list license:expat
+ license:lgpl2.0)))))
+
(define-public js-respond
(package
(name "js-respond")
(version "1.4.2")
(source (origin
- (method url-fetch)
- (uri (string-append "https://github.com/scottjehl/Respond/"
- "archive/" version ".tar.gz"))
- (file-name (string-append name "-" version ".tar.gz"))
+ (method git-fetch)
+ (uri (git-reference
+ (url "https://github.com/scottjehl/Respond")
+ (commit version)))
+ (file-name (git-file-name name version))
(sha256
(base32
- "0ds1ya2a185jp93mdn07159c2x8zczwi960ykrawpp62bwk2n93d"))))
+ "00xid731rirc7sdy1gc8qal3v9g0agr2qx15hm4x97l1lcbylyn2"))))
(build-system minify-build-system)
(arguments
`(#:javascript-files '("src/matchmedia.addListener.js"
(source (origin
(method git-fetch)
(uri (git-reference
- (url "https://github.com/douglascrockford/JSON-js.git")
+ (url "https://github.com/douglascrockford/JSON-js")
(commit commit)))
(file-name (string-append name "-" version "-checkout"))
(sha256
(define-public js-datatables
(package
(name "js-datatables")
- (version "1.10.15")
+ (version "1.10.19")
(source (origin
(method url-fetch)
(uri (string-append "https://datatables.net/releases/DataTables-"
version ".zip"))
(sha256
(base32
- "1y9xqyqyz7x1ls3ska71pshl2hpiy3qnw1f7wygyslbhy4ssgf57"))))
+ "0cff8a1g7pjwbjdqq0yzqd963ar7pfi4splmm6rwdzganr77rkhb"))))
(build-system minify-build-system)
(arguments
`(#:javascript-files '("media/js/dataTables.bootstrap.js"
HTML tables with minimal effort.")
(license license:expat)))
+(define-public js-requirejs
+ (package
+ (name "js-requirejs")
+ (version "2.3.6")
+ (source (origin
+ (method git-fetch)
+ (uri (git-reference
+ (url "https://github.com/requirejs/requirejs")
+ (commit version)))
+ (file-name (git-file-name name version))
+ (sha256
+ (base32
+ "0cvd5y2mb3h6yil3niqn3gjqrzixdsxcz4rvc2f0hg4kzp5y0w86"))))
+ (build-system minify-build-system)
+ (arguments `(#:javascript-files '("require.js")))
+ (home-page "https://github.com/requirejs/requirejs/")
+ (synopsis "File and module loader for JavaScript")
+ (description "RequireJS loads plain JavaScript files as well as more
+defined modules. It is optimized for in-browser use, including in a Web
+Worker, but it can be used in other JavaScript environments.")
+ (license license:expat)))
+
(define-public js-selectize
(package
(name "js-selectize")
"15gichl8wi6yxag2ps723nxrgyan15976dzsnvw9h9py8sbyyzjn"))))
(build-system minify-build-system)
(arguments `(#:javascript-files '("src/selectize.js")))
- (home-page "http://selectize.github.io/selectize.js/")
+ (home-page "https://selectize.github.io/selectize.js/")
(synopsis "Hybrid widget between a textbox and <select> box")
(description "Selectize is the hybrid of a textbox and @code{<select>}
box. It's jQuery based and it has autocomplete and native-feeling keyboard
(lambda _
(substitute* "src/FileSaver.js"
(("export ") ""))
+ #t))
+ (add-after 'install 'install-unminified-version
+ (lambda* (#:key outputs #:allow-other-keys)
+ (install-file "src/FileSaver.js"
+ (string-append (assoc-ref outputs "out")
+ "/share/javascript"))
#t)))))
(home-page
"https://eligrey.com/blog/saving-generated-files-on-the-client-side/")
(define-public mujs
(package
(name "mujs")
- (version "1.0.6")
- (source (origin
- (method url-fetch)
- (uri (string-append "https://mujs.com/downloads/mujs-"
- version ".tar.xz"))
- (sha256
- (base32
- "1q9w2dcspfp580pzx7sw7x9gbn8j0ak6dvj75wd1ml3f3q3i43df"))))
+ (version "1.1.1")
+ (source
+ (origin
+ (method git-fetch)
+ (uri (git-reference
+ (url "https://github.com/ccxvii/mujs")
+ (commit version)))
+ (file-name (git-file-name name version))
+ (sha256
+ (base32 "0ivqz06fq8v36p2gkjh64vgv0gm7nghds0n42vrv7vm46phdffvb"))))
(build-system gnu-build-system)
(arguments
- '(#:phases
+ `(#:phases
(modify-phases %standard-phases
- (delete 'configure) ; no configure
- (add-after 'install 'install-shared-library
+ (delete 'configure) ; no configure script
+ (replace 'install
(lambda* (#:key (make-flags '()) #:allow-other-keys)
(apply invoke "make" "install-shared" make-flags))))
- #:make-flags (list (string-append "prefix=" (assoc-ref %outputs "out"))
- (string-append "CC=gcc"))
+ #:make-flags
+ (list ,(string-append "VERSION=" version)
+ ,(string-append "CC=" (cc-for-target))
+ (string-append "prefix=" (assoc-ref %outputs "out")))
#:tests? #f)) ; no tests
(inputs
`(("readline" ,readline)))
C++ template mechanisms, or worry about marking and unmarking garbage collection
roots, or wrestle with obscure build systems.")
(license license:isc)))
+
+(define-public quickjs
+ (package
+ (name "quickjs")
+ (version "2021-03-27")
+ (source (origin
+ (method url-fetch)
+ (uri (string-append "https://bellard.org/quickjs/quickjs-"
+ version ".tar.xz"))
+ (sha256
+ (base32
+ "06pywwpmfwjz225h59wf90q96a2fd66qfcw5xa6m6y9k9k7glnx4"))))
+ (build-system gnu-build-system)
+ (arguments
+ `(#:make-flags
+ (list "prefix="
+ (string-append "DESTDIR=" %output))
+ #:phases
+ (modify-phases %standard-phases
+ (delete 'configure)
+ (replace 'check
+ (lambda _
+ (invoke "make" "microbench"))))))
+ (home-page "https://bellard.org/quickjs/")
+ (synopsis "Small embeddable Javascript engine")
+ (description "QuickJS supports the ES2020 specification including modules,
+asynchronous generators, proxies, BigInt and BigDecimal. It can compile
+Javascript sources to executables with no external dependency. It includes a
+command line interpreter with contextual colorization implemented in
+Javascript and a small built-in standard library with C library wrappers.")
+ (license license:expat)))
+
+(define-public duktape
+ (package
+ (name "duktape")
+ (version "2.6.0")
+ (source (origin
+ (method url-fetch)
+ (uri (string-append "https://duktape.org/duktape-"
+ version ".tar.xz"))
+ (sha256
+ (base32
+ "19szwxzvl2g65fw95ggvb8h0ma5bd9vvnnccn59hwnc4dida1x4n"))))
+ (build-system gnu-build-system)
+ (arguments
+ '(#:tests? #f ; No tests.
+ #:make-flags (list "-f" "Makefile.sharedlibrary"
+ (string-append "INSTALL_PREFIX=" %output))
+ #:phases
+ (modify-phases %standard-phases
+ (delete 'configure))))
+ (home-page "https://duktape.org/")
+ (synopsis "Small embeddable Javascript engine")
+ (description "Duktape is an embeddable Javascript engine, with a focus on
+portability and compact footprint. Duktape is easy to integrate into a C/C++
+project: add @file{duktape.c}, @file{duktape.h}, and @file{duk_config.h} to
+your build, and use the Duktape API to call ECMAScript functions from C code
+and vice versa.")
+ (license license:expat)))