|
693 | 693 | (defn- route-args? [arg] |
694 | 694 | (not= arg [])) |
695 | 695 |
|
| 696 | +(defn- resolve-var [&env sym] |
| 697 | + (when (symbol? sym) |
| 698 | + (let [v (resolve &env sym)] |
| 699 | + (when (var? v) |
| 700 | + v)))) |
| 701 | + |
696 | 702 | (def endpoint-vars (into #{} |
697 | 703 | (mapcat (fn [n] |
698 | 704 | (map #(symbol (name %) (name n)) |
|
759 | 765 | (defn- static-middleware? [&env body] |
760 | 766 | (and (seq? body) |
761 | 767 | (boolean |
762 | | - (let [sym (first body)] |
763 | | - (when (symbol? sym) |
764 | | - (when-some [v (resolve &env sym)] |
765 | | - (when (var? v) |
766 | | - (when (middleware-vars (var->sym v)) |
767 | | - (let [[_ path route-arg & args] body |
768 | | - [options body] (extract-parameters args true)] |
769 | | - (static-body? &env body)))))))))) |
| 768 | + (when-some [v (resolve-var &env (first body))] |
| 769 | + (when (middleware-vars (var->sym v)) |
| 770 | + (let [[_ mid & body] body] |
| 771 | + (and (static-form? &env mid) |
| 772 | + (static-body? &env body)))))))) |
770 | 773 |
|
771 | 774 | (def route-middleware-vars (into #{} |
772 | 775 | (mapcat (fn [n] |
|
803 | 806 | (= sym 'if)) |
804 | 807 | (static-body? &env (next form))))))))) |
805 | 808 |
|
806 | | -(defn- resolve-var [&env sym] |
807 | | - (when (symbol? sym) |
808 | | - (let [v (resolve &env sym)] |
809 | | - (when (var? v) |
810 | | - v)))) |
811 | | - |
812 | 809 | (defn- static-resolved-form? [&env form] |
813 | 810 | (boolean |
814 | 811 | (or (and (seq? form) |
|
1007 | 1004 | (let [coach (some-> (System/getProperty "compojure.api.meta.static-context-coach") |
1008 | 1005 | edn/read-string)] |
1009 | 1006 | (if-not coach |
1010 | | - (when (ffirst (reset-vals! warned-non-static? true)) |
| 1007 | + (when (first (reset-vals! warned-non-static? true)) |
1011 | 1008 | (println |
1012 | 1009 | (str (format "WARNING: Performance issue detected with compojure-api usage in %s.\n" (ns-name *ns*)) |
1013 | 1010 | "To fix this warning, set: -Dcompojure.api.meta.static-context-coach={:default :print}.\n" |
|
0 commit comments