Hello,

I want to write a simple proof-of-concept (which may eventually evolve into 
something more serious) GUI wallet for a cryptocurrency that I’ve been writing. 
As desktop libraries/languages are either not very functional or not very 
portable, ClojureScript plus local storage in browser as a database looks like 
a good choice. To make it work, I need support for Ed25519 (a public-key 
signature system).

Fortunately, there are implementations of Ed25519 compiled to JavaScript. 
js-nacl is a “pure-Javascript High-level API to Emscripten-compiled libsodium 
routines”, available also as a NPM package, and post at 
https://clojurescript.org/news/2017-07-12-clojurescript-is-not-an-island-integrating-node-modules
 advertises “Seamless interaction with NPM dependencies”. I tried to use it, 
roughly in the following way:

⒈ lein new reagent-frontend ercoin-wallet
⒉ Added :npm-deps {:js-nacl "1.2.2"} to :cljsbuild ⇨ :builds ⇨ app ⇨ :compiler 
in project.clj.
⒊ Added [js-nacl :as nacl] to :require in core.cljs

However :npm-deps seemed to be ignored. Fixed this by downgrading ClojureScript 
from 1.9.908 to 1.9.671 (BTW, these versions are not tagged in the Git 
repository), but then there are warnings:

WARNING: JSC_JS_MODULE_LOAD_WARNING. Failed to load module […] at […]

, where modules are “fs”, “path” and “crypto”.

spinningtopsofdo on IRC said that “From a quick skim for js-nacl it looks like 
it's using emscripten and doing some unique module loading that Google Closure 
isn't aware of 
(https://github.com/tonyg/js-nacl/blob/master/lib/nacl_factory.js#L30-L39).” 
and “I think it's more the way js-nacl is using ASM / Emscripten and creating 
JavaScript Modules. :npm-deps covers the common JavaScript module patterns 
(e.g. CommonJs, Node, UMD) but there is still many edge cases out there”.

I’ve tried also tweetnacl-js, but similarly there is a warning:

“WARNING: JSC_JS_MODULE_LOAD_WARNING. Failed to load module "crypto" at […]”.

What is the status of NPM interoperability then? Is it supposed to work as plug 
& play or does it require hacky knowledge in some cases?

-- 
Note that posts from new members are moderated - please be patient with your 
first post.
--- 
You received this message because you are subscribed to the Google Groups 
"ClojureScript" group.
To unsubscribe from this group and stop receiving emails from it, send an email 
to clojurescript+unsubscr...@googlegroups.com.
To post to this group, send email to clojurescript@googlegroups.com.
Visit this group at https://groups.google.com/group/clojurescript.

Reply via email to