M package.json => package.json +2 -2
@@ 10,10 10,10 @@
"react": "^16.12.0",
"react-dom": "^16.12.0",
"react-flip-move": "^3.0.1",
- "react-highlight.js": "1.0.7",
- "shadow-cljs": "^2.8.76"
+ "react-highlight.js": "1.0.7"
},
"devDependencies": {
+ "shadow-cljs": "2.10.5",
"vercel": "^19.0.1"
}
}
M src/nesktop/components/note.cljs => src/nesktop/components/note.cljs +9 -5
@@ 1,8 1,11 @@
(ns nesktop.components.note
(:require [re-frame.core :as rf]
[nesktop.queries :as q]
+ [nesktop.data.note :as n]
+ [nesktop.data.pos :as pos]
[nesktop.events :as e]))
+
(defn note-style
[w h x y]
{:background "#FFFFFF"
@@ 22,14 25,16 @@
{:padding 0
:margin 0})
-(defn note [{:keys [id content]}]
- (let [on-mouse-down #(rf/dispatch [::e/drag-note id true])]
+(defn note [nt]
+ (let [id (n/id nt)
+ content (n/content nt)
+ on-mouse-down #(rf/dispatch [::e/drag-note id true])]
(fn []
(let [position @(rf/subscribe [::q/note id])
mouse-position @(rf/subscribe [::q/mouse-position])
dragging? @(rf/subscribe [::q/note-ui-dragging? id])
- x (if dragging? (first mouse-position) (:x position))
- y (if dragging? (second mouse-position) (:y position))
+ x (if dragging? (first mouse-position) (::pos/x position))
+ y (if dragging? (second mouse-position) (::pos/y position))
w 200
h 80]
[:div
@@ 38,4 43,3 @@
[:p
{:style (note-p-style)}
(str content)]]))))
-
M src/nesktop/components/root_view.cljs => src/nesktop/components/root_view.cljs +2 -1
@@ 4,6 4,7 @@
[reagent.core :as reagent]
[nesktop.events :as e]
[nesktop.queries :as q]
+ [nesktop.data.note :as n]
[nesktop.components.note :refer [note]]))
(defn root-view
@@ 18,5 19,5 @@
:height "100%"}}
(let [notes (rf/subscribe [::q/notes])]
(map (fn [n]
- [note (into n {:key (:id n)})])
+ [note (into n {:key (::n/id n)})])
(vals @notes)))]))
M src/nesktop/core.cljs => src/nesktop/core.cljs +1 -1
@@ 4,8 4,8 @@
[reagent.core :as reagent]
[nesktop.events :as e]
[nesktop.queries :as q]
+ [nesktop.data.note :as note]
[nesktop.components.root-view :refer [root-view]]))
-
(defn ^:export render []
(reagent/render [root-view]
A src/nesktop/data/app.cljs => src/nesktop/data/app.cljs +40 -0
@@ 0,0 1,40 @@
+(ns nesktop.data.app
+ (:require [clojure.spec.alpha :as s]
+ [nesktop.data.pos :as p]
+ [nesktop.data.note :as n]
+ [nesktop.data.ui :as ui]
+ [nesktop.data.note-ui :as nui]
+ [nesktop.data.notes :as nts]))
+
+
+(s/def ::notes ::nts/notes)
+(s/def ::note-positions (s/map-of ::n/id ::p/pos))
+(s/def ::note-ui (s/map-of ::n/id ::nui/ui))
+(s/def ::ui ::ui/ui)
+
+(s/def ::app-db
+ (s/keys :req [::notes ::note-positions ::note-ui ::ui]))
+
+(defn create
+ []
+ {::notes {}
+ ::note-positions {}
+ ::note-ui {}
+ ::ui { ::ui/mouse-position [0, 0]}})
+
+(defn add-note
+ [db content]
+ (let [note (n/from-content content)]
+ (->
+ db
+ (assoc-in [::notes (n/id note)] note)
+ (assoc-in [::note-positions (n/id note)] (p/create 100 100))
+ (assoc-in [::note-ui (n/id note)] {:dragging false}))))
+
+(s/fdef add-note
+ :args (s/cat :db ::app-db :content ::n/content)
+ :ret ::app-db)
+
+(s/fdef create
+ :args (s/cat)
+ :ret ::app-db)
A src/nesktop/data/note.cljs => src/nesktop/data/note.cljs +37 -0
@@ 0,0 1,37 @@
+(ns nesktop.data.note
+ (:require [clojure.spec.alpha :as s]))
+
+(s/def ::id keyword?)
+(s/def ::content string?)
+(s/def ::note
+ (s/keys :req [::id ::content]))
+
+(defn create
+ [id content]
+ {::id id
+ ::content content})
+
+(defn from-content [content]
+ (create (keyword (str (random-uuid))) content))
+
+(defn id [note]
+ (::id note))
+
+(defn content [note]
+ (::content note))
+
+(s/fdef create
+ :args (s/cat ::id ::content)
+ :ret ::note)
+
+(s/fdef from-content
+ :args ::content
+ :ret ::note)
+
+(s/fdef id
+ :args ::note
+ :ret ::id)
+
+(s/fdef content
+ :args ::note
+ :ret ::content)
A src/nesktop/data/note_ui.cljs => src/nesktop/data/note_ui.cljs +6 -0
@@ 0,0 1,6 @@
+(ns nesktop.data.note-ui
+ (:require [clojure.spec.alpha :as s]))
+
+(s/def ::dragging boolean?)
+(s/def ::ui
+ (s/keys :req [::dragging]))
A src/nesktop/data/notes.cljs => src/nesktop/data/notes.cljs +22 -0
@@ 0,0 1,22 @@
+(ns nesktop.data.notes
+ (:require [clojure.spec.alpha :as s]
+ [nesktop.data.note :as note]))
+
+(s/def ::notes
+ (s/map-of ::note/id ::note/note))
+
+(defn from-notes
+ [ns]
+ (into {} (map (fn [n] [(note/id n) n]) ns)))
+
+(defn from-content
+ [strs]
+ (from-notes (map note/from-content strs)))
+
+(s/fdef from-notes
+ :args (s/coll-of ::note/note)
+ :ret ::notes)
+
+(s/fdef from-content
+ :args (s/coll-of ::note/content)
+ :ret ::notes)
A src/nesktop/data/pos.cljs => src/nesktop/data/pos.cljs +11 -0
@@ 0,0 1,11 @@
+(ns nesktop.data.pos
+ (:require [clojure.spec.alpha :as s]))
+
+(s/def ::x int?)
+(s/def ::y int?)
+(s/def ::pos (s/keys :req [::x ::y]))
+
+(defn create
+ [x y]
+ {::x x
+ ::y y})
A src/nesktop/data/ui.cljs => src/nesktop/data/ui.cljs +5 -0
@@ 0,0 1,5 @@
+(ns nesktop.data.ui
+ (:require [clojure.spec.alpha :as s]))
+
+(s/def ::mouse-position (s/cat :x int? :y int?))
+(s/def ::ui (s/keys :req [::mouse-position]))
M src/nesktop/events.cljs => src/nesktop/events.cljs +18 -23
@@ 1,5 1,8 @@
(ns nesktop.events
- (:require [re-frame.core :as rf]))
+ (:require [re-frame.core :as rf]
+ [nesktop.data.app :as a]
+ [nesktop.data.pos :as pos]
+ [nesktop.data.ui :as ui]))
;; 2. Event Handling
;; register a handler for a given event.
@@ 11,42 14,34 @@
(rf/reg-event-db ::update-note-pos
(fn [db [_ id x y]]
(-> db
- (assoc-in [:note-positions id :x] x)
- (assoc-in [:note-positions id :y] y))))
+ (assoc-in [::a/note-positions id] (pos/create x y)))))
(rf/reg-event-db ::drag-note
(fn [db [_ id dragging]]
- (assoc-in db [:note-ui id :dragging] dragging)))
+ (assoc-in db [::a/note-ui id :dragging] dragging)))
(rf/reg-event-fx ::update-note-position
(fn [cofx [_ id]]
(let [db (:db cofx)
- [x y] (:mouse-position (:ui db))]
- {:db (assoc-in db [:note-positions id] {:x x :y y})
+ [x y] (::ui/mouse-position (::a/ui db))]
+ {:db (assoc-in db [::a/note-positions id] (pos/create x y))
:dispatch [::undrag]})))
(rf/reg-event-db ::undrag
(fn [db _]
(assoc db
- :note-ui
- (into {}
- (map (fn [[key val]]
- [key (assoc val :dragging false)])
- (:note-ui db))))))
+ ::a/note-ui
+ (->>
+ (::a/note-ui db)
+ (map (fn [[key val]] [key (assoc val :dragging false)]))
+ (into {})))))
(rf/reg-event-db ::update-mouse
(fn [db [_ x y]]
- (assoc-in db [:ui :mouse-position] [x y])))
+ (assoc-in db [::a/ui ::ui/mouse-position] [x y])))
(rf/reg-event-db :initialize
- ;; we'll call this once, at the beginning, to set up the db.
- (constantly {:note-positions {:0 {:x 180
- :y 100}}
- :ui {:mouse-position [0, 0]}
- :note-ui {:0 {:dragging false}}
- :notes {:0 {:id :0
- :content "Hello World"}}}))
-
-(into {} (map (fn [[key val]]
- [key (update val :b inc)])
- {:a {:b 0} :c {:b 0}}))
+ #(-> (a/create)
+ (a/add-note "Hello, World!")
+ (a/add-note "Another Note!")))
+
M src/nesktop/queries.cljs => src/nesktop/queries.cljs +8 -6
@@ 1,6 1,8 @@
(ns nesktop.queries
(:require [re-frame.core :as rf]
- [nesktop.events :as e]))
+ [nesktop.events :as e]
+ [nesktop.data.ui :as ui]
+ [nesktop.data.app :as a]))
;; 3. Queries
;; make a query for every kind of 'read' into the db.
@@ 12,19 14,19 @@
(rf/reg-sub ::notes
(fn [db _]
- (:notes db)))
+ (::a/notes db)))
(rf/reg-sub ::note-positions
(fn [db _]
- (:note-positions db)))
+ (::a/note-positions db)))
(rf/reg-sub ::notes-ui
(fn [db _]
- (:note-ui db)))
+ (::a/note-ui db)))
(rf/reg-sub ::ui
(fn [db _]
- (:ui db)))
+ (::a/ui db)))
(rf/reg-sub ::note
@@ 53,4 55,4 @@
(rf/reg-sub ::mouse-position
:<- [::ui]
(fn [ui _]
- (:mouse-position ui)))
+ (::ui/mouse-position ui)))
M yarn.lock => yarn.lock +70 -66
@@ 34,10 34,15 @@ base64-js@^1.0.2:
resolved "https://registry.yarnpkg.com/base64-js/-/base64-js-1.3.1.tgz#58ece8cb75dd07e71ed08c736abc5fac4dbf8df1"
integrity sha512-mLQ4i2QO1ytvGWFWmcngKO//JXAQueZvwEKtjgQFM4jIK0kU+ytMfplL8j+n5mspOfjHwoAg+9yhb7BwAHm36g==
-bn.js@^4.0.0, bn.js@^4.1.0, bn.js@^4.1.1, bn.js@^4.4.0:
- version "4.11.8"
- resolved "https://registry.yarnpkg.com/bn.js/-/bn.js-4.11.8.tgz#2cde09eb5ee341f484746bb0309b3253b1b1442f"
- integrity sha512-ItfYfPLkWHUjckQCk8xC+LwxgK8NYcXywGigJgSwOP8Y2iyWT4f2vsZnoOXTTbo+o5yXmIUJ4gn5538SO5S3gA==
+bn.js@^4.0.0, bn.js@^4.1.0, bn.js@^4.4.0:
+ version "4.11.9"
+ resolved "https://registry.yarnpkg.com/bn.js/-/bn.js-4.11.9.tgz#26d556829458f9d1e81fc48952493d0ba3507828"
+ integrity sha512-E6QoYqCKZfgatHTdHzs1RRKP7ip4vvm+EyRUeE2RF0NblwVvb0p6jSVeNTOFxPn26QXN2o6SMfNxKp6kU8zQaw==
+
+bn.js@^5.1.1:
+ version "5.1.2"
+ resolved "https://registry.yarnpkg.com/bn.js/-/bn.js-5.1.2.tgz#c9686902d3c9a27729f43ab10f9d79c2004da7b0"
+ integrity sha512-40rZaf3bUNKTVYu9sIeeEGOg7g14Yvnj9kH7b50EiwX0Q7A6umbvfI5tvHaOERH0XigqKkfLkFQxzb4e6CIXnA==
brorand@^1.0.1:
version "1.1.0"
@@ 75,7 80,7 @@ browserify-des@^1.0.0:
inherits "^2.0.1"
safe-buffer "^5.1.2"
-browserify-rsa@^4.0.0:
+browserify-rsa@^4.0.0, browserify-rsa@^4.0.1:
version "4.0.1"
resolved "https://registry.yarnpkg.com/browserify-rsa/-/browserify-rsa-4.0.1.tgz#21e0abfaf6f2029cf2fafb133567a701d4135524"
integrity sha1-IeCr+vbyApzy+vsTNWenAdQTVSQ=
@@ 84,17 89,19 @@ browserify-rsa@^4.0.0:
randombytes "^2.0.1"
browserify-sign@^4.0.0:
- version "4.0.4"
- resolved "https://registry.yarnpkg.com/browserify-sign/-/browserify-sign-4.0.4.tgz#aa4eb68e5d7b658baa6bf6a57e630cbd7a93d298"
- integrity sha1-qk62jl17ZYuqa/alfmMMvXqT0pg=
- dependencies:
- bn.js "^4.1.1"
- browserify-rsa "^4.0.0"
- create-hash "^1.1.0"
- create-hmac "^1.1.2"
- elliptic "^6.0.0"
- inherits "^2.0.1"
- parse-asn1 "^5.0.0"
+ version "4.2.0"
+ resolved "https://registry.yarnpkg.com/browserify-sign/-/browserify-sign-4.2.0.tgz#545d0b1b07e6b2c99211082bf1b12cce7a0b0e11"
+ integrity sha512-hEZC1KEeYuoHRqhGhTy6gWrpJA3ZDjFWv0DE61643ZnOXAKJb3u7yWcrU0mMc9SwAqK1n7myPGndkp0dFG7NFA==
+ dependencies:
+ bn.js "^5.1.1"
+ browserify-rsa "^4.0.1"
+ create-hash "^1.2.0"
+ create-hmac "^1.1.7"
+ elliptic "^6.5.2"
+ inherits "^2.0.4"
+ parse-asn1 "^5.1.5"
+ readable-stream "^3.6.0"
+ safe-buffer "^5.2.0"
browserify-zlib@^0.2.0:
version "0.2.0"
@@ 158,7 165,7 @@ create-ecdh@^4.0.0:
bn.js "^4.1.0"
elliptic "^6.0.0"
-create-hash@^1.1.0, create-hash@^1.1.2:
+create-hash@^1.1.0, create-hash@^1.1.2, create-hash@^1.2.0:
version "1.2.0"
resolved "https://registry.yarnpkg.com/create-hash/-/create-hash-1.2.0.tgz#889078af11a63756bcfb59bd221996be3a9ef196"
integrity sha512-z00bCGNHDG8mHAkP7CtT1qVu+bFQUPjYq/4Iv3C3kWjTFV10zIjfSoeqXo9Asws8gwSHDGj/hl2u4OGIjapeCg==
@@ 169,7 176,7 @@ create-hash@^1.1.0, create-hash@^1.1.2:
ripemd160 "^2.0.1"
sha.js "^2.4.0"
-create-hmac@^1.1.0, create-hmac@^1.1.2, create-hmac@^1.1.4:
+create-hmac@^1.1.0, create-hmac@^1.1.4, create-hmac@^1.1.7:
version "1.1.7"
resolved "https://registry.yarnpkg.com/create-hmac/-/create-hmac-1.1.7.tgz#69170c78b3ab957147b2b8b04572e47ead2243ff"
integrity sha512-MJG9liiZ+ogc4TzUwuvbER1JRdgvUFSB5+VR/g5h82fGaIRWMWddtKBHi7/sVhfjQZ6SehlyhvQYrcYkaUIpLg==
@@ 229,7 236,7 @@ domain-browser@^1.1.1:
resolved "https://registry.yarnpkg.com/domain-browser/-/domain-browser-1.2.0.tgz#3d31f50191a6749dd1375a7f522e823d42e54eda"
integrity sha512-jnjyiM6eRyZl2H+W8Q/zLMA481hzi0eszAaBUzIVnmYVDBbnLxVNnfu1HgEBvCbL+71FrxMl3E6lpKH7Ge3OXA==
-elliptic@^6.0.0:
+elliptic@^6.0.0, elliptic@^6.5.2:
version "6.5.2"
resolved "https://registry.yarnpkg.com/elliptic/-/elliptic-6.5.2.tgz#05c5678d7173c049d8ca433552224a495d0e3762"
integrity sha512-f4x70okzZbIQl/NSRLkI/+tteV/9WqL98zx+SQ69KbXxmVrmjwsNUPn/gYJJ0sHvEak24cZgHIPegRePAtA/xw==
@@ 250,9 257,9 @@ encoding@^0.1.11:
iconv-lite "~0.4.13"
events@^3.0.0:
- version "3.0.0"
- resolved "https://registry.yarnpkg.com/events/-/events-3.0.0.tgz#9a0a0dfaf62893d92b875b8f2698ca4114973e88"
- integrity sha512-Dc381HFWJzEOhQ+d8pkNon++bk9h6cdAoAj4iE6Q4y6xgTzySWXlKn05/TVNpjnfRqi/X0EpJEJohPjNI3zpVA==
+ version "3.1.0"
+ resolved "https://registry.yarnpkg.com/events/-/events-3.1.0.tgz#84279af1b34cb75aa88bf5ff291f6d0bd9b31a59"
+ integrity sha512-Rv+u8MLHNOdMjTAFeT3nCjHn2aGlx435FP/sDHNaRhDEMwyI/aB22Kj2qIN8R0cw3z28psEQLYwxVKLsKrMgWg==
evp_bytestokey@^1.0.0, evp_bytestokey@^1.0.3:
version "1.0.3"
@@ 276,12 283,13 @@ fbjs@^0.8.9:
ua-parser-js "^0.7.18"
hash-base@^3.0.0:
- version "3.0.4"
- resolved "https://registry.yarnpkg.com/hash-base/-/hash-base-3.0.4.tgz#5fc8686847ecd73499403319a6b0a3f3f6ae4918"
- integrity sha1-X8hoaEfs1zSZQDMZprCj8/auSRg=
+ version "3.1.0"
+ resolved "https://registry.yarnpkg.com/hash-base/-/hash-base-3.1.0.tgz#55c381d9e06e1d2997a883b4a3fddfe7f0d3af33"
+ integrity sha512-1nmYp/rhMDiE7AYkDw+lLwlAzz0AntGIe51F3RfFfEqyQ3feY2eI/NcwC6umIQVOASPMsWJLJScWKSSvzL9IVA==
dependencies:
- inherits "^2.0.1"
- safe-buffer "^5.0.1"
+ inherits "^2.0.4"
+ readable-stream "^3.6.0"
+ safe-buffer "^5.2.0"
hash.js@^1.0.0, hash.js@^1.0.3:
version "1.1.7"
@@ 337,7 345,7 @@ inherits@2.0.3:
resolved "https://registry.yarnpkg.com/inherits/-/inherits-2.0.3.tgz#633c2c83e3da42a502f52466022480f4208261de"
integrity sha1-Yzwsg+PaQqUC9SRmAiSA9CCCYd4=
-inherits@^2.0.1, inherits@^2.0.3, inherits@~2.0.1, inherits@~2.0.3:
+inherits@^2.0.1, inherits@^2.0.3, inherits@^2.0.4, inherits@~2.0.1, inherits@~2.0.3:
version "2.0.4"
resolved "https://registry.yarnpkg.com/inherits/-/inherits-2.0.4.tgz#0fa2c64f932917c3433a0ded55363aae37416b7c"
integrity sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==
@@ 404,18 412,6 @@ minimalistic-crypto-utils@^1.0.0, minimalistic-crypto-utils@^1.0.1:
resolved "https://registry.yarnpkg.com/minimalistic-crypto-utils/-/minimalistic-crypto-utils-1.0.1.tgz#f6c00c1c0b082246e5c4d99dfb8c7c083b2b582a"
integrity sha1-9sAMHAsIIkblxNmd+4x8CDsrWCo=
-minimist@0.0.8:
- version "0.0.8"
- resolved "https://registry.yarnpkg.com/minimist/-/minimist-0.0.8.tgz#857fcabfc3397d2625b8228262e86aa7a011b05d"
- integrity sha1-hX/Kv8M5fSYluCKCYuhqp6ARsF0=
-
-mkdirp@^0.5.1:
- version "0.5.1"
- resolved "https://registry.yarnpkg.com/mkdirp/-/mkdirp-0.5.1.tgz#30057438eac6cf7f8c4767f38648d6697d75c903"
- integrity sha1-MAV0OOrGz3+MR2fzhkjWaX11yQM=
- dependencies:
- minimist "0.0.8"
-
node-fetch@^1.0.1:
version "1.7.3"
resolved "https://registry.yarnpkg.com/node-fetch/-/node-fetch-1.7.3.tgz#980f6f72d85211a5347c6b2bc18c5b84c3eb47ef"
@@ 464,11 460,11 @@ os-browserify@^0.3.0:
integrity sha1-hUNzx/XCMVkU/Jv8a9gjj92h7Cc=
pako@~1.0.5:
- version "1.0.10"
- resolved "https://registry.yarnpkg.com/pako/-/pako-1.0.10.tgz#4328badb5086a426aa90f541977d4955da5c9732"
- integrity sha512-0DTvPVU3ed8+HNXOu5Bs+o//Mbdj9VNQMUOe9oKCwh8l0GNwpTDMKCWbRjgtD291AWnkAgkqA/LOnQS8AmS1tw==
+ version "1.0.11"
+ resolved "https://registry.yarnpkg.com/pako/-/pako-1.0.11.tgz#6c9599d340d54dfd3946380252a35705a6b992bf"
+ integrity sha512-4hLB8Py4zZce5s4yd9XzopqwVv/yGNhV1Bl8NTmCq1763HeK2+EwVTv+leGeL13Dnh2wfbqowVPXCIO0z4taYw==
-parse-asn1@^5.0.0:
+parse-asn1@^5.0.0, parse-asn1@^5.1.5:
version "5.1.5"
resolved "https://registry.yarnpkg.com/parse-asn1/-/parse-asn1-5.1.5.tgz#003271343da58dc94cace494faef3d2147ecea0e"
integrity sha512-jkMYn1dcJqF6d5CpU689bq7w/b5ALS9ROVSpQDPrZsqqesUJii9qutvoT5ltGedNXMO2e16YUWIghG9KxaViTQ==
@@ 486,9 482,9 @@ path-browserify@0.0.1:
integrity sha512-BapA40NHICOS+USX9SN4tyhq+A2RrN/Ws5F0Z5aMHDp98Fl86lX8Oti8B7uN93L4Ifv4fHOEA+pQw87gmMO/lQ==
pbkdf2@^3.0.3:
- version "3.0.17"
- resolved "https://registry.yarnpkg.com/pbkdf2/-/pbkdf2-3.0.17.tgz#976c206530617b14ebb32114239f7b09336e93a6"
- integrity sha512-U/il5MsrZp7mGg3mSQfn742na2T+1/vHDCG5/iTI3X9MKUuYUZVLQhyRsg06mCgDBTd57TxzgZt7P+fYfjRLtA==
+ version "3.1.1"
+ resolved "https://registry.yarnpkg.com/pbkdf2/-/pbkdf2-3.1.1.tgz#cb8724b0fada984596856d1a6ebafd3584654b94"
+ integrity sha512-4Ejy1OPxi9f2tt1rRV7Go7zmfDQ+ZectEQz3VGUQhgq62HtIRPDyG/JtnwIxs6x3uNMwo2V7q1fMvKjb+Tnpqg==
dependencies:
create-hash "^1.1.2"
create-hmac "^1.1.4"
@@ 607,9 603,9 @@ react@^16.12.0:
prop-types "^15.6.2"
readable-stream@^2.0.2, readable-stream@^2.3.3, readable-stream@^2.3.6:
- version "2.3.6"
- resolved "https://registry.yarnpkg.com/readable-stream/-/readable-stream-2.3.6.tgz#b11c27d88b8ff1fbe070643cf94b0c79ae1b0aaf"
- integrity sha512-tQtKA9WIAhBF3+VLAseyMqZeBjW0AHJoxOtYqSUZNJxauErmLbVm2FW1y+J/YA9dUrAC39ITejlZWhVIwawkKw==
+ version "2.3.7"
+ resolved "https://registry.yarnpkg.com/readable-stream/-/readable-stream-2.3.7.tgz#1eca1cf711aef814c04f62252a36a62f6cb23b57"
+ integrity sha512-Ebho8K4jIbHAxnuxi7o42OrZgF/ZTNcsZj6nRKyUmkhLFq8CHItp/fy6hQZuZmP/n3yZ9VBUbp4zz/mX8hmYPw==
dependencies:
core-util-is "~1.0.0"
inherits "~2.0.3"
@@ 619,6 615,15 @@ readable-stream@^2.0.2, readable-stream@^2.3.3, readable-stream@^2.3.6:
string_decoder "~1.1.1"
util-deprecate "~1.0.1"
+readable-stream@^3.6.0:
+ version "3.6.0"
+ resolved "https://registry.yarnpkg.com/readable-stream/-/readable-stream-3.6.0.tgz#337bbda3adc0706bd3e024426a286d4b4b2c9198"
+ integrity sha512-BViHy7LKeTz4oNnkcLJ+lVSL6vpiFeX6/d3oSH8zCW7UxP2onchk+vTGB143xuFjHS3deTgkKoXXymXqymiIdA==
+ dependencies:
+ inherits "^2.0.3"
+ string_decoder "^1.1.1"
+ util-deprecate "^1.0.1"
+
readline-sync@^1.4.7:
version "1.4.10"
resolved "https://registry.yarnpkg.com/readline-sync/-/readline-sync-1.4.10.tgz#41df7fbb4b6312d673011594145705bf56d8873b"
@@ 632,10 637,10 @@ ripemd160@^2.0.0, ripemd160@^2.0.1:
hash-base "^3.0.0"
inherits "^2.0.1"
-safe-buffer@^5.0.1, safe-buffer@^5.1.0, safe-buffer@^5.1.1, safe-buffer@^5.1.2, safe-buffer@~5.2.0:
- version "5.2.0"
- resolved "https://registry.yarnpkg.com/safe-buffer/-/safe-buffer-5.2.0.tgz#b74daec49b1148f88c64b68d49b1e815c1f2f519"
- integrity sha512-fZEwUGbVl7kouZs1jCdMLdt95hdIv0ZeHg6L7qPeciMZhZ+/gdesW4wgTARkrFWEpspjEATAzUGPG8N2jJiwbg==
+safe-buffer@^5.0.1, safe-buffer@^5.1.0, safe-buffer@^5.1.1, safe-buffer@^5.1.2, safe-buffer@^5.2.0, safe-buffer@~5.2.0:
+ version "5.2.1"
+ resolved "https://registry.yarnpkg.com/safe-buffer/-/safe-buffer-5.2.1.tgz#1eaf9fa9bdb1fdd4ec75f58f9cdb4e6b7827eec6"
+ integrity sha512-rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ==
safe-buffer@~5.1.0, safe-buffer@~5.1.1:
version "5.1.2"
@@ 668,20 673,19 @@ sha.js@^2.4.0, sha.js@^2.4.8:
inherits "^2.0.1"
safe-buffer "^5.0.1"
-shadow-cljs-jar@1.3.1:
- version "1.3.1"
- resolved "https://registry.yarnpkg.com/shadow-cljs-jar/-/shadow-cljs-jar-1.3.1.tgz#a5f8ab7664b40e11345837e4c6bce8e0ac9b2cc3"
- integrity sha512-IJSm4Gfu/wWDsOQ0wNrSxuaGdjzsd78us+3bop3cpWsoO2Igdu6VIBItYrZHRRBKl5LIZKXfnSh/2eWG3C1EFw==
+shadow-cljs-jar@1.3.2:
+ version "1.3.2"
+ resolved "https://registry.yarnpkg.com/shadow-cljs-jar/-/shadow-cljs-jar-1.3.2.tgz#97273afe1747b6a2311917c1c88d9e243c81957b"
+ integrity sha512-XmeffAZHv8z7451kzeq9oKh8fh278Ak+UIOGGrapyqrFBB773xN8vMQ3O7J7TYLnb9BUwcqadKkmgaq7q6fhZg==
-shadow-cljs@^2.8.76:
- version "2.8.76"
- resolved "https://registry.yarnpkg.com/shadow-cljs/-/shadow-cljs-2.8.76.tgz#241a1a5856976887171df3470a66ea7d2fd6e3a8"
- integrity sha512-xh2KwuvUhzlQHuL/y0h5zxVmCMalLg9rMiaYW7LwhDJ0x6QAzbuMIsRNVsoPneXVl7Z81FARi2ie3wzizWbzWA==
+shadow-cljs@2.10.5:
+ version "2.10.5"
+ resolved "https://registry.yarnpkg.com/shadow-cljs/-/shadow-cljs-2.10.5.tgz#f9210dee5db369c677e9fc1bd77f6ddd39232bc9"
+ integrity sha512-2FpUZ1DKax2Fpz7amLxSAFVx/GuHH4NAyQsw6meVccYTTzoHz0vqmRVReIVNaQu3qFQV2PDq++aEKYJVCz79wg==
dependencies:
- mkdirp "^0.5.1"
node-libs-browser "^2.0.0"
readline-sync "^1.4.7"
- shadow-cljs-jar "1.3.1"
+ shadow-cljs-jar "1.3.2"
source-map-support "^0.4.15"
which "^1.3.1"
ws "^3.0.0"
@@ 717,7 721,7 @@ stream-http@^2.7.2:
to-arraybuffer "^1.0.0"
xtend "^4.0.0"
-string_decoder@^1.0.0:
+string_decoder@^1.0.0, string_decoder@^1.1.1:
version "1.3.0"
resolved "https://registry.yarnpkg.com/string_decoder/-/string_decoder-1.3.0.tgz#42f114594a46cf1a8e30b0a84f56c78c3edac21e"
integrity sha512-hkRX8U1WjJFd8LsDJ2yQ/wWWxaopEsABU1XfkM8A+j0+85JAGppt16cr1Whg6KIbb4okU6Mql6BOj+uup/wKeA==
@@ 766,7 770,7 @@ url@^0.11.0:
punycode "1.3.2"
querystring "0.2.0"
-util-deprecate@~1.0.1:
+util-deprecate@^1.0.1, util-deprecate@~1.0.1:
version "1.0.2"
resolved "https://registry.yarnpkg.com/util-deprecate/-/util-deprecate-1.0.2.tgz#450d4dc9fa70de732762fbd2d4a28981419a0ccf"
integrity sha1-RQ1Nyfpw3nMnYvvS1KKJgUGaDM8=