mirror of
https://github.com/penpot/penpot.git
synced 2025-06-12 13:01:50 +02:00
commit
1f00d91dd7
18 changed files with 338 additions and 292 deletions
|
@ -1,12 +1,12 @@
|
||||||
{:deps
|
{:deps
|
||||||
{penpot/common {:local/root "../common"}
|
{penpot/common {:local/root "../common"}
|
||||||
org.clojure/clojure {:mvn/version "1.11.1"}
|
org.clojure/clojure {:mvn/version "1.11.1"}
|
||||||
org.clojure/core.async {:mvn/version "1.5.648"}
|
org.clojure/core.async {:mvn/version "1.6.673"}
|
||||||
|
|
||||||
;; Logging
|
;; Logging
|
||||||
org.zeromq/jeromq {:mvn/version "0.5.2"}
|
org.zeromq/jeromq {:mvn/version "0.5.3"}
|
||||||
|
|
||||||
com.github.luben/zstd-jni {:mvn/version "1.5.2-4"}
|
com.github.luben/zstd-jni {:mvn/version "1.5.2-5"}
|
||||||
org.clojure/data.fressian {:mvn/version "1.0.0"}
|
org.clojure/data.fressian {:mvn/version "1.0.0"}
|
||||||
|
|
||||||
io.prometheus/simpleclient {:mvn/version "0.16.0"}
|
io.prometheus/simpleclient {:mvn/version "0.16.0"}
|
||||||
|
@ -18,7 +18,7 @@
|
||||||
|
|
||||||
io.prometheus/simpleclient_httpserver {:mvn/version "0.16.0"}
|
io.prometheus/simpleclient_httpserver {:mvn/version "0.16.0"}
|
||||||
|
|
||||||
io.lettuce/lettuce-core {:mvn/version "6.2.1.RELEASE"}
|
io.lettuce/lettuce-core {:mvn/version "6.2.2.RELEASE"}
|
||||||
java-http-clj/java-http-clj {:mvn/version "0.4.3"}
|
java-http-clj/java-http-clj {:mvn/version "0.4.3"}
|
||||||
|
|
||||||
funcool/yetti
|
funcool/yetti
|
||||||
|
@ -27,9 +27,9 @@
|
||||||
:git/url "https://github.com/funcool/yetti.git"
|
:git/url "https://github.com/funcool/yetti.git"
|
||||||
:exclusions [org.slf4j/slf4j-api]}
|
:exclusions [org.slf4j/slf4j-api]}
|
||||||
|
|
||||||
com.github.seancorfield/next.jdbc {:mvn/version "1.3.834"}
|
com.github.seancorfield/next.jdbc {:mvn/version "1.3.847"}
|
||||||
metosin/reitit-core {:mvn/version "0.5.18"}
|
metosin/reitit-core {:mvn/version "0.5.18"}
|
||||||
org.postgresql/postgresql {:mvn/version "42.5.0"}
|
org.postgresql/postgresql {:mvn/version "42.5.1"}
|
||||||
com.zaxxer/HikariCP {:mvn/version "5.0.1"}
|
com.zaxxer/HikariCP {:mvn/version "5.0.1"}
|
||||||
|
|
||||||
io.whitfin/siphash {:mvn/version "2.0.0"}
|
io.whitfin/siphash {:mvn/version "2.0.0"}
|
||||||
|
@ -37,9 +37,9 @@
|
||||||
buddy/buddy-hashers {:mvn/version "1.8.158"}
|
buddy/buddy-hashers {:mvn/version "1.8.158"}
|
||||||
buddy/buddy-sign {:mvn/version "3.4.333"}
|
buddy/buddy-sign {:mvn/version "3.4.333"}
|
||||||
|
|
||||||
com.github.ben-manes.caffeine/caffeine {:mvn/version "3.1.1"}
|
com.github.ben-manes.caffeine/caffeine {:mvn/version "3.1.2"}
|
||||||
|
|
||||||
org.jsoup/jsoup {:mvn/version "1.15.1"}
|
org.jsoup/jsoup {:mvn/version "1.15.3"}
|
||||||
org.im4java/im4java
|
org.im4java/im4java
|
||||||
{:git/tag "1.4.0-penpot-2"
|
{:git/tag "1.4.0-penpot-2"
|
||||||
:git/sha "e2b3e16"
|
:git/sha "e2b3e16"
|
||||||
|
@ -51,11 +51,11 @@
|
||||||
integrant/integrant {:mvn/version "0.8.0"}
|
integrant/integrant {:mvn/version "0.8.0"}
|
||||||
|
|
||||||
dawran6/emoji {:mvn/version "0.1.5"}
|
dawran6/emoji {:mvn/version "0.1.5"}
|
||||||
markdown-clj/markdown-clj {:mvn/version "1.11.3"}
|
markdown-clj/markdown-clj {:mvn/version "1.11.4"}
|
||||||
|
|
||||||
;; Pretty Print specs
|
;; Pretty Print specs
|
||||||
pretty-spec/pretty-spec {:mvn/version "0.1.4"}
|
pretty-spec/pretty-spec {:mvn/version "0.1.4"}
|
||||||
software.amazon.awssdk/s3 {:mvn/version "2.17.278"}}
|
software.amazon.awssdk/s3 {:mvn/version "2.19.5"}}
|
||||||
|
|
||||||
:paths ["src" "resources" "target/classes"]
|
:paths ["src" "resources" "target/classes"]
|
||||||
:aliases
|
:aliases
|
||||||
|
@ -69,8 +69,10 @@
|
||||||
mockery/mockery {:mvn/version "RELEASE"}}
|
mockery/mockery {:mvn/version "RELEASE"}}
|
||||||
:extra-paths ["test" "dev"]}
|
:extra-paths ["test" "dev"]}
|
||||||
|
|
||||||
|
|
||||||
:build
|
:build
|
||||||
{:extra-deps {io.github.clojure/tools.build {:git/tag "v0.8.3" :git/sha "0d20256"}}
|
{:extra-deps
|
||||||
|
{io.github.clojure/tools.build {:git/tag "v0.9.0" :git/sha "8c93e0c"}}
|
||||||
:ns-default build}
|
:ns-default build}
|
||||||
|
|
||||||
:test
|
:test
|
||||||
|
|
|
@ -241,7 +241,6 @@
|
||||||
[conn id client-features]
|
[conn id client-features]
|
||||||
;; here we check if client requested features are supported
|
;; here we check if client requested features are supported
|
||||||
(check-features-compatibility! client-features)
|
(check-features-compatibility! client-features)
|
||||||
|
|
||||||
(binding [pmap/*load-fn* (partial load-pointer conn id)]
|
(binding [pmap/*load-fn* (partial load-pointer conn id)]
|
||||||
(-> (db/get-by-id conn :file id)
|
(-> (db/get-by-id conn :file id)
|
||||||
(decode-row)
|
(decode-row)
|
||||||
|
@ -473,26 +472,23 @@
|
||||||
|
|
||||||
(defn get-team-shared-files
|
(defn get-team-shared-files
|
||||||
[conn {:keys [team-id] :as params}]
|
[conn {:keys [team-id] :as params}]
|
||||||
(let [assets-sample
|
(letfn [(assets-sample [assets limit]
|
||||||
(fn [assets limit]
|
(let [sorted-assets (->> (vals assets)
|
||||||
(let [sorted-assets (->> (vals assets)
|
(sort-by #(str/lower (:name %))))]
|
||||||
(sort-by #(str/lower (:name %))))]
|
{:count (count sorted-assets)
|
||||||
|
:sample (into [] (take limit sorted-assets))}))
|
||||||
|
|
||||||
{:count (count sorted-assets)
|
(library-summary [{:keys [id data] :as file}]
|
||||||
:sample (into [] (take limit sorted-assets))}))
|
(binding [pmap/*load-fn* (partial load-pointer conn id)]
|
||||||
|
{:components (assets-sample (:components data) 4)
|
||||||
|
:colors (assets-sample (:colors data) 3)
|
||||||
|
:typographies (assets-sample (:typographies data) 3)}))]
|
||||||
|
|
||||||
library-summary
|
(->> (db/exec! conn [sql:team-shared-files team-id])
|
||||||
(fn [data]
|
(into #{} (comp
|
||||||
{:components (assets-sample (:components data) 4)
|
(map decode-row)
|
||||||
:colors (assets-sample (:colors data) 3)
|
(map #(assoc % :library-summary (library-summary %)))
|
||||||
:typographies (assets-sample (:typographies data) 3)})
|
(map #(dissoc % :data)))))))
|
||||||
|
|
||||||
xform (comp
|
|
||||||
(map decode-row)
|
|
||||||
(map #(assoc % :library-summary (library-summary (:data %))))
|
|
||||||
(map #(dissoc % :data)))]
|
|
||||||
|
|
||||||
(into #{} xform (db/exec! conn [sql:team-shared-files team-id]))))
|
|
||||||
|
|
||||||
(s/def ::get-team-shared-files
|
(s/def ::get-team-shared-files
|
||||||
(s/keys :req [::rpc/profile-id] :req-un [::team-id]))
|
(s/keys :req [::rpc/profile-id] :req-un [::team-id]))
|
||||||
|
@ -536,12 +532,14 @@
|
||||||
[conn file-id client-features]
|
[conn file-id client-features]
|
||||||
(check-features-compatibility! client-features)
|
(check-features-compatibility! client-features)
|
||||||
(->> (db/exec! conn [sql:file-libraries file-id])
|
(->> (db/exec! conn [sql:file-libraries file-id])
|
||||||
(mapv (fn [{:keys [id] :as row}]
|
(map decode-row)
|
||||||
(binding [pmap/*load-fn* (partial load-pointer conn id)]
|
(map #(assoc % :is-indirect false))
|
||||||
(-> (decode-row row)
|
(map (fn [{:keys [id] :as row}]
|
||||||
(assoc :is-indirect false)
|
(binding [pmap/*load-fn* (partial load-pointer conn id)]
|
||||||
(update :data dissoc :pages-index)
|
(-> row
|
||||||
(handle-file-features client-features)))))))
|
(update :data dissoc :pages-index)
|
||||||
|
(handle-file-features client-features)))))
|
||||||
|
(vec)))
|
||||||
|
|
||||||
(s/def ::get-file-libraries
|
(s/def ::get-file-libraries
|
||||||
(s/keys :req [::rpc/profile-id]
|
(s/keys :req [::rpc/profile-id]
|
||||||
|
@ -711,28 +709,30 @@
|
||||||
|
|
||||||
objects)))]
|
objects)))]
|
||||||
|
|
||||||
(let [frame (get-thumbnail-frame data)
|
(binding [pmap/*load-fn* (partial load-pointer conn id)]
|
||||||
frame-id (:id frame)
|
(let [frame (get-thumbnail-frame data)
|
||||||
page-id (or (:page-id frame)
|
frame-id (:id frame)
|
||||||
(-> data :pages first))
|
page-id (or (:page-id frame)
|
||||||
|
(-> data :pages first))
|
||||||
|
|
||||||
page (dm/get-in data [:pages-index page-id])
|
page (dm/get-in data [:pages-index page-id])
|
||||||
frame-ids (if (some? frame) (list frame-id) (map :id (ctt/get-frames (:objects page))))
|
page (cond-> page (pmap/pointer-map? page) deref)
|
||||||
|
frame-ids (if (some? frame) (list frame-id) (map :id (ctt/get-frames (:objects page))))
|
||||||
|
|
||||||
obj-ids (map #(str page-id %) frame-ids)
|
obj-ids (map #(str page-id %) frame-ids)
|
||||||
thumbs (get-object-thumbnails conn id obj-ids)]
|
thumbs (get-object-thumbnails conn id obj-ids)]
|
||||||
|
|
||||||
(cond-> page
|
(cond-> page
|
||||||
;; If we have frame, we need to specify it on the page level
|
;; If we have frame, we need to specify it on the page level
|
||||||
;; and remove the all other unrelated objects.
|
;; and remove the all other unrelated objects.
|
||||||
(some? frame-id)
|
(some? frame-id)
|
||||||
(-> (assoc :thumbnail-frame-id frame-id)
|
(-> (assoc :thumbnail-frame-id frame-id)
|
||||||
(update :objects filter-objects frame-id))
|
(update :objects filter-objects frame-id))
|
||||||
|
|
||||||
;; Assoc the available thumbnails and prune not visible shapes
|
;; Assoc the available thumbnails and prune not visible shapes
|
||||||
;; for avoid transfer unnecessary data.
|
;; for avoid transfer unnecessary data.
|
||||||
:always
|
:always
|
||||||
(update :objects assoc-thumbnails page-id thumbs)))))
|
(update :objects assoc-thumbnails page-id thumbs))))))
|
||||||
|
|
||||||
(s/def ::get-file-data-for-thumbnail
|
(s/def ::get-file-data-for-thumbnail
|
||||||
(s/keys :req [::rpc/profile-id]
|
(s/keys :req [::rpc/profile-id]
|
||||||
|
@ -746,12 +746,15 @@
|
||||||
[{:keys [pool] :as cfg} {:keys [::rpc/profile-id file-id features] :as props}]
|
[{:keys [pool] :as cfg} {:keys [::rpc/profile-id file-id features] :as props}]
|
||||||
(with-open [conn (db/open pool)]
|
(with-open [conn (db/open pool)]
|
||||||
(check-read-permissions! conn profile-id file-id)
|
(check-read-permissions! conn profile-id file-id)
|
||||||
(let [file (get-file conn file-id features)]
|
;; NOTE: we force here the "storage/pointer-map" feature, because
|
||||||
|
;; it used internally only and is independent if user supports it
|
||||||
|
;; or not.
|
||||||
|
(let [feat (into #{"storage/pointer-map"} features)
|
||||||
|
file (get-file conn file-id feat)]
|
||||||
{:file-id file-id
|
{:file-id file-id
|
||||||
:revn (:revn file)
|
:revn (:revn file)
|
||||||
:page (get-file-data-for-thumbnail conn file)})))
|
:page (get-file-data-for-thumbnail conn file)})))
|
||||||
|
|
||||||
|
|
||||||
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
|
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
|
||||||
;; MUTATION COMMANDS
|
;; MUTATION COMMANDS
|
||||||
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
|
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
|
||||||
|
|
|
@ -168,7 +168,18 @@
|
||||||
(->> changes-with-metadata (mapcat :changes) vec)
|
(->> changes-with-metadata (mapcat :changes) vec)
|
||||||
(vec changes))
|
(vec changes))
|
||||||
|
|
||||||
params (assoc params :file file :changes changes)]
|
params (-> params
|
||||||
|
(assoc :file file)
|
||||||
|
(assoc :changes changes)
|
||||||
|
(assoc ::created-at (dt/now)))]
|
||||||
|
|
||||||
|
(when (> (:revn params)
|
||||||
|
(:revn file))
|
||||||
|
(ex/raise :type :validation
|
||||||
|
:code :revn-conflict
|
||||||
|
:hint "The incoming revision number is greater that stored version."
|
||||||
|
:context {:incoming-revn (:revn params)
|
||||||
|
:stored-revn (:revn file)}))
|
||||||
|
|
||||||
(mtx/run! metrics {:id :update-file-changes :inc (count changes)})
|
(mtx/run! metrics {:id :update-file-changes :inc (count changes)})
|
||||||
|
|
||||||
|
@ -180,24 +191,15 @@
|
||||||
|
|
||||||
(-> (update-fn cfg params)
|
(-> (update-fn cfg params)
|
||||||
(vary-meta assoc ::audit/replace-props
|
(vary-meta assoc ::audit/replace-props
|
||||||
{:id (:id file)
|
{:id (:id file)
|
||||||
:name (:name file)
|
:name (:name file)
|
||||||
:features (:features file)
|
:features (:features file)
|
||||||
:project-id (:project-id file)
|
:project-id (:project-id file)
|
||||||
:team-id (:team-id file)}))))))
|
:team-id (:team-id file)}))))))
|
||||||
|
|
||||||
(defn- update-file*
|
(defn- update-file*
|
||||||
[{:keys [conn] :as cfg} {:keys [profile-id file changes session-id] :as params}]
|
[{:keys [conn] :as cfg} {:keys [profile-id file changes session-id ::created-at] :as params}]
|
||||||
(when (> (:revn params)
|
(let [file (-> file
|
||||||
(:revn file))
|
|
||||||
(ex/raise :type :validation
|
|
||||||
:code :revn-conflict
|
|
||||||
:hint "The incoming revision number is greater that stored version."
|
|
||||||
:context {:incoming-revn (:revn params)
|
|
||||||
:stored-revn (:revn file)}))
|
|
||||||
|
|
||||||
(let [ts (dt/now)
|
|
||||||
file (-> file
|
|
||||||
(update :revn inc)
|
(update :revn inc)
|
||||||
(update :data (fn [data]
|
(update :data (fn [data]
|
||||||
(cond-> data
|
(cond-> data
|
||||||
|
@ -217,7 +219,7 @@
|
||||||
{:id (uuid/next)
|
{:id (uuid/next)
|
||||||
:session-id session-id
|
:session-id session-id
|
||||||
:profile-id profile-id
|
:profile-id profile-id
|
||||||
:created-at ts
|
:created-at created-at
|
||||||
:file-id (:id file)
|
:file-id (:id file)
|
||||||
:revn (:revn file)
|
:revn (:revn file)
|
||||||
:features (db/create-array conn "text" (:features file))
|
:features (db/create-array conn "text" (:features file))
|
||||||
|
@ -229,12 +231,12 @@
|
||||||
{:revn (:revn file)
|
{:revn (:revn file)
|
||||||
:data (:data file)
|
:data (:data file)
|
||||||
:data-backend nil
|
:data-backend nil
|
||||||
:modified-at ts
|
:modified-at created-at
|
||||||
:has-media-trimmed false}
|
:has-media-trimmed false}
|
||||||
{:id (:id file)})
|
{:id (:id file)})
|
||||||
|
|
||||||
(db/update! conn :project
|
(db/update! conn :project
|
||||||
{:modified-at ts}
|
{:modified-at created-at}
|
||||||
{:id (:project-id file)})
|
{:id (:project-id file)})
|
||||||
|
|
||||||
(let [params (assoc params :file file)]
|
(let [params (assoc params :file file)]
|
||||||
|
@ -265,13 +267,10 @@
|
||||||
order by s.created_at asc")
|
order by s.created_at asc")
|
||||||
|
|
||||||
(defn- get-lagged-changes
|
(defn- get-lagged-changes
|
||||||
[conn params]
|
[conn {:keys [id revn] :as params}]
|
||||||
(->> (db/exec! conn [sql:lagged-changes (:id params) (:revn params)])
|
(->> (db/exec! conn [sql:lagged-changes id revn])
|
||||||
(into [] (comp (map files/decode-row)
|
(map files/decode-row)
|
||||||
(map (fn [row]
|
(vec)))
|
||||||
(cond-> row
|
|
||||||
(= (:revn row) (:revn (:file params)))
|
|
||||||
(assoc :changes []))))))))
|
|
||||||
|
|
||||||
(defn- send-notifications!
|
(defn- send-notifications!
|
||||||
[{:keys [conn] :as cfg} {:keys [file changes session-id] :as params}]
|
[{:keys [conn] :as cfg} {:keys [file changes session-id] :as params}]
|
||||||
|
|
|
@ -11,6 +11,7 @@
|
||||||
[app.auth :refer [derive-password]]
|
[app.auth :refer [derive-password]]
|
||||||
[app.common.data :as d]
|
[app.common.data :as d]
|
||||||
[app.common.exceptions :as ex]
|
[app.common.exceptions :as ex]
|
||||||
|
[app.common.files.features :as ffeat]
|
||||||
[app.common.logging :as l]
|
[app.common.logging :as l]
|
||||||
[app.common.pages :as cp]
|
[app.common.pages :as cp]
|
||||||
[app.common.pages.migrations :as pmg]
|
[app.common.pages.migrations :as pmg]
|
||||||
|
@ -21,8 +22,11 @@
|
||||||
[app.db :as db]
|
[app.db :as db]
|
||||||
[app.db.sql :as sql]
|
[app.db.sql :as sql]
|
||||||
[app.main :refer [system]]
|
[app.main :refer [system]]
|
||||||
|
[app.rpc.commands.files :as files]
|
||||||
[app.rpc.queries.profile :as prof]
|
[app.rpc.queries.profile :as prof]
|
||||||
[app.util.blob :as blob]
|
[app.util.blob :as blob]
|
||||||
|
[app.util.objects-map :as omap]
|
||||||
|
[app.util.pointer-map :as pmap]
|
||||||
[app.util.time :as dt]
|
[app.util.time :as dt]
|
||||||
[clojure.spec.alpha :as s]
|
[clojure.spec.alpha :as s]
|
||||||
[clojure.stacktrace :as strace]
|
[clojure.stacktrace :as strace]
|
||||||
|
@ -66,23 +70,33 @@
|
||||||
[system & {:keys [update-fn id save? migrate? inc-revn?]
|
[system & {:keys [update-fn id save? migrate? inc-revn?]
|
||||||
:or {save? false migrate? true inc-revn? true}}]
|
:or {save? false migrate? true inc-revn? true}}]
|
||||||
(db/with-atomic [conn (:app.db/pool system)]
|
(db/with-atomic [conn (:app.db/pool system)]
|
||||||
(let [file (db/get-by-id conn :file id {:for-update true})
|
(let [file (-> (db/get-by-id conn :file id {:for-update true})
|
||||||
file (-> file
|
(update :features db/decode-pgarray #{}))]
|
||||||
(update :features db/decode-pgarray #{})
|
(binding [*conn* conn
|
||||||
(update :data blob/decode)
|
pmap/*tracked* (atom {})
|
||||||
(cond-> migrate? (update :data pmg/migrate-data)))
|
pmap/*load-fn* (partial files/load-pointer conn id)
|
||||||
file (binding [*conn* conn]
|
ffeat/*wrap-with-pointer-map-fn*
|
||||||
(-> (update-fn file)
|
(if (contains? (:features file) "storage/pointer-map") pmap/wrap identity)
|
||||||
(cond-> inc-revn? (update :revn inc))))]
|
ffeat/*wrap-with-objects-map-fn*
|
||||||
(when save?
|
(if (contains? (:features file) "storage/objectd-map") omap/wrap identity)]
|
||||||
(let [features (db/create-array conn "text" (:features file))
|
(let [file (-> file
|
||||||
data (blob/encode (:data file))]
|
(update :data blob/decode)
|
||||||
(db/update! conn :file
|
(cond-> migrate? (update :data pmg/migrate-data))
|
||||||
{:data data
|
(update-fn)
|
||||||
:revn (:revn file)
|
(cond-> inc-revn? (update :revn inc)))]
|
||||||
:features features}
|
(when save?
|
||||||
{:id id})))
|
(let [features (db/create-array conn "text" (:features file))
|
||||||
file)))
|
data (blob/encode (:data file))]
|
||||||
|
(db/update! conn :file
|
||||||
|
{:data data
|
||||||
|
:revn (:revn file)
|
||||||
|
:features features}
|
||||||
|
{:id id})
|
||||||
|
|
||||||
|
(when (contains? (:features file) "storage/pointer-map")
|
||||||
|
(files/persist-pointers! conn id))))
|
||||||
|
|
||||||
|
(dissoc file :data))))))
|
||||||
|
|
||||||
(def ^:private sql:retrieve-files-chunk
|
(def ^:private sql:retrieve-files-chunk
|
||||||
"SELECT id, name, created_at, data FROM file
|
"SELECT id, name, created_at, data FROM file
|
||||||
|
|
|
@ -110,10 +110,10 @@
|
||||||
(if (contains? features "storage/objects-map")
|
(if (contains? features "storage/objects-map")
|
||||||
file
|
file
|
||||||
(-> file
|
(-> file
|
||||||
(update :data migrate-to-omap)
|
(update :data migrate)
|
||||||
(update :features conj "storage/objects-map"))))
|
(update :features conj "storage/objects-map"))))
|
||||||
|
|
||||||
(migrate-to-omap [data]
|
(migrate [data]
|
||||||
(-> data
|
(-> data
|
||||||
(update :pages-index update-vals #(update % :objects omap/wrap))
|
(update :pages-index update-vals #(update % :objects omap/wrap))
|
||||||
(update :components update-vals #(update % :objects omap/wrap))))]
|
(update :components update-vals #(update % :objects omap/wrap))))]
|
||||||
|
@ -125,24 +125,17 @@
|
||||||
|
|
||||||
(defn enable-pointer-map-feature-on-file!
|
(defn enable-pointer-map-feature-on-file!
|
||||||
[system & {:keys [save? id]}]
|
[system & {:keys [save? id]}]
|
||||||
(letfn [(update-file [{:keys [features id] :as file}]
|
(letfn [(update-file [{:keys [features] :as file}]
|
||||||
(if (contains? features "storage/pointer-map")
|
(if (contains? features "storage/pointer-map")
|
||||||
file
|
file
|
||||||
(-> file
|
(-> file
|
||||||
(update :data migrate-to-omap id)
|
(update :data migrate)
|
||||||
(update :features conj "storage/pointer-map"))))
|
(update :features conj "storage/pointer-map"))))
|
||||||
|
|
||||||
(migrate-to-omap [data file-id]
|
(migrate [data]
|
||||||
(binding [pmap/*tracked* (atom {})]
|
(-> data
|
||||||
(let [data (-> data
|
(update :pages-index update-vals pmap/wrap)
|
||||||
(update :pages-index update-vals pmap/wrap)
|
(update :components pmap/wrap)))]
|
||||||
(update :components pmap/wrap))]
|
|
||||||
(doseq [[id item] @pmap/*tracked*]
|
|
||||||
(db/insert! h/*conn* :file-data-fragment
|
|
||||||
{:id id
|
|
||||||
:file-id file-id
|
|
||||||
:content (-> item deref blob/encode)}))
|
|
||||||
data)))]
|
|
||||||
|
|
||||||
(h/update-file! system
|
(h/update-file! system
|
||||||
:id id
|
:id id
|
||||||
|
|
|
@ -1,8 +1,8 @@
|
||||||
{:deps
|
{:deps
|
||||||
{org.clojure/clojure {:mvn/version "1.11.1"}
|
{org.clojure/clojure {:mvn/version "1.11.1"}
|
||||||
org.clojure/data.json {:mvn/version "2.4.0"}
|
org.clojure/data.json {:mvn/version "2.4.0"}
|
||||||
org.clojure/tools.cli {:mvn/version "1.0.206"}
|
org.clojure/tools.cli {:mvn/version "1.0.214"}
|
||||||
metosin/jsonista {:mvn/version "0.3.6"}
|
metosin/jsonista {:mvn/version "0.3.7"}
|
||||||
org.clojure/clojurescript {:mvn/version "1.11.60"}
|
org.clojure/clojurescript {:mvn/version "1.11.60"}
|
||||||
org.clojure/test.check {:mvn/version "1.1.1"}
|
org.clojure/test.check {:mvn/version "1.1.1"}
|
||||||
|
|
||||||
|
@ -23,7 +23,7 @@
|
||||||
com.cognitect/transit-cljs {:mvn/version "0.8.280"}
|
com.cognitect/transit-cljs {:mvn/version "0.8.280"}
|
||||||
java-http-clj/java-http-clj {:mvn/version "0.4.3"}
|
java-http-clj/java-http-clj {:mvn/version "0.4.3"}
|
||||||
|
|
||||||
funcool/promesa {:mvn/version "10.0.571"}
|
funcool/promesa {:mvn/version "10.0.582"}
|
||||||
funcool/cuerdas {:mvn/version "2022.06.16-403"}
|
funcool/cuerdas {:mvn/version "2022.06.16-403"}
|
||||||
|
|
||||||
lambdaisland/uri {:mvn/version "1.13.95"
|
lambdaisland/uri {:mvn/version "1.13.95"
|
||||||
|
@ -37,21 +37,22 @@
|
||||||
|
|
||||||
;; exception printing
|
;; exception printing
|
||||||
fipp/fipp {:mvn/version "0.6.26"}
|
fipp/fipp {:mvn/version "0.6.26"}
|
||||||
io.aviso/pretty {:mvn/version "1.1.1"}
|
io.aviso/pretty {:mvn/version "1.3"}
|
||||||
environ/environ {:mvn/version "1.2.0"}}
|
environ/environ {:mvn/version "1.2.0"}}
|
||||||
:paths ["src" "target/classes"]
|
:paths ["src" "target/classes"]
|
||||||
:aliases
|
:aliases
|
||||||
{:dev
|
{:dev
|
||||||
{:extra-deps
|
{:extra-deps
|
||||||
{org.clojure/tools.namespace {:mvn/version "RELEASE"}
|
{org.clojure/tools.namespace {:mvn/version "RELEASE"}
|
||||||
thheller/shadow-cljs {:mvn/version "2.20.2"}
|
thheller/shadow-cljs {:mvn/version "2.20.16"}
|
||||||
com.bhauman/rebel-readline {:mvn/version "RELEASE"}
|
com.bhauman/rebel-readline {:mvn/version "RELEASE"}
|
||||||
criterium/criterium {:mvn/version "RELEASE"}
|
criterium/criterium {:mvn/version "RELEASE"}
|
||||||
mockery/mockery {:mvn/version "RELEASE"}}
|
mockery/mockery {:mvn/version "RELEASE"}}
|
||||||
:extra-paths ["test" "dev"]}
|
:extra-paths ["test" "dev"]}
|
||||||
|
|
||||||
:build
|
:build
|
||||||
{:extra-deps {io.github.clojure/tools.build {:git/tag "v0.8.3" :git/sha "0d20256"}}
|
{:extra-deps
|
||||||
|
{io.github.clojure/tools.build {:git/tag "v0.9.0" :git/sha "8c93e0c"}}
|
||||||
:ns-default build}
|
:ns-default build}
|
||||||
|
|
||||||
:test
|
:test
|
||||||
|
|
|
@ -4,7 +4,7 @@
|
||||||
"main": "index.js",
|
"main": "index.js",
|
||||||
"license": "MPL-2.0",
|
"license": "MPL-2.0",
|
||||||
"dependencies": {
|
"dependencies": {
|
||||||
"luxon": "^1.27.0"
|
"luxon": "^3.1.1"
|
||||||
},
|
},
|
||||||
"scripts": {
|
"scripts": {
|
||||||
"compile-and-watch-test": "clojure -M:dev:shadow-cljs watch test",
|
"compile-and-watch-test": "clojure -M:dev:shadow-cljs watch test",
|
||||||
|
@ -13,8 +13,8 @@
|
||||||
"test": "yarn run compile-test && yarn run run-test"
|
"test": "yarn run compile-test && yarn run run-test"
|
||||||
},
|
},
|
||||||
"devDependencies": {
|
"devDependencies": {
|
||||||
"shadow-cljs": "2.19.8",
|
"shadow-cljs": "2.20.16",
|
||||||
"source-map-support": "^0.5.19",
|
"source-map-support": "^0.5.21",
|
||||||
"ws": "^7.4.6"
|
"ws": "^8.11.0"
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -305,10 +305,10 @@ isexe@^2.0.0:
|
||||||
resolved "https://registry.yarnpkg.com/isexe/-/isexe-2.0.0.tgz#e8fbf374dc556ff8947a10dcb0572d633f2cfa10"
|
resolved "https://registry.yarnpkg.com/isexe/-/isexe-2.0.0.tgz#e8fbf374dc556ff8947a10dcb0572d633f2cfa10"
|
||||||
integrity sha1-6PvzdNxVb/iUehDcsFctYz8s+hA=
|
integrity sha1-6PvzdNxVb/iUehDcsFctYz8s+hA=
|
||||||
|
|
||||||
luxon@^1.27.0:
|
luxon@^3.1.1:
|
||||||
version "1.27.0"
|
version "3.1.1"
|
||||||
resolved "https://registry.yarnpkg.com/luxon/-/luxon-1.27.0.tgz#ae10c69113d85dab8f15f5e8390d0cbeddf4f00f"
|
resolved "https://registry.yarnpkg.com/luxon/-/luxon-3.1.1.tgz#b492c645b2474fb86f3bd3283213846b99c32c1e"
|
||||||
integrity sha512-VKsFsPggTA0DvnxtJdiExAucKdAnwbCCNlMM5ENvHlxubqWd0xhZcdb4XgZ7QFNhaRhilXCFxHuoObP5BNA4PA==
|
integrity sha512-Ah6DloGmvseB/pX1cAmjbFvyU/pKuwQMQqz7d0yvuDlVYLTs2WeDHQMpC8tGjm1da+BriHROW/OEIT/KfYg6xw==
|
||||||
|
|
||||||
md5.js@^1.3.4:
|
md5.js@^1.3.4:
|
||||||
version "1.3.5"
|
version "1.3.5"
|
||||||
|
@ -533,10 +533,10 @@ shadow-cljs-jar@1.3.2:
|
||||||
resolved "https://registry.yarnpkg.com/shadow-cljs-jar/-/shadow-cljs-jar-1.3.2.tgz#97273afe1747b6a2311917c1c88d9e243c81957b"
|
resolved "https://registry.yarnpkg.com/shadow-cljs-jar/-/shadow-cljs-jar-1.3.2.tgz#97273afe1747b6a2311917c1c88d9e243c81957b"
|
||||||
integrity sha512-XmeffAZHv8z7451kzeq9oKh8fh278Ak+UIOGGrapyqrFBB773xN8vMQ3O7J7TYLnb9BUwcqadKkmgaq7q6fhZg==
|
integrity sha512-XmeffAZHv8z7451kzeq9oKh8fh278Ak+UIOGGrapyqrFBB773xN8vMQ3O7J7TYLnb9BUwcqadKkmgaq7q6fhZg==
|
||||||
|
|
||||||
shadow-cljs@2.19.8:
|
shadow-cljs@2.20.16:
|
||||||
version "2.19.8"
|
version "2.20.16"
|
||||||
resolved "https://registry.yarnpkg.com/shadow-cljs/-/shadow-cljs-2.19.8.tgz#1ce96cab3e4903bed8d401ffbe88b8939f5454d3"
|
resolved "https://registry.yarnpkg.com/shadow-cljs/-/shadow-cljs-2.20.16.tgz#32e83586fcc91a246b7fb622349135ad84ca1a19"
|
||||||
integrity sha512-6qek3mcAP0hrnC5FxrTebBrgLGpOuhlnp06vdxp6g0M5Gl6w2Y0hzSwa1s2K8fMOkzE4/ciQor75b2y64INgaw==
|
integrity sha512-k33ssZppDkBSYIfKswiKOX/8bNTnHbHoTmwf3KBPXBQkDPptPR3FeedmWtS5vKWnucFTe9DObhM2exKocErIxw==
|
||||||
dependencies:
|
dependencies:
|
||||||
node-libs-browser "^2.2.1"
|
node-libs-browser "^2.2.1"
|
||||||
readline-sync "^1.4.7"
|
readline-sync "^1.4.7"
|
||||||
|
@ -552,10 +552,10 @@ source-map-support@^0.4.15:
|
||||||
dependencies:
|
dependencies:
|
||||||
source-map "^0.5.6"
|
source-map "^0.5.6"
|
||||||
|
|
||||||
source-map-support@^0.5.19:
|
source-map-support@^0.5.21:
|
||||||
version "0.5.19"
|
version "0.5.21"
|
||||||
resolved "https://registry.yarnpkg.com/source-map-support/-/source-map-support-0.5.19.tgz#a98b62f86dcaf4f67399648c085291ab9e8fed61"
|
resolved "https://registry.yarnpkg.com/source-map-support/-/source-map-support-0.5.21.tgz#04fe7c7f9e1ed2d662233c28cb2b35b9f63f6e4f"
|
||||||
integrity sha512-Wonm7zOCIJzBGQdB+thsPar0kYuCIzYvxZwlBa87yi/Mdjv7Tip2cyVbLj5o0cFPN4EVkuTwb3GDDyUx2DGnGw==
|
integrity sha512-uBHU3L3czsIyYXKX88fdrGovxdSCoTGDRZ6SYXtSRxLZUzHg5P/66Ht6uoUlHu9EZod+inXhKo3qQgwXUT/y1w==
|
||||||
dependencies:
|
dependencies:
|
||||||
buffer-from "^1.0.0"
|
buffer-from "^1.0.0"
|
||||||
source-map "^0.6.0"
|
source-map "^0.6.0"
|
||||||
|
@ -664,6 +664,11 @@ ws@^7.4.6:
|
||||||
resolved "https://registry.yarnpkg.com/ws/-/ws-7.4.6.tgz#5654ca8ecdeee47c33a9a4bf6d28e2be2980377c"
|
resolved "https://registry.yarnpkg.com/ws/-/ws-7.4.6.tgz#5654ca8ecdeee47c33a9a4bf6d28e2be2980377c"
|
||||||
integrity sha512-YmhHDO4MzaDLB+M9ym/mDA5z0naX8j7SIlT8f8z+I0VtzsRbekxEutHSme7NPS2qE8StCYQNUnfWdXta/Yu85A==
|
integrity sha512-YmhHDO4MzaDLB+M9ym/mDA5z0naX8j7SIlT8f8z+I0VtzsRbekxEutHSme7NPS2qE8StCYQNUnfWdXta/Yu85A==
|
||||||
|
|
||||||
|
ws@^8.11.0:
|
||||||
|
version "8.11.0"
|
||||||
|
resolved "https://registry.yarnpkg.com/ws/-/ws-8.11.0.tgz#6a0d36b8edfd9f96d8b25683db2f8d7de6e8e143"
|
||||||
|
integrity sha512-HPG3wQd9sNQoT9xHyNCXoDUa+Xw/VevmY9FoHyQ+g+rrMn4j6FB4np7Z0OhdTgjx6MgQLK7jwSy1YecU1+4Asg==
|
||||||
|
|
||||||
xtend@^4.0.0:
|
xtend@^4.0.0:
|
||||||
version "4.0.2"
|
version "4.0.2"
|
||||||
resolved "https://registry.yarnpkg.com/xtend/-/xtend-4.0.2.tgz#bb72779f5fa465186b1f438f674fa347fdb5db54"
|
resolved "https://registry.yarnpkg.com/xtend/-/xtend-4.0.2.tgz#bb72779f5fa465186b1f438f674fa347fdb5db54"
|
||||||
|
|
|
@ -243,20 +243,22 @@ services:
|
||||||
## An optional admin application for pentpot. It allows manage
|
## An optional admin application for pentpot. It allows manage
|
||||||
## users, teams and inspect some parts of the database. You can read
|
## users, teams and inspect some parts of the database. You can read
|
||||||
## more about it on: https://github.com/penpot/penpot-admin
|
## more about it on: https://github.com/penpot/penpot-admin
|
||||||
|
##
|
||||||
|
## Status: EXPERIMENTAL
|
||||||
|
|
||||||
# penpot-admin:
|
# penpot-admin:
|
||||||
# image: "penpotapp/admin:alpha"
|
# image: "penpotapp/admin:alpha"
|
||||||
# networks:
|
# networks:
|
||||||
# - penpot
|
# - penpot
|
||||||
|
#
|
||||||
# depends_on:
|
# depends_on:
|
||||||
# - penpot-postgres
|
# - penpot-postgres
|
||||||
# - penpot-backend
|
# - penpot-backend
|
||||||
|
#
|
||||||
# environment:
|
# environment:
|
||||||
# - PENPOT_PUBLIC_URI=http://localhost:9001
|
# - PENPOT_PUBLIC_URI=http://localhost:9001
|
||||||
# - PENPOT_API_URI=http://penpot-frontend/
|
# - PENPOT_API_URI=http://penpot-frontend/
|
||||||
|
#
|
||||||
# - PENPOT_DATABASE_HOST=penpot-postgres
|
# - PENPOT_DATABASE_HOST=penpot-postgres
|
||||||
# - PENPOT_DATABASE_NAME=penpot
|
# - PENPOT_DATABASE_NAME=penpot
|
||||||
# - PENPOT_DATABASE_USERNAME=penpot
|
# - PENPOT_DATABASE_USERNAME=penpot
|
||||||
|
|
|
@ -15,7 +15,7 @@
|
||||||
|
|
||||||
:dev
|
:dev
|
||||||
{:extra-deps
|
{:extra-deps
|
||||||
{thheller/shadow-cljs {:mvn/version "2.20.2"}}}
|
{thheller/shadow-cljs {:mvn/version "2.20.16"}}}
|
||||||
|
|
||||||
:shadow-cljs
|
:shadow-cljs
|
||||||
{:main-opts ["-m" "shadow.cljs.devtools.cli"]}
|
{:main-opts ["-m" "shadow.cljs.devtools.cli"]}
|
||||||
|
|
|
@ -13,15 +13,15 @@
|
||||||
"cookies": "^0.8.0",
|
"cookies": "^0.8.0",
|
||||||
"generic-pool": "^3.9.0",
|
"generic-pool": "^3.9.0",
|
||||||
"inflation": "^2.0.0",
|
"inflation": "^2.0.0",
|
||||||
"ioredis": "^5.2.3",
|
"ioredis": "^5.2.4",
|
||||||
"luxon": "^3.0.4",
|
"luxon": "^3.1.1",
|
||||||
"playwright": "^1.26.1",
|
"playwright": "^1.29.1",
|
||||||
"raw-body": "^2.5.1",
|
"raw-body": "^2.5.1",
|
||||||
"xml-js": "^1.6.11",
|
"xml-js": "^1.6.11",
|
||||||
"xregexp": "^5.1.1"
|
"xregexp": "^5.1.1"
|
||||||
},
|
},
|
||||||
"devDependencies": {
|
"devDependencies": {
|
||||||
"shadow-cljs": "^2.20.2",
|
"shadow-cljs": "^2.20.16",
|
||||||
"source-map-support": "^0.5.21"
|
"source-map-support": "^0.5.21"
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -523,10 +523,10 @@ inherits@2.0.3:
|
||||||
resolved "https://registry.yarnpkg.com/inherits/-/inherits-2.0.3.tgz#633c2c83e3da42a502f52466022480f4208261de"
|
resolved "https://registry.yarnpkg.com/inherits/-/inherits-2.0.3.tgz#633c2c83e3da42a502f52466022480f4208261de"
|
||||||
integrity sha1-Yzwsg+PaQqUC9SRmAiSA9CCCYd4=
|
integrity sha1-Yzwsg+PaQqUC9SRmAiSA9CCCYd4=
|
||||||
|
|
||||||
ioredis@^5.2.3:
|
ioredis@^5.2.4:
|
||||||
version "5.2.3"
|
version "5.2.4"
|
||||||
resolved "https://registry.yarnpkg.com/ioredis/-/ioredis-5.2.3.tgz#d5b37eb13e643241660d6cee4eeb41a026cda8c0"
|
resolved "https://registry.yarnpkg.com/ioredis/-/ioredis-5.2.4.tgz#9e262a668bc29bae98f2054c1e0d7efd86996b96"
|
||||||
integrity sha512-gQNcMF23/NpvjCaa1b5YycUyQJ9rBNH2xP94LWinNpodMWVUPP5Ai/xXANn/SM7gfIvI62B5CCvZxhg5pOgyMw==
|
integrity sha512-qIpuAEt32lZJQ0XyrloCRdlEdUUNGG9i0UOk6zgzK6igyudNWqEBxfH6OlbnOOoBBvr1WB02mm8fR55CnikRng==
|
||||||
dependencies:
|
dependencies:
|
||||||
"@ioredis/commands" "^1.1.1"
|
"@ioredis/commands" "^1.1.1"
|
||||||
cluster-key-slot "^1.1.0"
|
cluster-key-slot "^1.1.0"
|
||||||
|
@ -592,10 +592,10 @@ lodash.union@^4.6.0:
|
||||||
resolved "https://registry.yarnpkg.com/lodash.union/-/lodash.union-4.6.0.tgz#48bb5088409f16f1821666641c44dd1aaae3cd88"
|
resolved "https://registry.yarnpkg.com/lodash.union/-/lodash.union-4.6.0.tgz#48bb5088409f16f1821666641c44dd1aaae3cd88"
|
||||||
integrity sha1-SLtQiECfFvGCFmZkHETdGqrjzYg=
|
integrity sha1-SLtQiECfFvGCFmZkHETdGqrjzYg=
|
||||||
|
|
||||||
luxon@^3.0.4:
|
luxon@^3.1.1:
|
||||||
version "3.0.4"
|
version "3.1.1"
|
||||||
resolved "https://registry.yarnpkg.com/luxon/-/luxon-3.0.4.tgz#d179e4e9f05e092241e7044f64aaa54796b03929"
|
resolved "https://registry.yarnpkg.com/luxon/-/luxon-3.1.1.tgz#b492c645b2474fb86f3bd3283213846b99c32c1e"
|
||||||
integrity sha512-aV48rGUwP/Vydn8HT+5cdr26YYQiUZ42NM6ToMoaGKwYfWbfLeRkEu1wXWMHBZT6+KyLfcbbtVcoQFCbbPjKlw==
|
integrity sha512-Ah6DloGmvseB/pX1cAmjbFvyU/pKuwQMQqz7d0yvuDlVYLTs2WeDHQMpC8tGjm1da+BriHROW/OEIT/KfYg6xw==
|
||||||
|
|
||||||
md5.js@^1.3.4:
|
md5.js@^1.3.4:
|
||||||
version "1.3.5"
|
version "1.3.5"
|
||||||
|
@ -724,17 +724,17 @@ pbkdf2@^3.0.3:
|
||||||
safe-buffer "^5.0.1"
|
safe-buffer "^5.0.1"
|
||||||
sha.js "^2.4.8"
|
sha.js "^2.4.8"
|
||||||
|
|
||||||
playwright-core@1.26.1:
|
playwright-core@1.29.1:
|
||||||
version "1.26.1"
|
version "1.29.1"
|
||||||
resolved "https://registry.yarnpkg.com/playwright-core/-/playwright-core-1.26.1.tgz#a162f476488312dcf12638d97685144de6ada512"
|
resolved "https://registry.yarnpkg.com/playwright-core/-/playwright-core-1.29.1.tgz#9ec15d61c4bd2f386ddf6ce010db53a030345a47"
|
||||||
integrity sha512-hzFchhhxnEiPc4qVPs9q2ZR+5eKNifY2hQDHtg1HnTTUuphYCBP8ZRb2si+B1TR7BHirgXaPi48LIye5SgrLAA==
|
integrity sha512-20Ai3d+lMkWpI9YZYlxk8gxatfgax5STW8GaMozAHwigLiyiKQrdkt7gaoT9UQR8FIVDg6qVXs9IoZUQrDjIIg==
|
||||||
|
|
||||||
playwright@^1.26.1:
|
playwright@^1.29.1:
|
||||||
version "1.26.1"
|
version "1.29.1"
|
||||||
resolved "https://registry.yarnpkg.com/playwright/-/playwright-1.26.1.tgz#0082c1d6a1c9cefe3f7a593396ad8568746184d0"
|
resolved "https://registry.yarnpkg.com/playwright/-/playwright-1.29.1.tgz#fc04b34f42e3bfc0edadb1c45ef9bffd53c21f70"
|
||||||
integrity sha512-WQmEdCgYYe8jOEkhkW9QLcK0PB+w1RZztBLYIT10MEEsENYg251cU0IzebDINreQsUt+HCwwRhtdz4weH9ICcQ==
|
integrity sha512-lasC+pMqsQ2uWhNurt3YK3xo0gWlMjslYUylKbHcqF/NTjwp9KStRGO7S6wwz2f52GcSnop8XUK/GymJjdzrxw==
|
||||||
dependencies:
|
dependencies:
|
||||||
playwright-core "1.26.1"
|
playwright-core "1.29.1"
|
||||||
|
|
||||||
printj@~1.3.1:
|
printj@~1.3.1:
|
||||||
version "1.3.1"
|
version "1.3.1"
|
||||||
|
@ -910,10 +910,10 @@ shadow-cljs-jar@1.3.2:
|
||||||
resolved "https://registry.yarnpkg.com/shadow-cljs-jar/-/shadow-cljs-jar-1.3.2.tgz#97273afe1747b6a2311917c1c88d9e243c81957b"
|
resolved "https://registry.yarnpkg.com/shadow-cljs-jar/-/shadow-cljs-jar-1.3.2.tgz#97273afe1747b6a2311917c1c88d9e243c81957b"
|
||||||
integrity sha512-XmeffAZHv8z7451kzeq9oKh8fh278Ak+UIOGGrapyqrFBB773xN8vMQ3O7J7TYLnb9BUwcqadKkmgaq7q6fhZg==
|
integrity sha512-XmeffAZHv8z7451kzeq9oKh8fh278Ak+UIOGGrapyqrFBB773xN8vMQ3O7J7TYLnb9BUwcqadKkmgaq7q6fhZg==
|
||||||
|
|
||||||
shadow-cljs@^2.20.2:
|
shadow-cljs@^2.20.16:
|
||||||
version "2.20.2"
|
version "2.20.16"
|
||||||
resolved "https://registry.yarnpkg.com/shadow-cljs/-/shadow-cljs-2.20.2.tgz#24a4b204f1f2288dc4ff2d0a4f3972a6e5307645"
|
resolved "https://registry.yarnpkg.com/shadow-cljs/-/shadow-cljs-2.20.16.tgz#32e83586fcc91a246b7fb622349135ad84ca1a19"
|
||||||
integrity sha512-2kzWnV1QM6KBetziCAkCf8BJdnDX2CwiAr4yhvOsiQpaNJcMzwMsJTX/gTHz58yQg0dV5uwPsIyBlvyIfl30rg==
|
integrity sha512-k33ssZppDkBSYIfKswiKOX/8bNTnHbHoTmwf3KBPXBQkDPptPR3FeedmWtS5vKWnucFTe9DObhM2exKocErIxw==
|
||||||
dependencies:
|
dependencies:
|
||||||
node-libs-browser "^2.2.1"
|
node-libs-browser "^2.2.1"
|
||||||
readline-sync "^1.4.7"
|
readline-sync "^1.4.7"
|
||||||
|
|
|
@ -33,13 +33,12 @@
|
||||||
{com.bhauman/rebel-readline {:mvn/version "RELEASE"}}
|
{com.bhauman/rebel-readline {:mvn/version "RELEASE"}}
|
||||||
:main-opts ["-m" "rebel-readline.main"]}
|
:main-opts ["-m" "rebel-readline.main"]}
|
||||||
|
|
||||||
|
|
||||||
:dev
|
:dev
|
||||||
{:extra-paths ["dev"]
|
{:extra-paths ["dev"]
|
||||||
:extra-deps
|
:extra-deps
|
||||||
{thheller/shadow-cljs {:mvn/version "2.20.2"}
|
{thheller/shadow-cljs {:mvn/version "2.20.16"}
|
||||||
org.clojure/tools.namespace {:mvn/version "RELEASE"}
|
org.clojure/tools.namespace {:mvn/version "RELEASE"}
|
||||||
cider/cider-nrepl {:mvn/version "0.28.4"}}}
|
cider/cider-nrepl {:mvn/version "0.29.0"}}}
|
||||||
|
|
||||||
:shadow-cljs
|
:shadow-cljs
|
||||||
{:main-opts ["-m" "shadow.cljs.devtools.cli"]}
|
{:main-opts ["-m" "shadow.cljs.devtools.cli"]}
|
||||||
|
|
|
@ -26,7 +26,7 @@
|
||||||
"test-e2e-gui": "cypress open"
|
"test-e2e-gui": "cypress open"
|
||||||
},
|
},
|
||||||
"devDependencies": {
|
"devDependencies": {
|
||||||
"autoprefixer": "^10.4.7",
|
"autoprefixer": "^10.4.13",
|
||||||
"cypress": "^10.3.0",
|
"cypress": "^10.3.0",
|
||||||
"cypress-file-upload": "^5.0.8",
|
"cypress-file-upload": "^5.0.8",
|
||||||
"gettext-parser": "^5.1.2",
|
"gettext-parser": "^5.1.2",
|
||||||
|
@ -40,37 +40,37 @@
|
||||||
"gulp-sourcemaps": "^3.0.0",
|
"gulp-sourcemaps": "^3.0.0",
|
||||||
"gulp-svg-sprite": "^1.5.0",
|
"gulp-svg-sprite": "^1.5.0",
|
||||||
"map-stream": "0.0.7",
|
"map-stream": "0.0.7",
|
||||||
"marked": "^4.0.17",
|
"marked": "^4.2.5",
|
||||||
"mkdirp": "^1.0.4",
|
"mkdirp": "^1.0.4",
|
||||||
"nodemon": "^2.0.19",
|
"nodemon": "^2.0.20",
|
||||||
"npm-run-all": "^4.1.5",
|
"npm-run-all": "^4.1.5",
|
||||||
"postcss": "^8.4.14",
|
"postcss": "^8.4.20",
|
||||||
"postcss-clean": "^1.2.2",
|
"postcss-clean": "^1.2.2",
|
||||||
"prettier": "^2.7.1",
|
"prettier": "^2.8.1",
|
||||||
"rimraf": "^3.0.0",
|
"rimraf": "^3.0.0",
|
||||||
"sass": "^1.53.0",
|
"sass": "^1.57.1",
|
||||||
"shadow-cljs": "2.20.2"
|
"shadow-cljs": "2.20.16"
|
||||||
},
|
},
|
||||||
"dependencies": {
|
"dependencies": {
|
||||||
"@sentry/browser": "^6.17.4",
|
"@sentry/browser": "^6.17.4",
|
||||||
"@sentry/tracing": "^6.17.4",
|
"@sentry/tracing": "^6.17.4",
|
||||||
"date-fns": "^2.28.0",
|
"date-fns": "^2.29.3",
|
||||||
"draft-js": "^0.11.7",
|
"draft-js": "^0.11.7",
|
||||||
"highlight.js": "^11.6.0",
|
"highlight.js": "^11.7.0",
|
||||||
"js-beautify": "^1.14.4",
|
"js-beautify": "^1.14.7",
|
||||||
"jszip": "^3.10.0",
|
"jszip": "^3.10.1",
|
||||||
"luxon": "^3.0.1",
|
"luxon": "^3.1.1",
|
||||||
"mousetrap": "^1.6.5",
|
"mousetrap": "^1.6.5",
|
||||||
"opentype.js": "^1.3.4",
|
"opentype.js": "^1.3.4",
|
||||||
"randomcolor": "^0.6.2",
|
"randomcolor": "^0.6.2",
|
||||||
"react": "~17.0.2",
|
"react": "~17.0.2",
|
||||||
"react-dom": "~17.0.2",
|
"react-dom": "~17.0.2",
|
||||||
"react-virtualized": "^9.22.3",
|
"react-virtualized": "^9.22.3",
|
||||||
"rxjs": "~7.5.5",
|
"rxjs": "~7.8.0",
|
||||||
"sax": "^1.2.4",
|
"sax": "^1.2.4",
|
||||||
"source-map-support": "^0.5.21",
|
"source-map-support": "^0.5.21",
|
||||||
"tdigest": "^0.1.2",
|
"tdigest": "^0.1.2",
|
||||||
"ua-parser-js": "^1.0.2",
|
"ua-parser-js": "^1.0.32",
|
||||||
"xregexp": "^5.1.1"
|
"xregexp": "^5.1.1"
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -150,14 +150,15 @@
|
||||||
|
|
||||||
(defn- bundle-fetched
|
(defn- bundle-fetched
|
||||||
[features [{:keys [id data] :as file} thumbnails project users comments-users]]
|
[features [{:keys [id data] :as file} thumbnails project users comments-users]]
|
||||||
(letfn [(resolve-pointer [[key pointer]]
|
(letfn [(resolve-pointer [file-id [key pointer]]
|
||||||
(->> (rp/cmd! :get-file-fragment {:file-id id :fragment-id @pointer})
|
(->> (rp/cmd! :get-file-fragment {:file-id file-id :fragment-id @pointer})
|
||||||
(rx/map :content)
|
(rx/map :content)
|
||||||
(rx/map #(vector key %))))
|
(rx/map #(vector key %))))
|
||||||
(resolve-pointers [in-to coll]
|
|
||||||
|
(resolve-pointers [file-id coll]
|
||||||
(->> (rx/from (seq coll))
|
(->> (rx/from (seq coll))
|
||||||
(rx/merge-map resolve-pointer)
|
(rx/merge-map (partial resolve-pointer file-id))
|
||||||
(rx/reduce conj in-to)))]
|
(rx/reduce conj {})))]
|
||||||
|
|
||||||
(ptk/reify ::bundle-fetched
|
(ptk/reify ::bundle-fetched
|
||||||
ptk/UpdateEvent
|
ptk/UpdateEvent
|
||||||
|
@ -186,7 +187,7 @@
|
||||||
(rx/merge-map
|
(rx/merge-map
|
||||||
(fn [[_ page :as kp]]
|
(fn [[_ page :as kp]]
|
||||||
(if (t/pointer? page)
|
(if (t/pointer? page)
|
||||||
(resolve-pointer kp)
|
(resolve-pointer id kp)
|
||||||
(rx/of kp))))
|
(rx/of kp))))
|
||||||
(rx/merge-map
|
(rx/merge-map
|
||||||
(fn [[id page]]
|
(fn [[id page]]
|
||||||
|
@ -212,15 +213,17 @@
|
||||||
|
|
||||||
(->> data
|
(->> data
|
||||||
(filter (comp t/pointer? val))
|
(filter (comp t/pointer? val))
|
||||||
(resolve-pointers {})
|
(resolve-pointers id)
|
||||||
(rx/map workspace-data-pointers-loaded))
|
(rx/map workspace-data-pointers-loaded))
|
||||||
|
|
||||||
(->> (rp/cmd! :get-file-libraries {:file-id id :features features})
|
(->> (rp/cmd! :get-file-libraries {:file-id id :features features})
|
||||||
(rx/mapcat identity)
|
(rx/mapcat identity)
|
||||||
(rx/mapcat
|
(rx/mapcat
|
||||||
(fn [file]
|
(fn [{:keys [id data] :as file}]
|
||||||
(->> (filter (comp t/pointer? val) file)
|
(->> (filter (comp t/pointer? val) data)
|
||||||
(resolve-pointers file))))
|
(resolve-pointers id)
|
||||||
|
(rx/map #(update file :data merge %)))))
|
||||||
|
(rx/reduce conj [])
|
||||||
(rx/map libraries-fetched)))))))
|
(rx/map libraries-fetched)))))))
|
||||||
|
|
||||||
(rx/take-until stoper)))))))
|
(rx/take-until stoper)))))))
|
||||||
|
|
|
@ -148,12 +148,7 @@
|
||||||
(->> (rp/cmd! :update-file params)
|
(->> (rp/cmd! :update-file params)
|
||||||
(rx/mapcat (fn [lagged]
|
(rx/mapcat (fn [lagged]
|
||||||
(log/debug :hint "changes persisted" :lagged (count lagged))
|
(log/debug :hint "changes persisted" :lagged (count lagged))
|
||||||
(let [lagged-updates
|
(let [frame-updates
|
||||||
(cond->> lagged
|
|
||||||
(= #{sid} (into #{} (map :session-id) lagged))
|
|
||||||
(map #(assoc % :changes [])))
|
|
||||||
|
|
||||||
frame-updates
|
|
||||||
(-> (group-by :page-id changes)
|
(-> (group-by :page-id changes)
|
||||||
(update-vals #(into #{} (mapcat :frames) %)))]
|
(update-vals #(into #{} (mapcat :frames) %)))]
|
||||||
|
|
||||||
|
@ -162,9 +157,13 @@
|
||||||
(rx/mapcat (fn [[page-id frames]]
|
(rx/mapcat (fn [[page-id frames]]
|
||||||
(->> frames (map #(vector page-id %)))))
|
(->> frames (map #(vector page-id %)))))
|
||||||
(rx/map (fn [[page-id frame-id]] (dwt/update-thumbnail (:id file) page-id frame-id))))
|
(rx/map (fn [[page-id frame-id]] (dwt/update-thumbnail (:id file) page-id frame-id))))
|
||||||
(->> (rx/of lagged-updates)
|
(->> (rx/from lagged)
|
||||||
(rx/mapcat seq)
|
(rx/merge-map (fn [{:keys [changes] :as entry}]
|
||||||
(rx/map #(shapes-changes-persisted file-id %)))))))
|
(rx/merge
|
||||||
|
(rx/from
|
||||||
|
(for [[page-id changes] (group-by :page-id changes)]
|
||||||
|
(dch/update-indices page-id changes)))
|
||||||
|
(rx/of (shapes-changes-persisted file-id entry))))))))))
|
||||||
(rx/catch (fn [cause]
|
(rx/catch (fn [cause]
|
||||||
(rx/concat
|
(rx/concat
|
||||||
(if (= :authentication (:type cause))
|
(if (= :authentication (:type cause))
|
||||||
|
|
|
@ -22,6 +22,7 @@
|
||||||
(derive :get-team-members ::query)
|
(derive :get-team-members ::query)
|
||||||
(derive :get-team-stats ::query)
|
(derive :get-team-stats ::query)
|
||||||
(derive :get-team-invitations ::query)
|
(derive :get-team-invitations ::query)
|
||||||
|
(derive :get-team-shared-files ::query)
|
||||||
|
|
||||||
(defn handle-response
|
(defn handle-response
|
||||||
[{:keys [status body] :as response}]
|
[{:keys [status body] :as response}]
|
||||||
|
|
|
@ -182,7 +182,7 @@
|
||||||
resolved "https://registry.yarnpkg.com/@xmldom/xmldom/-/xmldom-0.7.5.tgz#09fa51e356d07d0be200642b0e4f91d8e6dd408d"
|
resolved "https://registry.yarnpkg.com/@xmldom/xmldom/-/xmldom-0.7.5.tgz#09fa51e356d07d0be200642b0e4f91d8e6dd408d"
|
||||||
integrity sha512-V3BIhmY36fXZ1OtVcI9W+FxQqxVLsPKcNjWigIaa81dLC9IolJl5Mt4Cvhmr0flUnjSpTdrbMTSbXqYqV5dT6A==
|
integrity sha512-V3BIhmY36fXZ1OtVcI9W+FxQqxVLsPKcNjWigIaa81dLC9IolJl5Mt4Cvhmr0flUnjSpTdrbMTSbXqYqV5dT6A==
|
||||||
|
|
||||||
abbrev@1:
|
abbrev@1, abbrev@^1.0.0:
|
||||||
version "1.1.1"
|
version "1.1.1"
|
||||||
resolved "https://registry.yarnpkg.com/abbrev/-/abbrev-1.1.1.tgz#f8f2c887ad10bf67f634f005b6987fed3179aac8"
|
resolved "https://registry.yarnpkg.com/abbrev/-/abbrev-1.1.1.tgz#f8f2c887ad10bf67f634f005b6987fed3179aac8"
|
||||||
integrity sha512-nne9/IiQ/hzIhY6pdDnbBtz7DjPTKrY00P/zvPSm5pOFkl6xuGrGnXn/VtTNNfNtAfZ9/1RtehkszU9qcTii0Q==
|
integrity sha512-nne9/IiQ/hzIhY6pdDnbBtz7DjPTKrY00P/zvPSm5pOFkl6xuGrGnXn/VtTNNfNtAfZ9/1RtehkszU9qcTii0Q==
|
||||||
|
@ -465,13 +465,13 @@ atob@^2.1.2:
|
||||||
resolved "https://registry.yarnpkg.com/atob/-/atob-2.1.2.tgz#6d9517eb9e030d2436666651e86bd9f6f13533c9"
|
resolved "https://registry.yarnpkg.com/atob/-/atob-2.1.2.tgz#6d9517eb9e030d2436666651e86bd9f6f13533c9"
|
||||||
integrity sha512-Wm6ukoaOGJi/73p/cl2GvLjTI5JM1k/O14isD73YML8StrH/7/lRFgmg8nICZgD3bZZvjwCGxtMOD3wWNAu8cg==
|
integrity sha512-Wm6ukoaOGJi/73p/cl2GvLjTI5JM1k/O14isD73YML8StrH/7/lRFgmg8nICZgD3bZZvjwCGxtMOD3wWNAu8cg==
|
||||||
|
|
||||||
autoprefixer@^10.4.7:
|
autoprefixer@^10.4.13:
|
||||||
version "10.4.7"
|
version "10.4.13"
|
||||||
resolved "https://registry.yarnpkg.com/autoprefixer/-/autoprefixer-10.4.7.tgz#1db8d195f41a52ca5069b7593be167618edbbedf"
|
resolved "https://registry.yarnpkg.com/autoprefixer/-/autoprefixer-10.4.13.tgz#b5136b59930209a321e9fa3dca2e7c4d223e83a8"
|
||||||
integrity sha512-ypHju4Y2Oav95SipEcCcI5J7CGPuvz8oat7sUtYj3ClK44bldfvtvcxK6IEK++7rqB7YchDGzweZIBG+SD0ZAA==
|
integrity sha512-49vKpMqcZYsJjwotvt4+h/BCjJVnhGwcLpDt5xkcaOG3eLrG/HUYLagrihYsQ+qrIBgIzX1Rw7a6L8I/ZA1Atg==
|
||||||
dependencies:
|
dependencies:
|
||||||
browserslist "^4.20.3"
|
browserslist "^4.21.4"
|
||||||
caniuse-lite "^1.0.30001335"
|
caniuse-lite "^1.0.30001426"
|
||||||
fraction.js "^4.2.0"
|
fraction.js "^4.2.0"
|
||||||
normalize-range "^0.1.2"
|
normalize-range "^0.1.2"
|
||||||
picocolors "^1.0.0"
|
picocolors "^1.0.0"
|
||||||
|
@ -587,6 +587,13 @@ brace-expansion@^1.1.7:
|
||||||
balanced-match "^1.0.0"
|
balanced-match "^1.0.0"
|
||||||
concat-map "0.0.1"
|
concat-map "0.0.1"
|
||||||
|
|
||||||
|
brace-expansion@^2.0.1:
|
||||||
|
version "2.0.1"
|
||||||
|
resolved "https://registry.yarnpkg.com/brace-expansion/-/brace-expansion-2.0.1.tgz#1edc459e0f0c548486ecf9fc99f2221364b9a0ae"
|
||||||
|
integrity sha512-XnAIvQ8eM+kC6aULx6wuQiwVsnzsi9d3WxzV3FpWTGA19F621kwdbsAcFKXgKUHZWsy+mY6iL1sHTxWEFCytDA==
|
||||||
|
dependencies:
|
||||||
|
balanced-match "^1.0.0"
|
||||||
|
|
||||||
braces@^2.3.1, braces@^2.3.2:
|
braces@^2.3.1, braces@^2.3.2:
|
||||||
version "2.3.2"
|
version "2.3.2"
|
||||||
resolved "https://registry.yarnpkg.com/braces/-/braces-2.3.2.tgz#5979fd3f14cd531565e5fa2df1abfff1dfaee729"
|
resolved "https://registry.yarnpkg.com/braces/-/braces-2.3.2.tgz#5979fd3f14cd531565e5fa2df1abfff1dfaee729"
|
||||||
|
@ -676,15 +683,15 @@ browserify-zlib@^0.2.0:
|
||||||
dependencies:
|
dependencies:
|
||||||
pako "~1.0.5"
|
pako "~1.0.5"
|
||||||
|
|
||||||
browserslist@^4.20.3:
|
browserslist@^4.21.4:
|
||||||
version "4.21.1"
|
version "4.21.4"
|
||||||
resolved "https://registry.yarnpkg.com/browserslist/-/browserslist-4.21.1.tgz#c9b9b0a54c7607e8dc3e01a0d311727188011a00"
|
resolved "https://registry.yarnpkg.com/browserslist/-/browserslist-4.21.4.tgz#e7496bbc67b9e39dd0f98565feccdcb0d4ff6987"
|
||||||
integrity sha512-Nq8MFCSrnJXSc88yliwlzQe3qNe3VntIjhsArW9IJOEPSHNx23FalwApUVbzAWABLhYJJ7y8AynWI/XM8OdfjQ==
|
integrity sha512-CBHJJdDmgjl3daYjN5Cp5kbTf1mUhZoS+beLklHIvkOWscs83YAhLlF3Wsh/lciQYAcbBJgTOD44VtG31ZM4Hw==
|
||||||
dependencies:
|
dependencies:
|
||||||
caniuse-lite "^1.0.30001359"
|
caniuse-lite "^1.0.30001400"
|
||||||
electron-to-chromium "^1.4.172"
|
electron-to-chromium "^1.4.251"
|
||||||
node-releases "^2.0.5"
|
node-releases "^2.0.6"
|
||||||
update-browserslist-db "^1.0.4"
|
update-browserslist-db "^1.0.9"
|
||||||
|
|
||||||
buffer-crc32@~0.2.3:
|
buffer-crc32@~0.2.3:
|
||||||
version "0.2.13"
|
version "0.2.13"
|
||||||
|
@ -771,10 +778,10 @@ camelcase@^5.0.0:
|
||||||
resolved "https://registry.yarnpkg.com/camelcase/-/camelcase-5.3.1.tgz#e3c9b31569e106811df242f715725a1f4c494320"
|
resolved "https://registry.yarnpkg.com/camelcase/-/camelcase-5.3.1.tgz#e3c9b31569e106811df242f715725a1f4c494320"
|
||||||
integrity sha512-L28STB170nwWS63UjtlEOE3dldQApaJXZkOI1uMFfzf3rRuPegHaHesyee+YxQ+W6SvRDQV6UrdOdRiR153wJg==
|
integrity sha512-L28STB170nwWS63UjtlEOE3dldQApaJXZkOI1uMFfzf3rRuPegHaHesyee+YxQ+W6SvRDQV6UrdOdRiR153wJg==
|
||||||
|
|
||||||
caniuse-lite@^1.0.30001335, caniuse-lite@^1.0.30001359:
|
caniuse-lite@^1.0.30001400, caniuse-lite@^1.0.30001426:
|
||||||
version "1.0.30001364"
|
version "1.0.30001441"
|
||||||
resolved "https://registry.yarnpkg.com/caniuse-lite/-/caniuse-lite-1.0.30001364.tgz#1e118f0e933ed2b79f8d461796b8ce45398014a0"
|
resolved "https://registry.yarnpkg.com/caniuse-lite/-/caniuse-lite-1.0.30001441.tgz#987437b266260b640a23cd18fbddb509d7f69f3e"
|
||||||
integrity sha512-9O0xzV3wVyX0SlegIQ6knz+okhBB5pE0PC40MNdwcipjwpxoUEHL24uJ+gG42cgklPjfO5ZjZPme9FTSN3QT2Q==
|
integrity sha512-OyxRR4Vof59I3yGWXws6i908EtGbMzVUi3ganaZQHmydk1iwDhRnvaPG2WaR0KcqrDFKrxVZHULT396LEPhXfg==
|
||||||
|
|
||||||
caseless@~0.12.0:
|
caseless@~0.12.0:
|
||||||
version "0.12.0"
|
version "0.12.0"
|
||||||
|
@ -1364,10 +1371,10 @@ dashdash@^1.12.0:
|
||||||
dependencies:
|
dependencies:
|
||||||
assert-plus "^1.0.0"
|
assert-plus "^1.0.0"
|
||||||
|
|
||||||
date-fns@^2.28.0:
|
date-fns@^2.29.3:
|
||||||
version "2.28.0"
|
version "2.29.3"
|
||||||
resolved "https://registry.yarnpkg.com/date-fns/-/date-fns-2.28.0.tgz#9570d656f5fc13143e50c975a3b6bbeb46cd08b2"
|
resolved "https://registry.yarnpkg.com/date-fns/-/date-fns-2.29.3.tgz#27402d2fc67eb442b511b70bbdf98e6411cd68a8"
|
||||||
integrity sha512-8d35hViGYx/QH0icHYCeLmsLmMUheMmTyV9Fcm6gvNwdw31yXXH+O85sOBJ+OLnLQMKZowvpKb6FgMIQjcpvQw==
|
integrity sha512-dDCnyH2WnnKusqvZZ6+jA1O51Ibt8ZMRNkDZdyAyK4YfbDwa/cEmuztzG5pk6hqlp9aSBPYcjOlktquahGwGeA==
|
||||||
|
|
||||||
dayjs@^1.10.4:
|
dayjs@^1.10.4:
|
||||||
version "1.10.7"
|
version "1.10.7"
|
||||||
|
@ -1571,10 +1578,10 @@ editorconfig@^0.15.3:
|
||||||
semver "^5.6.0"
|
semver "^5.6.0"
|
||||||
sigmund "^1.0.1"
|
sigmund "^1.0.1"
|
||||||
|
|
||||||
electron-to-chromium@^1.4.172:
|
electron-to-chromium@^1.4.251:
|
||||||
version "1.4.185"
|
version "1.4.284"
|
||||||
resolved "https://registry.yarnpkg.com/electron-to-chromium/-/electron-to-chromium-1.4.185.tgz#3432d7944f1c5fe20664bb45d9cced2151405ce2"
|
resolved "https://registry.yarnpkg.com/electron-to-chromium/-/electron-to-chromium-1.4.284.tgz#61046d1e4cab3a25238f6bf7413795270f125592"
|
||||||
integrity sha512-9kV/isoOGpKkBt04yYNaSWIBn3187Q5VZRtoReq8oz5NY/A4XmU6cAoqgQlDp7kKJCZMRjWZ8nsQyxfpFHvfyw==
|
integrity sha512-M8WEXFuKXMYMVr45fo8mq0wUrrJHheiKZf6BArTKk9ZBYCKJEOU5H8cdWgDT+qCVZf7Na4lVUaZsA+h6uA9+PA==
|
||||||
|
|
||||||
elliptic@^6.5.3:
|
elliptic@^6.5.3:
|
||||||
version "6.5.4"
|
version "6.5.4"
|
||||||
|
@ -2225,6 +2232,17 @@ glob@^7.1.1, glob@^7.1.3, glob@^7.2.0:
|
||||||
once "^1.3.0"
|
once "^1.3.0"
|
||||||
path-is-absolute "^1.0.0"
|
path-is-absolute "^1.0.0"
|
||||||
|
|
||||||
|
glob@^8.0.3:
|
||||||
|
version "8.0.3"
|
||||||
|
resolved "https://registry.yarnpkg.com/glob/-/glob-8.0.3.tgz#415c6eb2deed9e502c68fa44a272e6da6eeca42e"
|
||||||
|
integrity sha512-ull455NHSHI/Y1FqGaaYFaLGkNMMJbavMrEGFXG/PGrg6y7sutWHUHrz6gy6WEBH6akM1M414dWKCNs+IhKdiQ==
|
||||||
|
dependencies:
|
||||||
|
fs.realpath "^1.0.0"
|
||||||
|
inflight "^1.0.4"
|
||||||
|
inherits "2"
|
||||||
|
minimatch "^5.0.1"
|
||||||
|
once "^1.3.0"
|
||||||
|
|
||||||
global-dirs@^3.0.0:
|
global-dirs@^3.0.0:
|
||||||
version "3.0.0"
|
version "3.0.0"
|
||||||
resolved "https://registry.yarnpkg.com/global-dirs/-/global-dirs-3.0.0.tgz#70a76fe84ea315ab37b1f5576cbde7d48ef72686"
|
resolved "https://registry.yarnpkg.com/global-dirs/-/global-dirs-3.0.0.tgz#70a76fe84ea315ab37b1f5576cbde7d48ef72686"
|
||||||
|
@ -2493,10 +2511,10 @@ hasha@^2.2.0:
|
||||||
is-stream "^1.0.1"
|
is-stream "^1.0.1"
|
||||||
pinkie-promise "^2.0.0"
|
pinkie-promise "^2.0.0"
|
||||||
|
|
||||||
highlight.js@^11.6.0:
|
highlight.js@^11.7.0:
|
||||||
version "11.6.0"
|
version "11.7.0"
|
||||||
resolved "https://registry.yarnpkg.com/highlight.js/-/highlight.js-11.6.0.tgz#a50e9da05763f1bb0c1322c8f4f755242cff3f5a"
|
resolved "https://registry.yarnpkg.com/highlight.js/-/highlight.js-11.7.0.tgz#3ff0165bc843f8c9bce1fd89e2fda9143d24b11e"
|
||||||
integrity sha512-ig1eqDzJaB0pqEvlPVIpSSyMaO92bH1N2rJpLMN/nX396wTpDA4Eq0uK+7I/2XG17pFaaKE0kjV/XPeGt7Evjw==
|
integrity sha512-1rRqesRFhMO/PRF+G86evnyJkCgaZFOI+Z6kdj15TA18funfoqJXvgPCLSf0SWq3SRfg1j3HlDs8o4s3EGq1oQ==
|
||||||
|
|
||||||
hmac-drbg@^1.0.1:
|
hmac-drbg@^1.0.1:
|
||||||
version "1.0.1"
|
version "1.0.1"
|
||||||
|
@ -2977,15 +2995,15 @@ isstream@~0.1.2:
|
||||||
resolved "https://registry.yarnpkg.com/isstream/-/isstream-0.1.2.tgz#47e63f7af55afa6f92e1500e690eb8b8529c099a"
|
resolved "https://registry.yarnpkg.com/isstream/-/isstream-0.1.2.tgz#47e63f7af55afa6f92e1500e690eb8b8529c099a"
|
||||||
integrity sha1-R+Y/evVa+m+S4VAOaQ64uFKcCZo=
|
integrity sha1-R+Y/evVa+m+S4VAOaQ64uFKcCZo=
|
||||||
|
|
||||||
js-beautify@^1.14.4:
|
js-beautify@^1.14.7:
|
||||||
version "1.14.4"
|
version "1.14.7"
|
||||||
resolved "https://registry.yarnpkg.com/js-beautify/-/js-beautify-1.14.4.tgz#187d600a835f84de67a6d09ceaf3f199b7284c82"
|
resolved "https://registry.yarnpkg.com/js-beautify/-/js-beautify-1.14.7.tgz#9206296de33f86dc106d3e50a35b7cf8729703b2"
|
||||||
integrity sha512-+b4A9c3glceZEmxyIbxDOYB0ZJdReLvyU1077RqKsO4dZx9FUHjTOJn8VHwpg33QoucIykOiYbh7MfqBOghnrA==
|
integrity sha512-5SOX1KXPFKx+5f6ZrPsIPEY7NwKeQz47n3jm2i+XeHx9MoRsfQenlOP13FQhWvg8JRS0+XLO6XYUQ2GX+q+T9A==
|
||||||
dependencies:
|
dependencies:
|
||||||
config-chain "^1.1.13"
|
config-chain "^1.1.13"
|
||||||
editorconfig "^0.15.3"
|
editorconfig "^0.15.3"
|
||||||
glob "^7.1.3"
|
glob "^8.0.3"
|
||||||
nopt "^5.0.0"
|
nopt "^6.0.0"
|
||||||
|
|
||||||
"js-tokens@^3.0.0 || ^4.0.0":
|
"js-tokens@^3.0.0 || ^4.0.0":
|
||||||
version "4.0.0"
|
version "4.0.0"
|
||||||
|
@ -3066,10 +3084,10 @@ jsprim@^2.0.2:
|
||||||
json-schema "0.4.0"
|
json-schema "0.4.0"
|
||||||
verror "1.10.0"
|
verror "1.10.0"
|
||||||
|
|
||||||
jszip@^3.10.0:
|
jszip@^3.10.1:
|
||||||
version "3.10.0"
|
version "3.10.1"
|
||||||
resolved "https://registry.yarnpkg.com/jszip/-/jszip-3.10.0.tgz#faf3db2b4b8515425e34effcdbb086750a346061"
|
resolved "https://registry.yarnpkg.com/jszip/-/jszip-3.10.1.tgz#34aee70eb18ea1faec2f589208a157d1feb091c2"
|
||||||
integrity sha512-LDfVtOLtOxb9RXkYOwPyNBTQDL4eUbqahtoY6x07GiDJHwSYvn8sHHIw8wINImV3MqbMNve2gSuM1DDqEKk09Q==
|
integrity sha512-xXDvecyTpGLrqFrvkrUSoxxfJI5AH7U8zxxtVclpsUtMCq4JQ290LY8AW5c7Ggnr/Y/oK+bQMbqK2qmtk3pN4g==
|
||||||
dependencies:
|
dependencies:
|
||||||
lie "~3.3.0"
|
lie "~3.3.0"
|
||||||
pako "~1.0.2"
|
pako "~1.0.2"
|
||||||
|
@ -3297,10 +3315,10 @@ lru-queue@^0.1.0:
|
||||||
dependencies:
|
dependencies:
|
||||||
es5-ext "~0.10.2"
|
es5-ext "~0.10.2"
|
||||||
|
|
||||||
luxon@^3.0.1:
|
luxon@^3.1.1:
|
||||||
version "3.0.1"
|
version "3.1.1"
|
||||||
resolved "https://registry.yarnpkg.com/luxon/-/luxon-3.0.1.tgz#6901111d10ad06fd267ad4e4128a84bef8a77299"
|
resolved "https://registry.yarnpkg.com/luxon/-/luxon-3.1.1.tgz#b492c645b2474fb86f3bd3283213846b99c32c1e"
|
||||||
integrity sha512-hF3kv0e5gwHQZKz4wtm4c+inDtyc7elkanAsBq+fundaCdUBNJB1dHEGUZIM6SfSBUlbVFduPwEtNjFK8wLtcw==
|
integrity sha512-Ah6DloGmvseB/pX1cAmjbFvyU/pKuwQMQqz7d0yvuDlVYLTs2WeDHQMpC8tGjm1da+BriHROW/OEIT/KfYg6xw==
|
||||||
|
|
||||||
make-iterator@^1.0.0:
|
make-iterator@^1.0.0:
|
||||||
version "1.0.1"
|
version "1.0.1"
|
||||||
|
@ -3326,10 +3344,10 @@ map-visit@^1.0.0:
|
||||||
dependencies:
|
dependencies:
|
||||||
object-visit "^1.0.0"
|
object-visit "^1.0.0"
|
||||||
|
|
||||||
marked@^4.0.17:
|
marked@^4.2.5:
|
||||||
version "4.0.17"
|
version "4.2.5"
|
||||||
resolved "https://registry.yarnpkg.com/marked/-/marked-4.0.17.tgz#1186193d85bb7882159cdcfc57d1dfccaffb3fe9"
|
resolved "https://registry.yarnpkg.com/marked/-/marked-4.2.5.tgz#979813dfc1252cc123a79b71b095759a32f42a5d"
|
||||||
integrity sha512-Wfk0ATOK5iPxM4ptrORkFemqroz0ZDxp5MWfYA7H/F+wO17NRWV5Ypxi6p3g2Xmw2bKeiYOl6oVnLHKxBA0VhA==
|
integrity sha512-jPueVhumq7idETHkb203WDD4fMA3yV9emQ5vLwop58lu8bTclMghBWcYAavlDqIEMaisADinV1TooIFCfqOsYQ==
|
||||||
|
|
||||||
matchdep@^2.0.0:
|
matchdep@^2.0.0:
|
||||||
version "2.0.0"
|
version "2.0.0"
|
||||||
|
@ -3438,13 +3456,20 @@ minimalistic-crypto-utils@^1.0.1:
|
||||||
resolved "https://registry.yarnpkg.com/minimalistic-crypto-utils/-/minimalistic-crypto-utils-1.0.1.tgz#f6c00c1c0b082246e5c4d99dfb8c7c083b2b582a"
|
resolved "https://registry.yarnpkg.com/minimalistic-crypto-utils/-/minimalistic-crypto-utils-1.0.1.tgz#f6c00c1c0b082246e5c4d99dfb8c7c083b2b582a"
|
||||||
integrity sha1-9sAMHAsIIkblxNmd+4x8CDsrWCo=
|
integrity sha1-9sAMHAsIIkblxNmd+4x8CDsrWCo=
|
||||||
|
|
||||||
minimatch@^3.0.4:
|
minimatch@^3.0.4, minimatch@^3.1.2:
|
||||||
version "3.1.2"
|
version "3.1.2"
|
||||||
resolved "https://registry.yarnpkg.com/minimatch/-/minimatch-3.1.2.tgz#19cd194bfd3e428f049a70817c038d89ab4be35b"
|
resolved "https://registry.yarnpkg.com/minimatch/-/minimatch-3.1.2.tgz#19cd194bfd3e428f049a70817c038d89ab4be35b"
|
||||||
integrity sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==
|
integrity sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==
|
||||||
dependencies:
|
dependencies:
|
||||||
brace-expansion "^1.1.7"
|
brace-expansion "^1.1.7"
|
||||||
|
|
||||||
|
minimatch@^5.0.1:
|
||||||
|
version "5.1.2"
|
||||||
|
resolved "https://registry.yarnpkg.com/minimatch/-/minimatch-5.1.2.tgz#0939d7d6f0898acbd1508abe534d1929368a8fff"
|
||||||
|
integrity sha512-bNH9mmM9qsJ2X4r2Nat1B//1dJVcn3+iBLa3IgqJ7EbGaDNepL9QSHOxN4ng33s52VMMhhIfgCYDk3C4ZmlDAg==
|
||||||
|
dependencies:
|
||||||
|
brace-expansion "^2.0.1"
|
||||||
|
|
||||||
minimist@^1.2.5:
|
minimist@^1.2.5:
|
||||||
version "1.2.5"
|
version "1.2.5"
|
||||||
resolved "https://registry.yarnpkg.com/minimist/-/minimist-1.2.5.tgz#67d66014b66a6a8aaa0c083c5fd58df4e4e97602"
|
resolved "https://registry.yarnpkg.com/minimist/-/minimist-1.2.5.tgz#67d66014b66a6a8aaa0c083c5fd58df4e4e97602"
|
||||||
|
@ -3583,20 +3608,20 @@ node-libs-browser@^2.2.1:
|
||||||
util "^0.11.0"
|
util "^0.11.0"
|
||||||
vm-browserify "^1.0.1"
|
vm-browserify "^1.0.1"
|
||||||
|
|
||||||
node-releases@^2.0.5:
|
node-releases@^2.0.6:
|
||||||
version "2.0.6"
|
version "2.0.8"
|
||||||
resolved "https://registry.yarnpkg.com/node-releases/-/node-releases-2.0.6.tgz#8a7088c63a55e493845683ebf3c828d8c51c5503"
|
resolved "https://registry.yarnpkg.com/node-releases/-/node-releases-2.0.8.tgz#0f349cdc8fcfa39a92ac0be9bc48b7706292b9ae"
|
||||||
integrity sha512-PiVXnNuFm5+iYkLBNeq5211hvO38y63T0i2KKh2KnUs3RpzJ+JtODFjkD8yjLwnDkTYF1eKXheUwdssR+NRZdg==
|
integrity sha512-dFSmB8fFHEH/s81Xi+Y/15DQY6VHW81nXRj86EMSL3lmuTmK1e+aT4wrFCkTbm+gSwkw4KpX+rT/pMM2c1mF+A==
|
||||||
|
|
||||||
nodemon@^2.0.19:
|
nodemon@^2.0.20:
|
||||||
version "2.0.19"
|
version "2.0.20"
|
||||||
resolved "https://registry.yarnpkg.com/nodemon/-/nodemon-2.0.19.tgz#cac175f74b9cb8b57e770d47841995eebe4488bd"
|
resolved "https://registry.yarnpkg.com/nodemon/-/nodemon-2.0.20.tgz#e3537de768a492e8d74da5c5813cb0c7486fc701"
|
||||||
integrity sha512-4pv1f2bMDj0Eeg/MhGqxrtveeQ5/G/UVe9iO6uTZzjnRluSA4PVWf8CW99LUPwGB3eNIA7zUFoP77YuI7hOc0A==
|
integrity sha512-Km2mWHKKY5GzRg6i1j5OxOHQtuvVsgskLfigG25yTtbyfRGn/GNvIbRyOf1PSCKJ2aT/58TiuUsuOU5UToVViw==
|
||||||
dependencies:
|
dependencies:
|
||||||
chokidar "^3.5.2"
|
chokidar "^3.5.2"
|
||||||
debug "^3.2.7"
|
debug "^3.2.7"
|
||||||
ignore-by-default "^1.0.1"
|
ignore-by-default "^1.0.1"
|
||||||
minimatch "^3.0.4"
|
minimatch "^3.1.2"
|
||||||
pstree.remy "^1.1.8"
|
pstree.remy "^1.1.8"
|
||||||
semver "^5.7.1"
|
semver "^5.7.1"
|
||||||
simple-update-notifier "^1.0.7"
|
simple-update-notifier "^1.0.7"
|
||||||
|
@ -3604,12 +3629,12 @@ nodemon@^2.0.19:
|
||||||
touch "^3.1.0"
|
touch "^3.1.0"
|
||||||
undefsafe "^2.0.5"
|
undefsafe "^2.0.5"
|
||||||
|
|
||||||
nopt@^5.0.0:
|
nopt@^6.0.0:
|
||||||
version "5.0.0"
|
version "6.0.0"
|
||||||
resolved "https://registry.yarnpkg.com/nopt/-/nopt-5.0.0.tgz#530942bb58a512fccafe53fe210f13a25355dc88"
|
resolved "https://registry.yarnpkg.com/nopt/-/nopt-6.0.0.tgz#245801d8ebf409c6df22ab9d95b65e1309cdb16d"
|
||||||
integrity sha512-Tbj67rffqceeLpcRXrT7vKAN8CwfPeIBgM7E6iBkmKLV7bEMwpGgYLGv0jACUsECaa/vuxP0IjEont6umdMgtQ==
|
integrity sha512-ZwLpbTgdhuZUnZzjd7nb1ZV+4DoiC6/sfiVKok72ym/4Tlf+DFdlHYmT2JPmcNNWV6Pi3SDf1kT+A4r9RTuT9g==
|
||||||
dependencies:
|
dependencies:
|
||||||
abbrev "1"
|
abbrev "^1.0.0"
|
||||||
|
|
||||||
nopt@~1.0.10:
|
nopt@~1.0.10:
|
||||||
version "1.0.10"
|
version "1.0.10"
|
||||||
|
@ -4118,19 +4143,19 @@ postcss@^7.0.16:
|
||||||
picocolors "^0.2.1"
|
picocolors "^0.2.1"
|
||||||
source-map "^0.6.1"
|
source-map "^0.6.1"
|
||||||
|
|
||||||
postcss@^8.4.14:
|
postcss@^8.4.20:
|
||||||
version "8.4.14"
|
version "8.4.20"
|
||||||
resolved "https://registry.yarnpkg.com/postcss/-/postcss-8.4.14.tgz#ee9274d5622b4858c1007a74d76e42e56fd21caf"
|
resolved "https://registry.yarnpkg.com/postcss/-/postcss-8.4.20.tgz#64c52f509644cecad8567e949f4081d98349dc56"
|
||||||
integrity sha512-E398TUmfAYFPBSdzgeieK2Y1+1cpdxJx8yXbK/m57nRhKSmk1GB2tO4lbLBtlkfPQTDKfe4Xqv1ASWPpayPEig==
|
integrity sha512-6Q04AXR1212bXr5fh03u8aAwbLxAQNGQ/Q1LNa0VfOI06ZAlhPHtQvE4OIdpj4kLThXilalPnmDSOD65DcHt+g==
|
||||||
dependencies:
|
dependencies:
|
||||||
nanoid "^3.3.4"
|
nanoid "^3.3.4"
|
||||||
picocolors "^1.0.0"
|
picocolors "^1.0.0"
|
||||||
source-map-js "^1.0.2"
|
source-map-js "^1.0.2"
|
||||||
|
|
||||||
prettier@^2.7.1:
|
prettier@^2.8.1:
|
||||||
version "2.7.1"
|
version "2.8.1"
|
||||||
resolved "https://registry.yarnpkg.com/prettier/-/prettier-2.7.1.tgz#e235806850d057f97bb08368a4f7d899f7760c64"
|
resolved "https://registry.yarnpkg.com/prettier/-/prettier-2.8.1.tgz#4e1fd11c34e2421bc1da9aea9bd8127cd0a35efc"
|
||||||
integrity sha512-ujppO+MkdPqoVINuDFDRLClm7D78qbDt0/NR+wp5FqEZOoTNAjPHWj17QRhu7geIHJfcNhRk1XVQmF8Bp3ye+g==
|
integrity sha512-lqGoSJBQNJidqCHE80vqZJHWHRFoNYsSpP9AjFhlhi9ODCJA541svILes/+/1GM3VaL/abZi7cpFzOpdR9UPKg==
|
||||||
|
|
||||||
pretty-bytes@^5.6.0:
|
pretty-bytes@^5.6.0:
|
||||||
version "5.6.0"
|
version "5.6.0"
|
||||||
|
@ -4598,10 +4623,10 @@ rxjs@^7.5.1:
|
||||||
dependencies:
|
dependencies:
|
||||||
tslib "^2.1.0"
|
tslib "^2.1.0"
|
||||||
|
|
||||||
rxjs@~7.5.5:
|
rxjs@~7.8.0:
|
||||||
version "7.5.5"
|
version "7.8.0"
|
||||||
resolved "https://registry.yarnpkg.com/rxjs/-/rxjs-7.5.5.tgz#2ebad89af0f560f460ad5cc4213219e1f7dd4e9f"
|
resolved "https://registry.yarnpkg.com/rxjs/-/rxjs-7.8.0.tgz#90a938862a82888ff4c7359811a595e14e1e09a4"
|
||||||
integrity sha512-sy+H0pQofO95VDmFLzyaw9xNJU4KTRSwQIGM6+iG3SypAtCiLDzpeG8sJrNCWn2Up9km+KhkvTdbkrdy+yzZdw==
|
integrity sha512-F2+gxDshqmIub1KdvZkaEfGDwLNpPvk9Fs6LD/MyQxNgMds/WH9OdDDXOmxUZpME+iSK3rQCctkL0DYyytUqMg==
|
||||||
dependencies:
|
dependencies:
|
||||||
tslib "^2.1.0"
|
tslib "^2.1.0"
|
||||||
|
|
||||||
|
@ -4632,10 +4657,10 @@ safe-stable-stringify@^2.3.1:
|
||||||
resolved "https://registry.yarnpkg.com/safer-buffer/-/safer-buffer-2.1.2.tgz#44fa161b0187b9549dd84bb91802f9bd8385cd6a"
|
resolved "https://registry.yarnpkg.com/safer-buffer/-/safer-buffer-2.1.2.tgz#44fa161b0187b9549dd84bb91802f9bd8385cd6a"
|
||||||
integrity sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg==
|
integrity sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg==
|
||||||
|
|
||||||
sass@^1.53.0:
|
sass@^1.57.1:
|
||||||
version "1.54.0"
|
version "1.57.1"
|
||||||
resolved "https://registry.yarnpkg.com/sass/-/sass-1.54.0.tgz#24873673265e2a4fe3d3a997f714971db2fba1f4"
|
resolved "https://registry.yarnpkg.com/sass/-/sass-1.57.1.tgz#dfafd46eb3ab94817145e8825208ecf7281119b5"
|
||||||
integrity sha512-C4zp79GCXZfK0yoHZg+GxF818/aclhp9F48XBu/+bm9vXEVAYov9iU3FBVRMq3Hx3OA4jfKL+p2K9180mEh0xQ==
|
integrity sha512-O2+LwLS79op7GI0xZ8fqzF7X2m/m8WFfI02dHOdsK5R2ECeS5F62zrwg/relM1rjSLy7Vd/DiMNIvPrQGsA0jw==
|
||||||
dependencies:
|
dependencies:
|
||||||
chokidar ">=3.0.0 <4.0.0"
|
chokidar ">=3.0.0 <4.0.0"
|
||||||
immutable "^4.0.0"
|
immutable "^4.0.0"
|
||||||
|
@ -4711,10 +4736,10 @@ shadow-cljs-jar@1.3.2:
|
||||||
resolved "https://registry.yarnpkg.com/shadow-cljs-jar/-/shadow-cljs-jar-1.3.2.tgz#97273afe1747b6a2311917c1c88d9e243c81957b"
|
resolved "https://registry.yarnpkg.com/shadow-cljs-jar/-/shadow-cljs-jar-1.3.2.tgz#97273afe1747b6a2311917c1c88d9e243c81957b"
|
||||||
integrity sha512-XmeffAZHv8z7451kzeq9oKh8fh278Ak+UIOGGrapyqrFBB773xN8vMQ3O7J7TYLnb9BUwcqadKkmgaq7q6fhZg==
|
integrity sha512-XmeffAZHv8z7451kzeq9oKh8fh278Ak+UIOGGrapyqrFBB773xN8vMQ3O7J7TYLnb9BUwcqadKkmgaq7q6fhZg==
|
||||||
|
|
||||||
shadow-cljs@2.20.2:
|
shadow-cljs@2.20.16:
|
||||||
version "2.20.2"
|
version "2.20.16"
|
||||||
resolved "https://registry.yarnpkg.com/shadow-cljs/-/shadow-cljs-2.20.2.tgz#24a4b204f1f2288dc4ff2d0a4f3972a6e5307645"
|
resolved "https://registry.yarnpkg.com/shadow-cljs/-/shadow-cljs-2.20.16.tgz#32e83586fcc91a246b7fb622349135ad84ca1a19"
|
||||||
integrity sha512-2kzWnV1QM6KBetziCAkCf8BJdnDX2CwiAr4yhvOsiQpaNJcMzwMsJTX/gTHz58yQg0dV5uwPsIyBlvyIfl30rg==
|
integrity sha512-k33ssZppDkBSYIfKswiKOX/8bNTnHbHoTmwf3KBPXBQkDPptPR3FeedmWtS5vKWnucFTe9DObhM2exKocErIxw==
|
||||||
dependencies:
|
dependencies:
|
||||||
node-libs-browser "^2.2.1"
|
node-libs-browser "^2.2.1"
|
||||||
readline-sync "^1.4.7"
|
readline-sync "^1.4.7"
|
||||||
|
@ -5380,10 +5405,10 @@ ua-parser-js@^0.7.18:
|
||||||
resolved "https://registry.yarnpkg.com/ua-parser-js/-/ua-parser-js-0.7.31.tgz#649a656b191dffab4f21d5e053e27ca17cbff5c6"
|
resolved "https://registry.yarnpkg.com/ua-parser-js/-/ua-parser-js-0.7.31.tgz#649a656b191dffab4f21d5e053e27ca17cbff5c6"
|
||||||
integrity sha512-qLK/Xe9E2uzmYI3qLeOmI0tEOt+TBBQyUIAh4aAgU05FVYzeZrKUdkAZfBNVGRaHVgV0TDkdEngJSw/SyQchkQ==
|
integrity sha512-qLK/Xe9E2uzmYI3qLeOmI0tEOt+TBBQyUIAh4aAgU05FVYzeZrKUdkAZfBNVGRaHVgV0TDkdEngJSw/SyQchkQ==
|
||||||
|
|
||||||
ua-parser-js@^1.0.2:
|
ua-parser-js@^1.0.32:
|
||||||
version "1.0.2"
|
version "1.0.32"
|
||||||
resolved "https://registry.yarnpkg.com/ua-parser-js/-/ua-parser-js-1.0.2.tgz#e2976c34dbfb30b15d2c300b2a53eac87c57a775"
|
resolved "https://registry.yarnpkg.com/ua-parser-js/-/ua-parser-js-1.0.32.tgz#786bf17df97de159d5b1c9d5e8e9e89806f8a030"
|
||||||
integrity sha512-00y/AXhx0/SsnI51fTc0rLRmafiGOM4/O+ny10Ps7f+j/b8p/ZY11ytMgznXkOVo4GQ+KwQG5UQLkLGirsACRg==
|
integrity sha512-dXVsz3M4j+5tTiovFVyVqssXBu5HM47//YSOeZ9fQkdDKkfzv2v3PP1jmH6FUyPW+yCSn7aBVK1fGGKNhowdDA==
|
||||||
|
|
||||||
unbox-primitive@^1.0.1:
|
unbox-primitive@^1.0.1:
|
||||||
version "1.0.1"
|
version "1.0.1"
|
||||||
|
@ -5472,10 +5497,10 @@ upath@^1.1.1:
|
||||||
resolved "https://registry.yarnpkg.com/upath/-/upath-1.2.0.tgz#8f66dbcd55a883acdae4408af8b035a5044c1894"
|
resolved "https://registry.yarnpkg.com/upath/-/upath-1.2.0.tgz#8f66dbcd55a883acdae4408af8b035a5044c1894"
|
||||||
integrity sha512-aZwGpamFO61g3OlfT7OQCHqhGnW43ieH9WZeP7QxN/G/jS4jfqUkZxoryvJgVPEcrl5NL/ggHsSmLMHuH64Lhg==
|
integrity sha512-aZwGpamFO61g3OlfT7OQCHqhGnW43ieH9WZeP7QxN/G/jS4jfqUkZxoryvJgVPEcrl5NL/ggHsSmLMHuH64Lhg==
|
||||||
|
|
||||||
update-browserslist-db@^1.0.4:
|
update-browserslist-db@^1.0.9:
|
||||||
version "1.0.4"
|
version "1.0.10"
|
||||||
resolved "https://registry.yarnpkg.com/update-browserslist-db/-/update-browserslist-db-1.0.4.tgz#dbfc5a789caa26b1db8990796c2c8ebbce304824"
|
resolved "https://registry.yarnpkg.com/update-browserslist-db/-/update-browserslist-db-1.0.10.tgz#0f54b876545726f17d00cd9a2561e6dade943ff3"
|
||||||
integrity sha512-jnmO2BEGUjsMOe/Fg9u0oczOe/ppIDZPebzccl1yDWGLFP16Pa1/RM5wEoKYPG2zstNcDuAStejyxsOuKINdGA==
|
integrity sha512-OztqDenkfFkbSG+tRxBeAnCVPckDBcvibKd35yDONx6OU8N7sqgwc7rCbkJ/WcYtVRZ4ba68d6byhC21GFh7sQ==
|
||||||
dependencies:
|
dependencies:
|
||||||
escalade "^3.1.1"
|
escalade "^3.1.1"
|
||||||
picocolors "^1.0.0"
|
picocolors "^1.0.0"
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue