mirror of
https://github.com/taoensso/telemere.git
synced 2025-12-17 01:51:10 +00:00
[new] Add & opts support to signal!, signal-allowed?
This commit is contained in:
parent
8cd4ca97e6
commit
a04f255146
1 changed files with 209 additions and 209 deletions
|
|
@ -384,14 +384,16 @@
|
|||
(case macro-id
|
||||
|
||||
:signal! ; opts => allowed? / unconditional run result (value or throw)
|
||||
'([{:as opts-map :keys
|
||||
'( [& opts-kvs]
|
||||
[{:as opts-map :keys
|
||||
[#_defaults #_elide? #_allow? #_expansion-id, ; Undocumented
|
||||
elidable? location #_location* inst uid middleware middleware+,
|
||||
sample-rate kind ns id level when rate-limit rate-limit-by,
|
||||
ctx ctx+ parent root trace?, do let data msg error run & kvs]}])
|
||||
|
||||
:signal-allowed? ; opts => allowed?
|
||||
'([{:as opts-map :keys
|
||||
'( [& opts-kvs]
|
||||
[{:as opts-map :keys
|
||||
[#_defaults #_elide? #_allow? #_expansion-id, ; Undocumented
|
||||
elidable? location #_location* #_inst #_uid #_middleware #_middleware+,
|
||||
sample-rate kind ns id level when rate-limit rate-limit-by,
|
||||
|
|
@ -493,7 +495,8 @@
|
|||
|
||||
#?(:clj
|
||||
(defn- valid-opts! [x]
|
||||
(when-not (map? x)
|
||||
(if (map? x)
|
||||
(do x)
|
||||
(throw
|
||||
;; We require const map keys, but vals may require eval
|
||||
(ex-info "Telemere signal opts must be a map with const (compile-time) keys."
|
||||
|
|
@ -505,13 +508,9 @@
|
|||
"Generic low-level signal call, also aliased in Encore."
|
||||
{:doc (signal-docstring :signal!)
|
||||
:arglists (signal-arglists :signal!)}
|
||||
|
||||
;; TODO Maybe later, once we're sure we don't want additional arities?
|
||||
;; Remember to also update signal-arglists, etc.
|
||||
;; ([arg1 & more] (enc/keep-callsite `(signal! ~(apply hash-map arg1 more))))
|
||||
([opts]
|
||||
(valid-opts! opts)
|
||||
(let [defaults (enc/merge {:kind :generic, :level :info} (get opts :defaults))
|
||||
[arg1 & more]
|
||||
(let [opts (valid-opts! (if more (apply hash-map arg1 more) arg1))
|
||||
defaults (enc/merge {:kind :generic, :level :info} (get opts :defaults))
|
||||
opts (enc/merge defaults (dissoc opts :defaults))
|
||||
cljs? (boolean (:ns &env))
|
||||
clj? (not cljs?)
|
||||
|
|
@ -740,7 +739,7 @@
|
|||
(if-let [iife-wrap? true #_cljs?]
|
||||
;; Small perf hit to improve compatibility within `go` and other IOC-style bodies
|
||||
`((fn [] ~final-form))
|
||||
(do final-form))))))))
|
||||
(do final-form)))))))
|
||||
|
||||
(comment
|
||||
(with-signal (signal! {:level :warn :let [x :x] :msg ["Test" "message" x] :data {:a :A :x x} :run (+ 1 2)}))
|
||||
|
|
@ -768,9 +767,10 @@
|
|||
|
||||
;; Used also for interop (tools.logging, SLF4J), etc.
|
||||
{:arglists (signal-arglists :signal-allowed?)}
|
||||
[opts]
|
||||
(valid-opts! opts)
|
||||
(let [defaults (get opts :defaults)
|
||||
[arg1 & more]
|
||||
(let [opts (valid-opts! (if more (apply hash-map arg1 more) arg1))
|
||||
|
||||
defaults (get opts :defaults)
|
||||
opts (merge defaults (dissoc opts :defaults))
|
||||
|
||||
{:keys [#_expansion-id #_location elide? allow?]}
|
||||
|
|
|
|||
Loading…
Reference in a new issue