added github pages support
This commit is contained in:
1 parent
b14ebdbf63
commit
6ed638a1cc
373 files changed
+185436
-2343
No files matched your search
@@ -0,0 +1,402 @@
|
||||
(ns secretary.core
|
||||
(:require [clojure.string :as string]
|
||||
[clojure.walk :refer [keywordize-keys]])
|
||||
(:require-macros [secretary.core :refer [defroute]]))
|
||||
|
||||
;;----------------------------------------------------------------------
|
||||
;; Protocols
|
||||
|
||||
(defprotocol IRouteMatches
|
||||
(route-matches [this route]))
|
||||
|
||||
(defprotocol IRouteValue
|
||||
(route-value [this]))
|
||||
|
||||
(defprotocol IRenderRoute
|
||||
(render-route
|
||||
[this]
|
||||
[this params]))
|
||||
|
||||
;;----------------------------------------------------------------------
|
||||
;; Configuration
|
||||
|
||||
(def ^:dynamic *config*
|
||||
(atom {:prefix ""}))
|
||||
|
||||
(defn get-config
|
||||
"Gets a value for *config* at path."
|
||||
[path]
|
||||
(let [path (if (sequential? path) path [path])]
|
||||
(get-in @*config* path)))
|
||||
|
||||
(defn set-config!
|
||||
"Associates a value val for *config* at path."
|
||||
[path val]
|
||||
(let [path (if (sequential? path) path [path])]
|
||||
(swap! *config* assoc-in path val)))
|
||||
|
||||
;;----------------------------------------------------------------------
|
||||
;; Parameter encoding
|
||||
|
||||
(def encode js/encodeURIComponent)
|
||||
|
||||
(defmulti
|
||||
^{:private true
|
||||
:doc "Given a key and a value return and encoded key-value pair."}
|
||||
encode-pair
|
||||
(fn [[k v]]
|
||||
(cond
|
||||
(or (sequential? v) (set? v))
|
||||
::sequential
|
||||
(or (map? v) (satisfies? IRecord v))
|
||||
::map)))
|
||||
|
||||
(defn- key-index
|
||||
([k] (str (name k) "[]"))
|
||||
([k index]
|
||||
(str (name k) "[" index "]")))
|
||||
|
||||
(defmethod encode-pair ::sequential [[k v]]
|
||||
(let [encoded (map-indexed
|
||||
(fn [i x]
|
||||
(let [pair (if (coll? x)
|
||||
[(key-index k i) x]
|
||||
[(key-index k) x])]
|
||||
(encode-pair pair)))
|
||||
v)]
|
||||
(string/join \& encoded)))
|
||||
|
||||
(defmethod encode-pair ::map [[k v]]
|
||||
(let [encoded (map
|
||||
(fn [[ik iv]]
|
||||
(encode-pair [(key-index k (name ik)) iv]))
|
||||
v)]
|
||||
(string/join \& encoded)))
|
||||
|
||||
(defmethod encode-pair :default [[k v]]
|
||||
(str (name k) \= (encode (str v))))
|
||||
|
||||
(defn encode-query-params
|
||||
"Convert a map of query parameters into url encoded string."
|
||||
[query-params]
|
||||
(string/join \& (map encode-pair query-params)))
|
||||
|
||||
(defn encode-uri
|
||||
"Like js/encodeURIComponent excepts ignore slashes."
|
||||
[uri]
|
||||
(->> (string/split uri #"/")
|
||||
(map encode)
|
||||
(string/join "/")))
|
||||
|
||||
;;----------------------------------------------------------------------
|
||||
;; Parameter decoding
|
||||
|
||||
(def decode js/decodeURIComponent)
|
||||
|
||||
(defn- parse-path
|
||||
"Parse a value from a serialized query-string key index. If the
|
||||
index value is empty 0 is returned, if it's a digit it returns the
|
||||
js/parseInt value, otherwise it returns the extracted index."
|
||||
[path]
|
||||
(let [index-re #"\[([^\]]*)\]*" ;; Capture the index value.
|
||||
parts (re-seq index-re path)]
|
||||
(map
|
||||
(fn [[_ part]]
|
||||
(cond
|
||||
(empty? part) 0
|
||||
(re-matches #"\d+" part) (js/parseInt part)
|
||||
:else part))
|
||||
parts)))
|
||||
|
||||
(defn- key-parse
|
||||
"Return a key path for a serialized query-string entry.
|
||||
|
||||
Ex.
|
||||
|
||||
(key-parse \"foo[][a][][b]\")
|
||||
;; => (\"foo\" 0 \"a\" 0 \"b\")
|
||||
"
|
||||
[k]
|
||||
(let [re #"([^\[\]]+)((?:\[[^\]]*\])*)?"
|
||||
[_ key path] (re-matches re k)
|
||||
parsed-path (when path (parse-path path))]
|
||||
(cons key parsed-path)))
|
||||
|
||||
(defn- assoc-in-query-params
|
||||
"Like assoc-in but numbers in path create vectors instead of maps.
|
||||
|
||||
Ex.
|
||||
|
||||
(assoc-in-query-params {} [\"foo\" 0] 1)
|
||||
;; => {\"foo\" [1]}
|
||||
|
||||
(assoc-in-query-params {} [\"foo\" 0 \"a\"] 1)
|
||||
;; => {\"foo\" [{\"a\" 1}]}
|
||||
"
|
||||
[m path v]
|
||||
(let [heads (fn [xs]
|
||||
(map-indexed
|
||||
(fn [i _]
|
||||
(take (inc i) xs))
|
||||
xs))
|
||||
hs (heads path)
|
||||
m (reduce
|
||||
(fn [m h]
|
||||
(if (and (or (number? (last h)))
|
||||
(not (vector? (get-in m (butlast h)))))
|
||||
(assoc-in m (butlast h) [])
|
||||
m))
|
||||
m
|
||||
hs)]
|
||||
(if (zero? (last path))
|
||||
(update-in m (butlast path) conj v)
|
||||
(assoc-in m path v))))
|
||||
|
||||
(defn decode-query-params
|
||||
"Extract a map of query parameters from a query string."
|
||||
[query-string]
|
||||
(let [parts (string/split query-string #"&")
|
||||
params (reduce
|
||||
(fn [m part]
|
||||
;; We only want two parts since the part on the right hand side
|
||||
;; could potentially contain an =.
|
||||
(let [[k v] (string/split part #"=" 2)]
|
||||
(assoc-in-query-params m (key-parse k) (decode v))))
|
||||
{}
|
||||
parts)
|
||||
params (keywordize-keys params)]
|
||||
params))
|
||||
|
||||
;;----------------------------------------------------------------------
|
||||
;; Route compilation
|
||||
|
||||
;; The implementation for route compilation was inspired by Clout and
|
||||
;; modified to suit JavaScript and Secretary.
|
||||
;; SEE: https://github.com/weavejester/clout
|
||||
|
||||
(defn- re-matches*
|
||||
"Like re-matches but result is a always vector. If re does not
|
||||
capture matches then it will return a vector of [m m] as if it had a
|
||||
single capture. Other wise it maintains consistent behavior with
|
||||
re-matches. "
|
||||
[re s]
|
||||
(let [ms (clojure.core/re-matches re s)]
|
||||
(when ms
|
||||
(if (sequential? ms) ms [ms ms]))))
|
||||
|
||||
(def ^:private re-escape-chars
|
||||
(set "\\.*+|?()[]{}$^"))
|
||||
|
||||
(defn- re-escape [s]
|
||||
(reduce
|
||||
(fn [s c]
|
||||
(if (re-escape-chars c)
|
||||
(str s \\ c)
|
||||
(str s c)))
|
||||
""
|
||||
s))
|
||||
|
||||
(defn- lex*
|
||||
"Attempt to lex a single token from s with clauses. Each clause is a
|
||||
pair of [regexp action] where action is a function. regexp is
|
||||
expected to begin with ^ and contain a single capture. If the
|
||||
attempt is successful a vector of [s-without-token (action capture)]
|
||||
is returned. Otherwise the result is nil."
|
||||
[s clauses]
|
||||
(some
|
||||
(fn [[re action]]
|
||||
(when-let [[m c] (re-find re s)]
|
||||
[(subs s (count m)) (action c)]))
|
||||
clauses))
|
||||
|
||||
(defn- lex-route
|
||||
"Return a pair of [regex params]. regex is a compiled regular
|
||||
expression for matching routes. params is a list of route param
|
||||
names (:*, :id, etc.). "
|
||||
[s clauses]
|
||||
(loop [s s pattern "" params []]
|
||||
(if (seq s)
|
||||
(let [[s [r p]] (lex* s clauses)]
|
||||
(recur s (str pattern r) (conj params p)))
|
||||
[(re-pattern (str \^ pattern \$)) (remove nil? params)])))
|
||||
|
||||
(defn- compile-route
|
||||
"Given a route return an instance of IRouteMatches."
|
||||
[orig-route]
|
||||
(let [clauses [[#"^\*([^\s.:*/]*)" ;; Splats, named splates
|
||||
(fn [v]
|
||||
(let [r "(.*?)"
|
||||
p (if (seq v)
|
||||
(keyword v)
|
||||
:*)]
|
||||
[r p]))]
|
||||
[#"^\:([^\s.:*/]+)" ;; Params
|
||||
(fn [v]
|
||||
(let [r "([^,;?/]+)"
|
||||
p (keyword v)]
|
||||
[r p]))]
|
||||
[#"^([^:*]+)" ;; Literals
|
||||
(fn [v]
|
||||
(let [r (re-escape v)]
|
||||
[r]))]]
|
||||
[re params] (lex-route orig-route clauses)]
|
||||
(reify
|
||||
IRouteValue
|
||||
(route-value [this] orig-route)
|
||||
|
||||
IRouteMatches
|
||||
(route-matches [_ route]
|
||||
(when-let [[_ & ms] (re-matches* re route)]
|
||||
(->> (interleave params (map decode ms))
|
||||
(partition 2)
|
||||
(merge-with vector {})))))))
|
||||
|
||||
;;----------------------------------------------------------------------
|
||||
;; Route rendering
|
||||
|
||||
(defn ^:internal render-route* [obj & args]
|
||||
(when (satisfies? IRenderRoute obj)
|
||||
(apply render-route obj args)))
|
||||
|
||||
;;----------------------------------------------------------------------
|
||||
;; Routes adding/removing
|
||||
|
||||
(def ^:dynamic *routes*
|
||||
(atom []))
|
||||
|
||||
(defn add-route! [obj action]
|
||||
(let [obj (if (string? obj)
|
||||
(compile-route obj)
|
||||
obj)]
|
||||
(swap! *routes* conj [obj action])))
|
||||
|
||||
(defn remove-route! [obj]
|
||||
(swap! *routes*
|
||||
(fn [rs]
|
||||
(filterv
|
||||
(fn [[x _]]
|
||||
(not= x obj))
|
||||
rs))))
|
||||
|
||||
(defn reset-routes! []
|
||||
(reset! *routes* []))
|
||||
|
||||
;;----------------------------------------------------------------------
|
||||
;; Route lookup and dispatch
|
||||
|
||||
(defn locate-route [route]
|
||||
(some
|
||||
(fn [[compiled-route action]]
|
||||
(when-let [params (route-matches compiled-route route)]
|
||||
{:action action :params params :route compiled-route}))
|
||||
@*routes*))
|
||||
|
||||
(defn locate-route-value
|
||||
"Returns original route value as set in defroute when passed a URI path."
|
||||
[uri]
|
||||
(-> uri locate-route :route route-value))
|
||||
|
||||
(defn- prefix
|
||||
[]
|
||||
(str (get-config [:prefix])))
|
||||
|
||||
(defn- uri-without-prefix
|
||||
[uri]
|
||||
(string/replace uri (re-pattern (str "^" (prefix))) ""))
|
||||
|
||||
(defn- uri-with-leading-slash
|
||||
"Ensures that the uri has a leading slash"
|
||||
[uri]
|
||||
(if (= "/" (first uri))
|
||||
uri
|
||||
(str "/" uri)))
|
||||
|
||||
(defn dispatch!
|
||||
"Dispatch an action for a given route if it matches the URI path."
|
||||
[uri]
|
||||
(let [[uri-path query-string] (string/split (uri-without-prefix uri) #"\?")
|
||||
uri-path (uri-with-leading-slash uri-path)
|
||||
query-params (when query-string
|
||||
{:query-params (decode-query-params query-string)})
|
||||
{:keys [action params]} (locate-route uri-path)
|
||||
action (or action identity)
|
||||
params (merge params query-params)]
|
||||
(action params)))
|
||||
|
||||
(defn invalid-params [params validations]
|
||||
(reduce (fn [m [key validation]]
|
||||
(let [value (get params key)]
|
||||
(if (re-matches validation value)
|
||||
m
|
||||
(assoc m key [value validation]))))
|
||||
{} (partition 2 validations)))
|
||||
|
||||
(defn- params-valid? [params validations]
|
||||
(empty? (invalid-params params validations)))
|
||||
|
||||
;;----------------------------------------------------------------------
|
||||
;; Protocol implementations
|
||||
|
||||
(extend-protocol IRouteMatches
|
||||
string
|
||||
(route-matches [this route]
|
||||
(route-matches (compile-route this) route))
|
||||
|
||||
js/RegExp
|
||||
(route-matches [this route]
|
||||
(when-let [[_ & ms] (re-matches* this route)]
|
||||
(vec ms)))
|
||||
|
||||
cljs.core/PersistentVector
|
||||
(route-matches [[route-string & validations] route]
|
||||
(let [params (route-matches (compile-route route-string) route)]
|
||||
(when (params-valid? params validations)
|
||||
params))))
|
||||
|
||||
(extend-protocol IRouteValue
|
||||
string
|
||||
(route-value [this]
|
||||
(route-value (compile-route this)))
|
||||
|
||||
js/RegExp
|
||||
(route-value [this] this)
|
||||
|
||||
cljs.core/PersistentVector
|
||||
(route-value [[route-string & validations]]
|
||||
(vec (cons (route-value route-string) validations))))
|
||||
|
||||
(extend-protocol IRenderRoute
|
||||
string
|
||||
(render-route
|
||||
([this]
|
||||
(render-route this {}))
|
||||
([this params]
|
||||
(let [{:keys [query-params] :as m} params
|
||||
a (atom m)
|
||||
path (.replace this (js/RegExp. ":[^\\s.:*/]+|\\*[^\\s.:*/]*" "g")
|
||||
(fn [$1]
|
||||
(let [lookup (keyword (if (= $1 "*")
|
||||
$1
|
||||
(subs $1 1)))
|
||||
v (get @a lookup)
|
||||
replacement (if (sequential? v)
|
||||
(do
|
||||
(swap! a assoc lookup (next v))
|
||||
(encode-uri (first v)))
|
||||
(if v (encode-uri v) $1))]
|
||||
replacement)))
|
||||
path (str (get-config [:prefix]) path)]
|
||||
(if-let [query-string (and query-params
|
||||
(encode-query-params query-params))]
|
||||
(str path "?" query-string)
|
||||
path))))
|
||||
|
||||
cljs.core/PersistentVector
|
||||
(render-route
|
||||
([this]
|
||||
(render-route this {}))
|
||||
([[route-string & validations] params]
|
||||
(let [invalid (invalid-params params validations)]
|
||||
(if (empty? invalid)
|
||||
(render-route route-string params)
|
||||
(throw (ex-info "Could not build route: invalid params" invalid)))))))
|
||||
@@ -0,0 +1 @@
|
||||
{:rename-macros {}, :renames {}, :externs {Error {}, encodeURIComponent {}, decodeURIComponent {}, parseInt {}, RegExp {prototype {secretary$core$IRouteMatches$ {}, secretary$core$IRouteMatches$route-matches$arity$2 {}, secretary$core$IRouteValue$ {}, secretary$core$IRouteValue$route-value$arity$1 {}}}}, :use-macros {defroute secretary.core, keywordize-keys clojure.walk}, :excludes #{}, :name secretary.core, :imports nil, :requires {string clojure.string, clojure.string clojure.string, clojure.walk clojure.walk}, :cljs.spec/speced-vars [], :uses {keywordize-keys clojure.walk}, :defs {IRouteValue {:meta {:file "/home/didier/clojupyter/website/target/cljsbuild/public/js/out/secretary/core.cljs", :line 12, :column 14, :end-line 12, :end-column 25, :doc nil, :protocol-symbol true, :jsdoc ("@interface"), :protocol-info {:methods {route-value [[this]]}}}, :protocol-symbol true, :name secretary.core/IRouteValue, :file "target/cljsbuild/public/js/out/secretary/core.cljs", :end-column 25, :column 1, :line 12, :protocol-info {:methods {route-value [[this]]}}, :info nil, :end-line 12, :tag any, :impls #{js/RegExp secretary.core/t_secretary$core37901 cljs.core/PersistentVector string}, :doc nil, :jsdoc ("@interface")}, ->t_secretary$core37901 {:protocol-inline nil, :meta {:anonymous true, :protocols #{secretary.core/IRouteValue cljs.core/IMeta cljs.core/IWithMeta secretary.core/IRouteMatches}, :skip-protocol-flag #{cljs.core/IMeta cljs.core/IWithMeta}, :factory :positional, :arglists (quote ([orig-route clauses vec__37898 re params meta37902])), :file nil}, :protocols #{secretary.core/IRouteValue cljs.core/IMeta cljs.core/IWithMeta secretary.core/IRouteMatches}, :name secretary.core/->t_secretary$core37901, :variadic false, :file "target/cljsbuild/public/js/out/secretary/core.cljs", :method-params ([orig-route clauses vec__37898 re params meta37902]), :protocol-impl nil, :arglists-meta (nil nil), :anonymous true, :column 4, :factory :positional, :line 243, :max-fixed-arity 6, :fn-var true, :arglists (quote ([orig-route clauses vec__37898 re params meta37902])), :skip-protocol-flag #{cljs.core/IMeta cljs.core/IWithMeta}}, encode {:name secretary.core/encode, :file "target/cljsbuild/public/js/out/secretary/core.cljs", :line 41, :column 1, :end-line 41, :end-column 12, :meta {:file "/home/didier/clojupyter/website/target/cljsbuild/public/js/out/secretary/core.cljs", :line 41, :column 6, :end-line 41, :end-column 12}, :tag js}, lex-route {:protocol-inline nil, :meta {:file "/home/didier/clojupyter/website/target/cljsbuild/public/js/out/secretary/core.cljs", :line 212, :column 8, :end-line 212, :end-column 17, :private true, :arglists (quote ([s clauses])), :doc "Return a pair of [regex params]. regex is a compiled regular\n expression for matching routes. params is a list of route param\n names (:*, :id, etc.). "}, :private true, :name secretary.core/lex-route, :variadic false, :file "target/cljsbuild/public/js/out/secretary/core.cljs", :end-column 17, :method-params ([s clauses]), :protocol-impl nil, :arglists-meta (nil nil), :column 1, :line 212, :end-line 212, :max-fixed-arity 2, :fn-var true, :arglists (quote ([s clauses])), :doc "Return a pair of [regex params]. regex is a compiled regular\n expression for matching routes. params is a list of route param\n names (:*, :id, etc.). "}, encode-query-params {:protocol-inline nil, :meta {:file "/home/didier/clojupyter/website/target/cljsbuild/public/js/out/secretary/core.cljs", :line 79, :column 7, :end-line 79, :end-column 26, :arglists (quote ([query-params])), :doc "Convert a map of query parameters into url encoded string."}, :name secretary.core/encode-query-params, :variadic false, :file "target/cljsbuild/public/js/out/secretary/core.cljs", :end-column 26, :method-params ([query-params]), :protocol-impl nil, :arglists-meta (nil nil), :column 1, :line 79, :end-line 79, :max-fixed-arity 1, :fn-var true, :arglists (quote ([query-params])), :doc "Convert a map of query parameters into url encoded string."}, params-valid? {:protocol-inline nil, :meta {:file "/home/didier/clojupyter/website/target/cljsbuild/public/js/out/secretary/core.cljs", :line 334, :column 8, :end-line 334, :end-column 21, :private true, :arglists (quote ([params validations]))}, :private true, :name secretary.core/params-valid?, :variadic false, :file "target/cljsbuild/public/js/out/secretary/core.cljs", :end-column 21, :method-params ([params validations]), :protocol-impl nil, :arglists-meta (nil nil), :column 1, :line 334, :end-line 334, :max-fixed-arity 2, :fn-var true, :arglists (quote ([params validations]))}, route-matches {:protocol-inline nil, :meta {:file "/home/didier/clojupyter/website/target/cljsbuild/public/js/out/secretary/core.cljs", :line 10, :column 4, :end-line 10, :end-column 17, :protocol secretary.core/IRouteMatches, :doc nil, :arglists (quote ([this route]))}, :protocol secretary.core/IRouteMatches, :name secretary.core/route-matches, :variadic false, :file "target/cljsbuildLine truncated
|
||||
@@ -0,0 +1,829 @@
|
||||
// Compiled by ClojureScript 1.9.946 {}
|
||||
goog.provide('secretary.core');
|
||||
goog.require('cljs.core');
|
||||
goog.require('clojure.string');
|
||||
goog.require('clojure.walk');
|
||||
|
||||
/**
|
||||
* @interface
|
||||
*/
|
||||
secretary.core.IRouteMatches = function(){};
|
||||
|
||||
secretary.core.route_matches = (function secretary$core$route_matches(this$,route){
|
||||
if((!((this$ == null))) && (!((this$.secretary$core$IRouteMatches$route_matches$arity$2 == null)))){
|
||||
return this$.secretary$core$IRouteMatches$route_matches$arity$2(this$,route);
|
||||
} else {
|
||||
var x__36231__auto__ = (((this$ == null))?null:this$);
|
||||
var m__36232__auto__ = (secretary.core.route_matches[goog.typeOf(x__36231__auto__)]);
|
||||
if(!((m__36232__auto__ == null))){
|
||||
return m__36232__auto__.call(null,this$,route);
|
||||
} else {
|
||||
var m__36232__auto____$1 = (secretary.core.route_matches["_"]);
|
||||
if(!((m__36232__auto____$1 == null))){
|
||||
return m__36232__auto____$1.call(null,this$,route);
|
||||
} else {
|
||||
throw cljs.core.missing_protocol.call(null,"IRouteMatches.route-matches",this$);
|
||||
}
|
||||
}
|
||||
}
|
||||
});
|
||||
|
||||
|
||||
/**
|
||||
* @interface
|
||||
*/
|
||||
secretary.core.IRouteValue = function(){};
|
||||
|
||||
secretary.core.route_value = (function secretary$core$route_value(this$){
|
||||
if((!((this$ == null))) && (!((this$.secretary$core$IRouteValue$route_value$arity$1 == null)))){
|
||||
return this$.secretary$core$IRouteValue$route_value$arity$1(this$);
|
||||
} else {
|
||||
var x__36231__auto__ = (((this$ == null))?null:this$);
|
||||
var m__36232__auto__ = (secretary.core.route_value[goog.typeOf(x__36231__auto__)]);
|
||||
if(!((m__36232__auto__ == null))){
|
||||
return m__36232__auto__.call(null,this$);
|
||||
} else {
|
||||
var m__36232__auto____$1 = (secretary.core.route_value["_"]);
|
||||
if(!((m__36232__auto____$1 == null))){
|
||||
return m__36232__auto____$1.call(null,this$);
|
||||
} else {
|
||||
throw cljs.core.missing_protocol.call(null,"IRouteValue.route-value",this$);
|
||||
}
|
||||
}
|
||||
}
|
||||
});
|
||||
|
||||
|
||||
/**
|
||||
* @interface
|
||||
*/
|
||||
secretary.core.IRenderRoute = function(){};
|
||||
|
||||
secretary.core.render_route = (function secretary$core$render_route(var_args){
|
||||
var G__37845 = arguments.length;
|
||||
switch (G__37845) {
|
||||
case 1:
|
||||
return secretary.core.render_route.cljs$core$IFn$_invoke$arity$1((arguments[(0)]));
|
||||
|
||||
break;
|
||||
case 2:
|
||||
return secretary.core.render_route.cljs$core$IFn$_invoke$arity$2((arguments[(0)]),(arguments[(1)]));
|
||||
|
||||
break;
|
||||
default:
|
||||
throw (new Error(["Invalid arity: ",cljs.core.str.cljs$core$IFn$_invoke$arity$1(arguments.length)].join('')));
|
||||
|
||||
}
|
||||
});
|
||||
|
||||
secretary.core.render_route.cljs$core$IFn$_invoke$arity$1 = (function (this$){
|
||||
if((!((this$ == null))) && (!((this$.secretary$core$IRenderRoute$render_route$arity$1 == null)))){
|
||||
return this$.secretary$core$IRenderRoute$render_route$arity$1(this$);
|
||||
} else {
|
||||
var x__36231__auto__ = (((this$ == null))?null:this$);
|
||||
var m__36232__auto__ = (secretary.core.render_route[goog.typeOf(x__36231__auto__)]);
|
||||
if(!((m__36232__auto__ == null))){
|
||||
return m__36232__auto__.call(null,this$);
|
||||
} else {
|
||||
var m__36232__auto____$1 = (secretary.core.render_route["_"]);
|
||||
if(!((m__36232__auto____$1 == null))){
|
||||
return m__36232__auto____$1.call(null,this$);
|
||||
} else {
|
||||
throw cljs.core.missing_protocol.call(null,"IRenderRoute.render-route",this$);
|
||||
}
|
||||
}
|
||||
}
|
||||
});
|
||||
|
||||
secretary.core.render_route.cljs$core$IFn$_invoke$arity$2 = (function (this$,params){
|
||||
if((!((this$ == null))) && (!((this$.secretary$core$IRenderRoute$render_route$arity$2 == null)))){
|
||||
return this$.secretary$core$IRenderRoute$render_route$arity$2(this$,params);
|
||||
} else {
|
||||
var x__36231__auto__ = (((this$ == null))?null:this$);
|
||||
var m__36232__auto__ = (secretary.core.render_route[goog.typeOf(x__36231__auto__)]);
|
||||
if(!((m__36232__auto__ == null))){
|
||||
return m__36232__auto__.call(null,this$,params);
|
||||
} else {
|
||||
var m__36232__auto____$1 = (secretary.core.render_route["_"]);
|
||||
if(!((m__36232__auto____$1 == null))){
|
||||
return m__36232__auto____$1.call(null,this$,params);
|
||||
} else {
|
||||
throw cljs.core.missing_protocol.call(null,"IRenderRoute.render-route",this$);
|
||||
}
|
||||
}
|
||||
}
|
||||
});
|
||||
|
||||
secretary.core.render_route.cljs$lang$maxFixedArity = 2;
|
||||
|
||||
|
||||
secretary.core._STAR_config_STAR_ = cljs.core.atom.call(null,new cljs.core.PersistentArrayMap(null, 1, [new cljs.core.Keyword(null,"prefix","prefix",-265908465),""], null));
|
||||
/**
|
||||
* Gets a value for *config* at path.
|
||||
*/
|
||||
secretary.core.get_config = (function secretary$core$get_config(path){
|
||||
var path__$1 = ((cljs.core.sequential_QMARK_.call(null,path))?path:new cljs.core.PersistentVector(null, 1, 5, cljs.core.PersistentVector.EMPTY_NODE, [path], null));
|
||||
return cljs.core.get_in.call(null,cljs.core.deref.call(null,secretary.core._STAR_config_STAR_),path__$1);
|
||||
});
|
||||
/**
|
||||
* Associates a value val for *config* at path.
|
||||
*/
|
||||
secretary.core.set_config_BANG_ = (function secretary$core$set_config_BANG_(path,val){
|
||||
var path__$1 = ((cljs.core.sequential_QMARK_.call(null,path))?path:new cljs.core.PersistentVector(null, 1, 5, cljs.core.PersistentVector.EMPTY_NODE, [path], null));
|
||||
return cljs.core.swap_BANG_.call(null,secretary.core._STAR_config_STAR_,cljs.core.assoc_in,path__$1,val);
|
||||
});
|
||||
secretary.core.encode = encodeURIComponent;
|
||||
if(typeof secretary.core.encode_pair !== 'undefined'){
|
||||
} else {
|
||||
/**
|
||||
* Given a key and a value return and encoded key-value pair.
|
||||
*/
|
||||
secretary.core.encode_pair = (function (){var method_table__36553__auto__ = cljs.core.atom.call(null,cljs.core.PersistentArrayMap.EMPTY);
|
||||
var prefer_table__36554__auto__ = cljs.core.atom.call(null,cljs.core.PersistentArrayMap.EMPTY);
|
||||
var method_cache__36555__auto__ = cljs.core.atom.call(null,cljs.core.PersistentArrayMap.EMPTY);
|
||||
var cached_hierarchy__36556__auto__ = cljs.core.atom.call(null,cljs.core.PersistentArrayMap.EMPTY);
|
||||
var hierarchy__36557__auto__ = cljs.core.get.call(null,cljs.core.PersistentArrayMap.EMPTY,new cljs.core.Keyword(null,"hierarchy","hierarchy",-1053470341),cljs.core.get_global_hierarchy.call(null));
|
||||
return (new cljs.core.MultiFn(cljs.core.symbol.call(null,"secretary.core","encode-pair"),((function (method_table__36553__auto__,prefer_table__36554__auto__,method_cache__36555__auto__,cached_hierarchy__36556__auto__,hierarchy__36557__auto__){
|
||||
return (function (p__37847){
|
||||
var vec__37848 = p__37847;
|
||||
var k = cljs.core.nth.call(null,vec__37848,(0),null);
|
||||
var v = cljs.core.nth.call(null,vec__37848,(1),null);
|
||||
if((cljs.core.sequential_QMARK_.call(null,v)) || (cljs.core.set_QMARK_.call(null,v))){
|
||||
return new cljs.core.Keyword("secretary.core","sequential","secretary.core/sequential",-347187207);
|
||||
} else {
|
||||
if((function (){var or__35498__auto__ = cljs.core.map_QMARK_.call(null,v);
|
||||
if(or__35498__auto__){
|
||||
return or__35498__auto__;
|
||||
} else {
|
||||
if(!((v == null))){
|
||||
if(((v.cljs$lang$protocol_mask$partition0$ & (67108864))) || ((cljs.core.PROTOCOL_SENTINEL === v.cljs$core$IRecord$))){
|
||||
return true;
|
||||
} else {
|
||||
if((!v.cljs$lang$protocol_mask$partition0$)){
|
||||
return cljs.core.native_satisfies_QMARK_.call(null,cljs.core.IRecord,v);
|
||||
} else {
|
||||
return false;
|
||||
}
|
||||
}
|
||||
} else {
|
||||
return cljs.core.native_satisfies_QMARK_.call(null,cljs.core.IRecord,v);
|
||||
}
|
||||
}
|
||||
})()){
|
||||
return new cljs.core.Keyword("secretary.core","map","secretary.core/map",-31086646);
|
||||
} else {
|
||||
return null;
|
||||
}
|
||||
}
|
||||
});})(method_table__36553__auto__,prefer_table__36554__auto__,method_cache__36555__auto__,cached_hierarchy__36556__auto__,hierarchy__36557__auto__))
|
||||
,new cljs.core.Keyword(null,"default","default",-1987822328),hierarchy__36557__auto__,method_table__36553__auto__,prefer_table__36554__auto__,method_cache__36555__auto__,cached_hierarchy__36556__auto__));
|
||||
})();
|
||||
}
|
||||
secretary.core.key_index = (function secretary$core$key_index(var_args){
|
||||
var G__37854 = arguments.length;
|
||||
switch (G__37854) {
|
||||
case 1:
|
||||
return secretary.core.key_index.cljs$core$IFn$_invoke$arity$1((arguments[(0)]));
|
||||
|
||||
break;
|
||||
case 2:
|
||||
return secretary.core.key_index.cljs$core$IFn$_invoke$arity$2((arguments[(0)]),(arguments[(1)]));
|
||||
|
||||
break;
|
||||
default:
|
||||
throw (new Error(["Invalid arity: ",cljs.core.str.cljs$core$IFn$_invoke$arity$1(arguments.length)].join('')));
|
||||
|
||||
}
|
||||
});
|
||||
|
||||
secretary.core.key_index.cljs$core$IFn$_invoke$arity$1 = (function (k){
|
||||
return [cljs.core.str.cljs$core$IFn$_invoke$arity$1(cljs.core.name.call(null,k)),"[]"].join('');
|
||||
});
|
||||
|
||||
secretary.core.key_index.cljs$core$IFn$_invoke$arity$2 = (function (k,index){
|
||||
return [cljs.core.str.cljs$core$IFn$_invoke$arity$1(cljs.core.name.call(null,k)),"[",cljs.core.str.cljs$core$IFn$_invoke$arity$1(index),"]"].join('');
|
||||
});
|
||||
|
||||
secretary.core.key_index.cljs$lang$maxFixedArity = 2;
|
||||
|
||||
cljs.core._add_method.call(null,secretary.core.encode_pair,new cljs.core.Keyword("secretary.core","sequential","secretary.core/sequential",-347187207),(function (p__37856){
|
||||
var vec__37857 = p__37856;
|
||||
var k = cljs.core.nth.call(null,vec__37857,(0),null);
|
||||
var v = cljs.core.nth.call(null,vec__37857,(1),null);
|
||||
var encoded = cljs.core.map_indexed.call(null,((function (vec__37857,k,v){
|
||||
return (function (i,x){
|
||||
var pair = ((cljs.core.coll_QMARK_.call(null,x))?new cljs.core.PersistentVector(null, 2, 5, cljs.core.PersistentVector.EMPTY_NODE, [secretary.core.key_index.call(null,k,i),x], null):new cljs.core.PersistentVector(null, 2, 5, cljs.core.PersistentVector.EMPTY_NODE, [secretary.core.key_index.call(null,k),x], null));
|
||||
return secretary.core.encode_pair.call(null,pair);
|
||||
});})(vec__37857,k,v))
|
||||
,v);
|
||||
return clojure.string.join.call(null,"&",encoded);
|
||||
}));
|
||||
cljs.core._add_method.call(null,secretary.core.encode_pair,new cljs.core.Keyword("secretary.core","map","secretary.core/map",-31086646),(function (p__37860){
|
||||
var vec__37861 = p__37860;
|
||||
var k = cljs.core.nth.call(null,vec__37861,(0),null);
|
||||
var v = cljs.core.nth.call(null,vec__37861,(1),null);
|
||||
var encoded = cljs.core.map.call(null,((function (vec__37861,k,v){
|
||||
return (function (p__37864){
|
||||
var vec__37865 = p__37864;
|
||||
var ik = cljs.core.nth.call(null,vec__37865,(0),null);
|
||||
var iv = cljs.core.nth.call(null,vec__37865,(1),null);
|
||||
return secretary.core.encode_pair.call(null,new cljs.core.PersistentVector(null, 2, 5, cljs.core.PersistentVector.EMPTY_NODE, [secretary.core.key_index.call(null,k,cljs.core.name.call(null,ik)),iv], null));
|
||||
});})(vec__37861,k,v))
|
||||
,v);
|
||||
return clojure.string.join.call(null,"&",encoded);
|
||||
}));
|
||||
cljs.core._add_method.call(null,secretary.core.encode_pair,new cljs.core.Keyword(null,"default","default",-1987822328),(function (p__37868){
|
||||
var vec__37869 = p__37868;
|
||||
var k = cljs.core.nth.call(null,vec__37869,(0),null);
|
||||
var v = cljs.core.nth.call(null,vec__37869,(1),null);
|
||||
return [cljs.core.str.cljs$core$IFn$_invoke$arity$1(cljs.core.name.call(null,k)),cljs.core.str.cljs$core$IFn$_invoke$arity$1("="),cljs.core.str.cljs$core$IFn$_invoke$arity$1(secretary.core.encode.call(null,[cljs.core.str.cljs$core$IFn$_invoke$arity$1(v)].join('')))].join('');
|
||||
}));
|
||||
/**
|
||||
* Convert a map of query parameters into url encoded string.
|
||||
*/
|
||||
secretary.core.encode_query_params = (function secretary$core$encode_query_params(query_params){
|
||||
return clojure.string.join.call(null,"&",cljs.core.map.call(null,secretary.core.encode_pair,query_params));
|
||||
});
|
||||
/**
|
||||
* Like js/encodeURIComponent excepts ignore slashes.
|
||||
*/
|
||||
secretary.core.encode_uri = (function secretary$core$encode_uri(uri){
|
||||
return clojure.string.join.call(null,"/",cljs.core.map.call(null,secretary.core.encode,clojure.string.split.call(null,uri,/\//)));
|
||||
});
|
||||
secretary.core.decode = decodeURIComponent;
|
||||
/**
|
||||
* Parse a value from a serialized query-string key index. If the
|
||||
* index value is empty 0 is returned, if it's a digit it returns the
|
||||
* js/parseInt value, otherwise it returns the extracted index.
|
||||
*/
|
||||
secretary.core.parse_path = (function secretary$core$parse_path(path){
|
||||
var index_re = /\[([^\]]*)\]*/;
|
||||
var parts = cljs.core.re_seq.call(null,index_re,path);
|
||||
return cljs.core.map.call(null,((function (index_re,parts){
|
||||
return (function (p__37872){
|
||||
var vec__37873 = p__37872;
|
||||
var _ = cljs.core.nth.call(null,vec__37873,(0),null);
|
||||
var part = cljs.core.nth.call(null,vec__37873,(1),null);
|
||||
if(cljs.core.empty_QMARK_.call(null,part)){
|
||||
return (0);
|
||||
} else {
|
||||
if(cljs.core.truth_(cljs.core.re_matches.call(null,/\d+/,part))){
|
||||
return parseInt(part);
|
||||
} else {
|
||||
return part;
|
||||
|
||||
}
|
||||
}
|
||||
});})(index_re,parts))
|
||||
,parts);
|
||||
});
|
||||
/**
|
||||
* Return a key path for a serialized query-string entry.
|
||||
*
|
||||
* Ex.
|
||||
*
|
||||
* (key-parse "foo[][a][][b]")
|
||||
* ;; => ("foo" 0 "a" 0 "b")
|
||||
*
|
||||
*/
|
||||
secretary.core.key_parse = (function secretary$core$key_parse(k){
|
||||
var re = /([^\[\]]+)((?:\[[^\]]*\])*)?/;
|
||||
var vec__37876 = cljs.core.re_matches.call(null,re,k);
|
||||
var _ = cljs.core.nth.call(null,vec__37876,(0),null);
|
||||
var key = cljs.core.nth.call(null,vec__37876,(1),null);
|
||||
var path = cljs.core.nth.call(null,vec__37876,(2),null);
|
||||
var parsed_path = (cljs.core.truth_(path)?secretary.core.parse_path.call(null,path):null);
|
||||
return cljs.core.cons.call(null,key,parsed_path);
|
||||
});
|
||||
/**
|
||||
* Like assoc-in but numbers in path create vectors instead of maps.
|
||||
*
|
||||
* Ex.
|
||||
*
|
||||
* (assoc-in-query-params {} ["foo" 0] 1)
|
||||
* ;; => {"foo" [1]}
|
||||
*
|
||||
* (assoc-in-query-params {} ["foo" 0 "a"] 1)
|
||||
* ;; => {"foo" [{"a" 1}]}
|
||||
*
|
||||
*/
|
||||
secretary.core.assoc_in_query_params = (function secretary$core$assoc_in_query_params(m,path,v){
|
||||
var heads = (function (xs){
|
||||
return cljs.core.map_indexed.call(null,(function (i,_){
|
||||
return cljs.core.take.call(null,(i + (1)),xs);
|
||||
}),xs);
|
||||
});
|
||||
var hs = heads.call(null,path);
|
||||
var m__$1 = cljs.core.reduce.call(null,((function (heads,hs){
|
||||
return (function (m__$1,h){
|
||||
if((typeof cljs.core.last.call(null,h) === 'number') && (!(cljs.core.vector_QMARK_.call(null,cljs.core.get_in.call(null,m__$1,cljs.core.butlast.call(null,h)))))){
|
||||
return cljs.core.assoc_in.call(null,m__$1,cljs.core.butlast.call(null,h),cljs.core.PersistentVector.EMPTY);
|
||||
} else {
|
||||
return m__$1;
|
||||
}
|
||||
});})(heads,hs))
|
||||
,m,hs);
|
||||
if((cljs.core.last.call(null,path) === (0))){
|
||||
return cljs.core.update_in.call(null,m__$1,cljs.core.butlast.call(null,path),cljs.core.conj,v);
|
||||
} else {
|
||||
return cljs.core.assoc_in.call(null,m__$1,path,v);
|
||||
}
|
||||
});
|
||||
/**
|
||||
* Extract a map of query parameters from a query string.
|
||||
*/
|
||||
secretary.core.decode_query_params = (function secretary$core$decode_query_params(query_string){
|
||||
var parts = clojure.string.split.call(null,query_string,/&/);
|
||||
var params = cljs.core.reduce.call(null,((function (parts){
|
||||
return (function (m,part){
|
||||
var vec__37879 = clojure.string.split.call(null,part,/=/,(2));
|
||||
var k = cljs.core.nth.call(null,vec__37879,(0),null);
|
||||
var v = cljs.core.nth.call(null,vec__37879,(1),null);
|
||||
return secretary.core.assoc_in_query_params.call(null,m,secretary.core.key_parse.call(null,k),secretary.core.decode.call(null,v));
|
||||
});})(parts))
|
||||
,cljs.core.PersistentArrayMap.EMPTY,parts);
|
||||
var params__$1 = clojure.walk.keywordize_keys.call(null,params);
|
||||
return params__$1;
|
||||
});
|
||||
/**
|
||||
* Like re-matches but result is a always vector. If re does not
|
||||
* capture matches then it will return a vector of [m m] as if it had a
|
||||
* single capture. Other wise it maintains consistent behavior with
|
||||
* re-matches.
|
||||
*/
|
||||
secretary.core.re_matches_STAR_ = (function secretary$core$re_matches_STAR_(re,s){
|
||||
var ms = cljs.core.re_matches.call(null,re,s);
|
||||
if(cljs.core.truth_(ms)){
|
||||
if(cljs.core.sequential_QMARK_.call(null,ms)){
|
||||
return ms;
|
||||
} else {
|
||||
return new cljs.core.PersistentVector(null, 2, 5, cljs.core.PersistentVector.EMPTY_NODE, [ms,ms], null);
|
||||
}
|
||||
} else {
|
||||
return null;
|
||||
}
|
||||
});
|
||||
secretary.core.re_escape_chars = cljs.core.set.call(null,"\\.*+|?()[]{}$^");
|
||||
secretary.core.re_escape = (function secretary$core$re_escape(s){
|
||||
return cljs.core.reduce.call(null,(function (s__$1,c){
|
||||
if(cljs.core.truth_(secretary.core.re_escape_chars.call(null,c))){
|
||||
return [cljs.core.str.cljs$core$IFn$_invoke$arity$1(s__$1),cljs.core.str.cljs$core$IFn$_invoke$arity$1("\\"),cljs.core.str.cljs$core$IFn$_invoke$arity$1(c)].join('');
|
||||
} else {
|
||||
return [cljs.core.str.cljs$core$IFn$_invoke$arity$1(s__$1),cljs.core.str.cljs$core$IFn$_invoke$arity$1(c)].join('');
|
||||
}
|
||||
}),"",s);
|
||||
});
|
||||
/**
|
||||
* Attempt to lex a single token from s with clauses. Each clause is a
|
||||
* pair of [regexp action] where action is a function. regexp is
|
||||
* expected to begin with ^ and contain a single capture. If the
|
||||
* attempt is successful a vector of [s-without-token (action capture)]
|
||||
* is returned. Otherwise the result is nil.
|
||||
*/
|
||||
secretary.core.lex_STAR_ = (function secretary$core$lex_STAR_(s,clauses){
|
||||
return cljs.core.some.call(null,(function (p__37882){
|
||||
var vec__37883 = p__37882;
|
||||
var re = cljs.core.nth.call(null,vec__37883,(0),null);
|
||||
var action = cljs.core.nth.call(null,vec__37883,(1),null);
|
||||
var temp__5457__auto__ = cljs.core.re_find.call(null,re,s);
|
||||
if(cljs.core.truth_(temp__5457__auto__)){
|
||||
var vec__37886 = temp__5457__auto__;
|
||||
var m = cljs.core.nth.call(null,vec__37886,(0),null);
|
||||
var c = cljs.core.nth.call(null,vec__37886,(1),null);
|
||||
return new cljs.core.PersistentVector(null, 2, 5, cljs.core.PersistentVector.EMPTY_NODE, [cljs.core.subs.call(null,s,cljs.core.count.call(null,m)),action.call(null,c)], null);
|
||||
} else {
|
||||
return null;
|
||||
}
|
||||
}),clauses);
|
||||
});
|
||||
/**
|
||||
* Return a pair of [regex params]. regex is a compiled regular
|
||||
* expression for matching routes. params is a list of route param
|
||||
* names (:*, :id, etc.).
|
||||
*/
|
||||
secretary.core.lex_route = (function secretary$core$lex_route(s,clauses){
|
||||
var s__$1 = s;
|
||||
var pattern = "";
|
||||
var params = cljs.core.PersistentVector.EMPTY;
|
||||
while(true){
|
||||
if(cljs.core.seq.call(null,s__$1)){
|
||||
var vec__37889 = secretary.core.lex_STAR_.call(null,s__$1,clauses);
|
||||
var s__$2 = cljs.core.nth.call(null,vec__37889,(0),null);
|
||||
var vec__37892 = cljs.core.nth.call(null,vec__37889,(1),null);
|
||||
var r = cljs.core.nth.call(null,vec__37892,(0),null);
|
||||
var p = cljs.core.nth.call(null,vec__37892,(1),null);
|
||||
var G__37895 = s__$2;
|
||||
var G__37896 = [cljs.core.str.cljs$core$IFn$_invoke$arity$1(pattern),cljs.core.str.cljs$core$IFn$_invoke$arity$1(r)].join('');
|
||||
var G__37897 = cljs.core.conj.call(null,params,p);
|
||||
s__$1 = G__37895;
|
||||
pattern = G__37896;
|
||||
params = G__37897;
|
||||
continue;
|
||||
} else {
|
||||
return new cljs.core.PersistentVector(null, 2, 5, cljs.core.PersistentVector.EMPTY_NODE, [cljs.core.re_pattern.call(null,[cljs.core.str.cljs$core$IFn$_invoke$arity$1("^"),cljs.core.str.cljs$core$IFn$_invoke$arity$1(pattern),cljs.core.str.cljs$core$IFn$_invoke$arity$1("$")].join('')),cljs.core.remove.call(null,cljs.core.nil_QMARK_,params)], null);
|
||||
}
|
||||
break;
|
||||
}
|
||||
});
|
||||
/**
|
||||
* Given a route return an instance of IRouteMatches.
|
||||
*/
|
||||
secretary.core.compile_route = (function secretary$core$compile_route(orig_route){
|
||||
var clauses = new cljs.core.PersistentVector(null, 3, 5, cljs.core.PersistentVector.EMPTY_NODE, [new cljs.core.PersistentVector(null, 2, 5, cljs.core.PersistentVector.EMPTY_NODE, [/^\*([^\s.:*\/]*)/,(function (v){
|
||||
var r = "(.*?)";
|
||||
var p = ((cljs.core.seq.call(null,v))?cljs.core.keyword.call(null,v):new cljs.core.Keyword(null,"*","*",-1294732318));
|
||||
return new cljs.core.PersistentVector(null, 2, 5, cljs.core.PersistentVector.EMPTY_NODE, [r,p], null);
|
||||
})], null),new cljs.core.PersistentVector(null, 2, 5, cljs.core.PersistentVector.EMPTY_NODE, [/^\:([^\s.:*\/]+)/,(function (v){
|
||||
var r = "([^,;?/]+)";
|
||||
var p = cljs.core.keyword.call(null,v);
|
||||
return new cljs.core.PersistentVector(null, 2, 5, cljs.core.PersistentVector.EMPTY_NODE, [r,p], null);
|
||||
})], null),new cljs.core.PersistentVector(null, 2, 5, cljs.core.PersistentVector.EMPTY_NODE, [/^([^:*]+)/,(function (v){
|
||||
var r = secretary.core.re_escape.call(null,v);
|
||||
return new cljs.core.PersistentVector(null, 1, 5, cljs.core.PersistentVector.EMPTY_NODE, [r], null);
|
||||
})], null)], null);
|
||||
var vec__37898 = secretary.core.lex_route.call(null,orig_route,clauses);
|
||||
var re = cljs.core.nth.call(null,vec__37898,(0),null);
|
||||
var params = cljs.core.nth.call(null,vec__37898,(1),null);
|
||||
if(typeof secretary.core.t_secretary$core37901 !== 'undefined'){
|
||||
} else {
|
||||
|
||||
/**
|
||||
* @constructor
|
||||
* @implements {secretary.core.IRouteValue}
|
||||
* @implements {cljs.core.IMeta}
|
||||
* @implements {cljs.core.IWithMeta}
|
||||
* @implements {secretary.core.IRouteMatches}
|
||||
*/
|
||||
secretary.core.t_secretary$core37901 = (function (orig_route,clauses,vec__37898,re,params,meta37902){
|
||||
this.orig_route = orig_route;
|
||||
this.clauses = clauses;
|
||||
this.vec__37898 = vec__37898;
|
||||
this.re = re;
|
||||
this.params = params;
|
||||
this.meta37902 = meta37902;
|
||||
this.cljs$lang$protocol_mask$partition0$ = 393216;
|
||||
this.cljs$lang$protocol_mask$partition1$ = 0;
|
||||
});
|
||||
secretary.core.t_secretary$core37901.prototype.cljs$core$IWithMeta$_with_meta$arity$2 = ((function (clauses,vec__37898,re,params){
|
||||
return (function (_37903,meta37902__$1){
|
||||
var self__ = this;
|
||||
var _37903__$1 = this;
|
||||
return (new secretary.core.t_secretary$core37901(self__.orig_route,self__.clauses,self__.vec__37898,self__.re,self__.params,meta37902__$1));
|
||||
});})(clauses,vec__37898,re,params))
|
||||
;
|
||||
|
||||
secretary.core.t_secretary$core37901.prototype.cljs$core$IMeta$_meta$arity$1 = ((function (clauses,vec__37898,re,params){
|
||||
return (function (_37903){
|
||||
var self__ = this;
|
||||
var _37903__$1 = this;
|
||||
return self__.meta37902;
|
||||
});})(clauses,vec__37898,re,params))
|
||||
;
|
||||
|
||||
secretary.core.t_secretary$core37901.prototype.secretary$core$IRouteValue$ = cljs.core.PROTOCOL_SENTINEL;
|
||||
|
||||
secretary.core.t_secretary$core37901.prototype.secretary$core$IRouteValue$route_value$arity$1 = ((function (clauses,vec__37898,re,params){
|
||||
return (function (this$){
|
||||
var self__ = this;
|
||||
var this$__$1 = this;
|
||||
return self__.orig_route;
|
||||
});})(clauses,vec__37898,re,params))
|
||||
;
|
||||
|
||||
secretary.core.t_secretary$core37901.prototype.secretary$core$IRouteMatches$ = cljs.core.PROTOCOL_SENTINEL;
|
||||
|
||||
secretary.core.t_secretary$core37901.prototype.secretary$core$IRouteMatches$route_matches$arity$2 = ((function (clauses,vec__37898,re,params){
|
||||
return (function (_,route){
|
||||
var self__ = this;
|
||||
var ___$1 = this;
|
||||
var temp__5457__auto__ = secretary.core.re_matches_STAR_.call(null,self__.re,route);
|
||||
if(cljs.core.truth_(temp__5457__auto__)){
|
||||
var vec__37904 = temp__5457__auto__;
|
||||
var seq__37905 = cljs.core.seq.call(null,vec__37904);
|
||||
var first__37906 = cljs.core.first.call(null,seq__37905);
|
||||
var seq__37905__$1 = cljs.core.next.call(null,seq__37905);
|
||||
var ___$2 = first__37906;
|
||||
var ms = seq__37905__$1;
|
||||
return cljs.core.merge_with.call(null,cljs.core.vector,cljs.core.PersistentArrayMap.EMPTY,cljs.core.partition.call(null,(2),cljs.core.interleave.call(null,self__.params,cljs.core.map.call(null,secretary.core.decode,ms))));
|
||||
} else {
|
||||
return null;
|
||||
}
|
||||
});})(clauses,vec__37898,re,params))
|
||||
;
|
||||
|
||||
secretary.core.t_secretary$core37901.getBasis = ((function (clauses,vec__37898,re,params){
|
||||
return (function (){
|
||||
return new cljs.core.PersistentVector(null, 6, 5, cljs.core.PersistentVector.EMPTY_NODE, [new cljs.core.Symbol(null,"orig-route","orig-route",899103121,null),new cljs.core.Symbol(null,"clauses","clauses",-1199594528,null),new cljs.core.Symbol(null,"vec__37898","vec__37898",-236727605,null),new cljs.core.Symbol(null,"re","re",1869207729,null),new cljs.core.Symbol(null,"params","params",-1943919534,null),new cljs.core.Symbol(null,"meta37902","meta37902",715394286,null)], null);
|
||||
});})(clauses,vec__37898,re,params))
|
||||
;
|
||||
|
||||
secretary.core.t_secretary$core37901.cljs$lang$type = true;
|
||||
|
||||
secretary.core.t_secretary$core37901.cljs$lang$ctorStr = "secretary.core/t_secretary$core37901";
|
||||
|
||||
secretary.core.t_secretary$core37901.cljs$lang$ctorPrWriter = ((function (clauses,vec__37898,re,params){
|
||||
return (function (this__36169__auto__,writer__36170__auto__,opt__36171__auto__){
|
||||
return cljs.core._write.call(null,writer__36170__auto__,"secretary.core/t_secretary$core37901");
|
||||
});})(clauses,vec__37898,re,params))
|
||||
;
|
||||
|
||||
secretary.core.__GT_t_secretary$core37901 = ((function (clauses,vec__37898,re,params){
|
||||
return (function secretary$core$compile_route_$___GT_t_secretary$core37901(orig_route__$1,clauses__$1,vec__37898__$1,re__$1,params__$1,meta37902){
|
||||
return (new secretary.core.t_secretary$core37901(orig_route__$1,clauses__$1,vec__37898__$1,re__$1,params__$1,meta37902));
|
||||
});})(clauses,vec__37898,re,params))
|
||||
;
|
||||
|
||||
}
|
||||
|
||||
return (new secretary.core.t_secretary$core37901(orig_route,clauses,vec__37898,re,params,cljs.core.PersistentArrayMap.EMPTY));
|
||||
});
|
||||
secretary.core.render_route_STAR_ = (function secretary$core$render_route_STAR_(var_args){
|
||||
var args__36784__auto__ = [];
|
||||
var len__36777__auto___37910 = arguments.length;
|
||||
var i__36778__auto___37911 = (0);
|
||||
while(true){
|
||||
if((i__36778__auto___37911 < len__36777__auto___37910)){
|
||||
args__36784__auto__.push((arguments[i__36778__auto___37911]));
|
||||
|
||||
var G__37912 = (i__36778__auto___37911 + (1));
|
||||
i__36778__auto___37911 = G__37912;
|
||||
continue;
|
||||
} else {
|
||||
}
|
||||
break;
|
||||
}
|
||||
|
||||
var argseq__36785__auto__ = ((((1) < args__36784__auto__.length))?(new cljs.core.IndexedSeq(args__36784__auto__.slice((1)),(0),null)):null);
|
||||
return secretary.core.render_route_STAR_.cljs$core$IFn$_invoke$arity$variadic((arguments[(0)]),argseq__36785__auto__);
|
||||
});
|
||||
|
||||
secretary.core.render_route_STAR_.cljs$core$IFn$_invoke$arity$variadic = (function (obj,args){
|
||||
if(((!((obj == null)))?(((false) || ((cljs.core.PROTOCOL_SENTINEL === obj.secretary$core$IRenderRoute$)))?true:(((!obj.cljs$lang$protocol_mask$partition$))?cljs.core.native_satisfies_QMARK_.call(null,secretary.core.IRenderRoute,obj):false)):cljs.core.native_satisfies_QMARK_.call(null,secretary.core.IRenderRoute,obj))){
|
||||
return cljs.core.apply.call(null,secretary.core.render_route,obj,args);
|
||||
} else {
|
||||
return null;
|
||||
}
|
||||
});
|
||||
|
||||
secretary.core.render_route_STAR_.cljs$lang$maxFixedArity = (1);
|
||||
|
||||
secretary.core.render_route_STAR_.cljs$lang$applyTo = (function (seq37907){
|
||||
var G__37908 = cljs.core.first.call(null,seq37907);
|
||||
var seq37907__$1 = cljs.core.next.call(null,seq37907);
|
||||
return secretary.core.render_route_STAR_.cljs$core$IFn$_invoke$arity$variadic(G__37908,seq37907__$1);
|
||||
});
|
||||
|
||||
secretary.core._STAR_routes_STAR_ = cljs.core.atom.call(null,cljs.core.PersistentVector.EMPTY);
|
||||
secretary.core.add_route_BANG_ = (function secretary$core$add_route_BANG_(obj,action){
|
||||
var obj__$1 = ((typeof obj === 'string')?secretary.core.compile_route.call(null,obj):obj);
|
||||
return cljs.core.swap_BANG_.call(null,secretary.core._STAR_routes_STAR_,cljs.core.conj,new cljs.core.PersistentVector(null, 2, 5, cljs.core.PersistentVector.EMPTY_NODE, [obj__$1,action], null));
|
||||
});
|
||||
secretary.core.remove_route_BANG_ = (function secretary$core$remove_route_BANG_(obj){
|
||||
return cljs.core.swap_BANG_.call(null,secretary.core._STAR_routes_STAR_,(function (rs){
|
||||
return cljs.core.filterv.call(null,(function (p__37913){
|
||||
var vec__37914 = p__37913;
|
||||
var x = cljs.core.nth.call(null,vec__37914,(0),null);
|
||||
var _ = cljs.core.nth.call(null,vec__37914,(1),null);
|
||||
return cljs.core.not_EQ_.call(null,x,obj);
|
||||
}),rs);
|
||||
}));
|
||||
});
|
||||
secretary.core.reset_routes_BANG_ = (function secretary$core$reset_routes_BANG_(){
|
||||
return cljs.core.reset_BANG_.call(null,secretary.core._STAR_routes_STAR_,cljs.core.PersistentVector.EMPTY);
|
||||
});
|
||||
secretary.core.locate_route = (function secretary$core$locate_route(route){
|
||||
return cljs.core.some.call(null,(function (p__37917){
|
||||
var vec__37918 = p__37917;
|
||||
var compiled_route = cljs.core.nth.call(null,vec__37918,(0),null);
|
||||
var action = cljs.core.nth.call(null,vec__37918,(1),null);
|
||||
var temp__5457__auto__ = secretary.core.route_matches.call(null,compiled_route,route);
|
||||
if(cljs.core.truth_(temp__5457__auto__)){
|
||||
var params = temp__5457__auto__;
|
||||
return new cljs.core.PersistentArrayMap(null, 3, [new cljs.core.Keyword(null,"action","action",-811238024),action,new cljs.core.Keyword(null,"params","params",710516235),params,new cljs.core.Keyword(null,"route","route",329891309),compiled_route], null);
|
||||
} else {
|
||||
return null;
|
||||
}
|
||||
}),cljs.core.deref.call(null,secretary.core._STAR_routes_STAR_));
|
||||
});
|
||||
/**
|
||||
* Returns original route value as set in defroute when passed a URI path.
|
||||
*/
|
||||
secretary.core.locate_route_value = (function secretary$core$locate_route_value(uri){
|
||||
return secretary.core.route_value.call(null,new cljs.core.Keyword(null,"route","route",329891309).cljs$core$IFn$_invoke$arity$1(secretary.core.locate_route.call(null,uri)));
|
||||
});
|
||||
secretary.core.prefix = (function secretary$core$prefix(){
|
||||
return [cljs.core.str.cljs$core$IFn$_invoke$arity$1(secretary.core.get_config.call(null,new cljs.core.PersistentVector(null, 1, 5, cljs.core.PersistentVector.EMPTY_NODE, [new cljs.core.Keyword(null,"prefix","prefix",-265908465)], null)))].join('');
|
||||
});
|
||||
secretary.core.uri_without_prefix = (function secretary$core$uri_without_prefix(uri){
|
||||
return clojure.string.replace.call(null,uri,cljs.core.re_pattern.call(null,["^",cljs.core.str.cljs$core$IFn$_invoke$arity$1(secretary.core.prefix.call(null))].join('')),"");
|
||||
});
|
||||
/**
|
||||
* Ensures that the uri has a leading slash
|
||||
*/
|
||||
secretary.core.uri_with_leading_slash = (function secretary$core$uri_with_leading_slash(uri){
|
||||
if(cljs.core._EQ_.call(null,"/",cljs.core.first.call(null,uri))){
|
||||
return uri;
|
||||
} else {
|
||||
return ["/",cljs.core.str.cljs$core$IFn$_invoke$arity$1(uri)].join('');
|
||||
}
|
||||
});
|
||||
/**
|
||||
* Dispatch an action for a given route if it matches the URI path.
|
||||
*/
|
||||
secretary.core.dispatch_BANG_ = (function secretary$core$dispatch_BANG_(uri){
|
||||
var vec__37921 = clojure.string.split.call(null,secretary.core.uri_without_prefix.call(null,uri),/\?/);
|
||||
var uri_path = cljs.core.nth.call(null,vec__37921,(0),null);
|
||||
var query_string = cljs.core.nth.call(null,vec__37921,(1),null);
|
||||
var uri_path__$1 = secretary.core.uri_with_leading_slash.call(null,uri_path);
|
||||
var query_params = (cljs.core.truth_(query_string)?new cljs.core.PersistentArrayMap(null, 1, [new cljs.core.Keyword(null,"query-params","query-params",900640534),secretary.core.decode_query_params.call(null,query_string)], null):null);
|
||||
var map__37924 = secretary.core.locate_route.call(null,uri_path__$1);
|
||||
var map__37924__$1 = ((((!((map__37924 == null)))?((((map__37924.cljs$lang$protocol_mask$partition0$ & (64))) || ((cljs.core.PROTOCOL_SENTINEL === map__37924.cljs$core$ISeq$)))?true:false):false))?cljs.core.apply.call(null,cljs.core.hash_map,map__37924):map__37924);
|
||||
var action = cljs.core.get.call(null,map__37924__$1,new cljs.core.Keyword(null,"action","action",-811238024));
|
||||
var params = cljs.core.get.call(null,map__37924__$1,new cljs.core.Keyword(null,"params","params",710516235));
|
||||
var action__$1 = (function (){var or__35498__auto__ = action;
|
||||
if(cljs.core.truth_(or__35498__auto__)){
|
||||
return or__35498__auto__;
|
||||
} else {
|
||||
return cljs.core.identity;
|
||||
}
|
||||
})();
|
||||
var params__$1 = cljs.core.merge.call(null,params,query_params);
|
||||
return action__$1.call(null,params__$1);
|
||||
});
|
||||
secretary.core.invalid_params = (function secretary$core$invalid_params(params,validations){
|
||||
return cljs.core.reduce.call(null,(function (m,p__37926){
|
||||
var vec__37927 = p__37926;
|
||||
var key = cljs.core.nth.call(null,vec__37927,(0),null);
|
||||
var validation = cljs.core.nth.call(null,vec__37927,(1),null);
|
||||
var value = cljs.core.get.call(null,params,key);
|
||||
if(cljs.core.truth_(cljs.core.re_matches.call(null,validation,value))){
|
||||
return m;
|
||||
} else {
|
||||
return cljs.core.assoc.call(null,m,key,new cljs.core.PersistentVector(null, 2, 5, cljs.core.PersistentVector.EMPTY_NODE, [value,validation], null));
|
||||
}
|
||||
}),cljs.core.PersistentArrayMap.EMPTY,cljs.core.partition.call(null,(2),validations));
|
||||
});
|
||||
secretary.core.params_valid_QMARK_ = (function secretary$core$params_valid_QMARK_(params,validations){
|
||||
return cljs.core.empty_QMARK_.call(null,secretary.core.invalid_params.call(null,params,validations));
|
||||
});
|
||||
goog.object.set(secretary.core.IRouteMatches,"string",true);
|
||||
|
||||
goog.object.set(secretary.core.route_matches,"string",(function (this$,route){
|
||||
return secretary.core.route_matches.call(null,secretary.core.compile_route.call(null,this$),route);
|
||||
}));
|
||||
|
||||
RegExp.prototype.secretary$core$IRouteMatches$ = cljs.core.PROTOCOL_SENTINEL;
|
||||
|
||||
RegExp.prototype.secretary$core$IRouteMatches$route_matches$arity$2 = (function (this$,route){
|
||||
var this$__$1 = this;
|
||||
var temp__5457__auto__ = secretary.core.re_matches_STAR_.call(null,this$__$1,route);
|
||||
if(cljs.core.truth_(temp__5457__auto__)){
|
||||
var vec__37930 = temp__5457__auto__;
|
||||
var seq__37931 = cljs.core.seq.call(null,vec__37930);
|
||||
var first__37932 = cljs.core.first.call(null,seq__37931);
|
||||
var seq__37931__$1 = cljs.core.next.call(null,seq__37931);
|
||||
var _ = first__37932;
|
||||
var ms = seq__37931__$1;
|
||||
return cljs.core.vec.call(null,ms);
|
||||
} else {
|
||||
return null;
|
||||
}
|
||||
});
|
||||
|
||||
cljs.core.PersistentVector.prototype.secretary$core$IRouteMatches$ = cljs.core.PROTOCOL_SENTINEL;
|
||||
|
||||
cljs.core.PersistentVector.prototype.secretary$core$IRouteMatches$route_matches$arity$2 = (function (p__37933,route){
|
||||
var vec__37934 = p__37933;
|
||||
var seq__37935 = cljs.core.seq.call(null,vec__37934);
|
||||
var first__37936 = cljs.core.first.call(null,seq__37935);
|
||||
var seq__37935__$1 = cljs.core.next.call(null,seq__37935);
|
||||
var route_string = first__37936;
|
||||
var validations = seq__37935__$1;
|
||||
var vec__37937 = this;
|
||||
var seq__37938 = cljs.core.seq.call(null,vec__37937);
|
||||
var first__37939 = cljs.core.first.call(null,seq__37938);
|
||||
var seq__37938__$1 = cljs.core.next.call(null,seq__37938);
|
||||
var route_string__$1 = first__37939;
|
||||
var validations__$1 = seq__37938__$1;
|
||||
var params = secretary.core.route_matches.call(null,secretary.core.compile_route.call(null,route_string__$1),route);
|
||||
if(cljs.core.truth_(secretary.core.params_valid_QMARK_.call(null,params,validations__$1))){
|
||||
return params;
|
||||
} else {
|
||||
return null;
|
||||
}
|
||||
});
|
||||
goog.object.set(secretary.core.IRouteValue,"string",true);
|
||||
|
||||
goog.object.set(secretary.core.route_value,"string",(function (this$){
|
||||
return secretary.core.route_value.call(null,secretary.core.compile_route.call(null,this$));
|
||||
}));
|
||||
|
||||
RegExp.prototype.secretary$core$IRouteValue$ = cljs.core.PROTOCOL_SENTINEL;
|
||||
|
||||
RegExp.prototype.secretary$core$IRouteValue$route_value$arity$1 = (function (this$){
|
||||
var this$__$1 = this;
|
||||
return this$__$1;
|
||||
});
|
||||
|
||||
cljs.core.PersistentVector.prototype.secretary$core$IRouteValue$ = cljs.core.PROTOCOL_SENTINEL;
|
||||
|
||||
cljs.core.PersistentVector.prototype.secretary$core$IRouteValue$route_value$arity$1 = (function (p__37940){
|
||||
var vec__37941 = p__37940;
|
||||
var seq__37942 = cljs.core.seq.call(null,vec__37941);
|
||||
var first__37943 = cljs.core.first.call(null,seq__37942);
|
||||
var seq__37942__$1 = cljs.core.next.call(null,seq__37942);
|
||||
var route_string = first__37943;
|
||||
var validations = seq__37942__$1;
|
||||
var vec__37944 = this;
|
||||
var seq__37945 = cljs.core.seq.call(null,vec__37944);
|
||||
var first__37946 = cljs.core.first.call(null,seq__37945);
|
||||
var seq__37945__$1 = cljs.core.next.call(null,seq__37945);
|
||||
var route_string__$1 = first__37946;
|
||||
var validations__$1 = seq__37945__$1;
|
||||
return cljs.core.vec.call(null,cljs.core.cons.call(null,secretary.core.route_value.call(null,route_string__$1),validations__$1));
|
||||
});
|
||||
goog.object.set(secretary.core.IRenderRoute,"string",true);
|
||||
|
||||
goog.object.set(secretary.core.render_route,"string",(function() {
|
||||
var G__37956 = null;
|
||||
var G__37956__1 = (function (this$){
|
||||
return secretary.core.render_route.call(null,this$,cljs.core.PersistentArrayMap.EMPTY);
|
||||
});
|
||||
var G__37956__2 = (function (this$,params){
|
||||
var map__37947 = params;
|
||||
var map__37947__$1 = ((((!((map__37947 == null)))?((((map__37947.cljs$lang$protocol_mask$partition0$ & (64))) || ((cljs.core.PROTOCOL_SENTINEL === map__37947.cljs$core$ISeq$)))?true:false):false))?cljs.core.apply.call(null,cljs.core.hash_map,map__37947):map__37947);
|
||||
var m = map__37947__$1;
|
||||
var query_params = cljs.core.get.call(null,map__37947__$1,new cljs.core.Keyword(null,"query-params","query-params",900640534));
|
||||
var a = cljs.core.atom.call(null,m);
|
||||
var path = this$.replace((new RegExp(":[^\\s.:*/]+|\\*[^\\s.:*/]*","g")),((function (map__37947,map__37947__$1,m,query_params,a){
|
||||
return (function ($1){
|
||||
var lookup = cljs.core.keyword.call(null,((cljs.core._EQ_.call(null,$1,"*"))?$1:cljs.core.subs.call(null,$1,(1))));
|
||||
var v = cljs.core.get.call(null,cljs.core.deref.call(null,a),lookup);
|
||||
var replacement = ((cljs.core.sequential_QMARK_.call(null,v))?(function (){
|
||||
cljs.core.swap_BANG_.call(null,a,cljs.core.assoc,lookup,cljs.core.next.call(null,v));
|
||||
|
||||
return secretary.core.encode_uri.call(null,cljs.core.first.call(null,v));
|
||||
})()
|
||||
:(cljs.core.truth_(v)?secretary.core.encode_uri.call(null,v):$1));
|
||||
return replacement;
|
||||
});})(map__37947,map__37947__$1,m,query_params,a))
|
||||
);
|
||||
var path__$1 = [cljs.core.str.cljs$core$IFn$_invoke$arity$1(secretary.core.get_config.call(null,new cljs.core.PersistentVector(null, 1, 5, cljs.core.PersistentVector.EMPTY_NODE, [new cljs.core.Keyword(null,"prefix","prefix",-265908465)], null))),cljs.core.str.cljs$core$IFn$_invoke$arity$1(path)].join('');
|
||||
var temp__5455__auto__ = (function (){var and__35486__auto__ = query_params;
|
||||
if(cljs.core.truth_(and__35486__auto__)){
|
||||
return secretary.core.encode_query_params.call(null,query_params);
|
||||
} else {
|
||||
return and__35486__auto__;
|
||||
}
|
||||
})();
|
||||
if(cljs.core.truth_(temp__5455__auto__)){
|
||||
var query_string = temp__5455__auto__;
|
||||
return [cljs.core.str.cljs$core$IFn$_invoke$arity$1(path__$1),"?",cljs.core.str.cljs$core$IFn$_invoke$arity$1(query_string)].join('');
|
||||
} else {
|
||||
return path__$1;
|
||||
}
|
||||
});
|
||||
G__37956 = function(this$,params){
|
||||
switch(arguments.length){
|
||||
case 1:
|
||||
return G__37956__1.call(this,this$);
|
||||
case 2:
|
||||
return G__37956__2.call(this,this$,params);
|
||||
}
|
||||
throw(new Error('Invalid arity: ' + (arguments.length - 1)));
|
||||
};
|
||||
G__37956.cljs$core$IFn$_invoke$arity$1 = G__37956__1;
|
||||
G__37956.cljs$core$IFn$_invoke$arity$2 = G__37956__2;
|
||||
return G__37956;
|
||||
})()
|
||||
);
|
||||
|
||||
cljs.core.PersistentVector.prototype.secretary$core$IRenderRoute$ = cljs.core.PROTOCOL_SENTINEL;
|
||||
|
||||
cljs.core.PersistentVector.prototype.secretary$core$IRenderRoute$render_route$arity$1 = (function (this$){
|
||||
var this$__$1 = this;
|
||||
return secretary.core.render_route.call(null,this$__$1,cljs.core.PersistentArrayMap.EMPTY);
|
||||
});
|
||||
|
||||
cljs.core.PersistentVector.prototype.secretary$core$IRenderRoute$render_route$arity$2 = (function (p__37949,params){
|
||||
var vec__37950 = p__37949;
|
||||
var seq__37951 = cljs.core.seq.call(null,vec__37950);
|
||||
var first__37952 = cljs.core.first.call(null,seq__37951);
|
||||
var seq__37951__$1 = cljs.core.next.call(null,seq__37951);
|
||||
var route_string = first__37952;
|
||||
var validations = seq__37951__$1;
|
||||
var vec__37953 = this;
|
||||
var seq__37954 = cljs.core.seq.call(null,vec__37953);
|
||||
var first__37955 = cljs.core.first.call(null,seq__37954);
|
||||
var seq__37954__$1 = cljs.core.next.call(null,seq__37954);
|
||||
var route_string__$1 = first__37955;
|
||||
var validations__$1 = seq__37954__$1;
|
||||
var invalid = secretary.core.invalid_params.call(null,params,validations__$1);
|
||||
if(cljs.core.empty_QMARK_.call(null,invalid)){
|
||||
return secretary.core.render_route.call(null,route_string__$1,params);
|
||||
} else {
|
||||
throw cljs.core.ex_info.call(null,"Could not build route: invalid params",invalid);
|
||||
}
|
||||
});
|
||||
|
||||
//# sourceMappingURL=core.js.map?rel=1517021941569
|
||||
@@ -0,0 +1 @@
|
||||
{"version":3,"file":"\/home\/didier\/clojupyter\/website\/target\/cljsbuild\/public\/js\/out\/secretary\/core.js","sources":["core.cljs?rel=1517021941572"],"lineCount":829,"mappings":";AAAA;;;;AAQA,AAAA;AAAA;;;+BAAA,\/BAAaK;;AAAb,+BAAA,\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 truncated
|
||||
Reference in new issue
Block a user