diff mbox series

[bug#68941,v2,02/44] guix: build-system: node: Add node-is-type-object helper.

Message ID 20240208002527.27165-2-ngraves@ngraves.fr
State New
Headers show
Series [bug#68941,v2,01/44] guix: build-system: node: Add trivial-node-package helper. | expand

Commit Message

Nicolas Graves Feb. 8, 2024, 12:24 a.m. UTC
* guix/build-system/node.scm (node-is-type-object): Add function.

Change-Id: I7027aff3b314cd999798afd8c11dc90ef7c6e43c
---
 guix/build-system/node.scm | 14 ++++++++++++++
 1 file changed, 14 insertions(+)
diff mbox series

Patch

diff --git a/guix/build-system/node.scm b/guix/build-system/node.scm
index a16627e68c..3f68cd3f21 100644
--- a/guix/build-system/node.scm
+++ b/guix/build-system/node.scm
@@ -35,8 +35,22 @@  (define-module (guix build-system node)
             node-build
             node-build-system
 
+            node-is-type-object
             trivial-node-package))
 
+(define* (node-is-type-object type #:optional (type-exists? #t))
+  "Helper for node packages replacement.  This is actual code factorized from
+the packages it replaces, use with caution.  It doesn't apply to all
+javascript types."
+  (string-append
+   "function(value) {"
+   (if type-exists?
+       (string-append
+        "if (typeof value === '" (string-downcase type) "') {return true;} ")
+       "")
+   "if (value === null || typeof value !== 'object') {return false;}
+  return Object.prototype.toString.call(value) === '[object " type "]';}"))
+
 (define* (trivial-node-package node-name version replacement description
                                #:key (propagated-inputs '())
                                (mozilla-doclink #f)  ;maybe-string