Skip to content

Efficient JavaScript object interop via idiomatic ClojureScript

License

Notifications You must be signed in to change notification settings

mfikes/cljs-bean

Repository files navigation

CLJS Bean

Like clojure.core/bean, but for ClojureScript.

Clojars Project cljdoc badge Build Status

A bean function and ->clj and ->js converters enable working with JavaScript objects via thin wrappers implementing ClojureScript collection abstractions:

(require '[cljs-bean.core :refer [bean ->clj ->js]])

(bean #js {:a 1, :b 2})
;; {:a 1, :b 2}

The converters enable idiomatic interop while being much faster than equivalent constructs using js->clj and clj->js:

(let [{:keys [a b]} (->clj #js {:a 1, :b 2})]
  (+ a b))
;; => 3
  
(into (->clj #js [1 2]) [3 4 5])
;; [1 2 3 4 5]

(->js *1)
;; #js [1 2 3 4 5]

Read more:

Overview

Object Extraction

Recursive Beans

Key Mapping

Transit

License

Copyright © 2019–2022 Mike Fikes

Distributed under the EPL License, same as Clojure. See LICENSE.

The namespace cljs-bean.from.cljs.core contains source from ClojureScript which is licensed under the EPL license.

About

Efficient JavaScript object interop via idiomatic ClojureScript

Resources

License

Stars

Watchers

Forks

Packages

No packages published