create-expo-cljs-app
Version:
Create a react native application with Expo and Shadow-CLJS!
1 lines • 87.9 kB
JSON
["^ ","~:output",["^ ","~:js","goog.provide('spec_tools.parse');\nspec_tools.parse.type_dispatch_value = (function spec_tools$parse$type_dispatch_value(type){\nvar fexpr__55031 = ((cljs.core.sequential_QMARK_(type))?cljs.core.first:cljs.core.identity);\nreturn (fexpr__55031.cljs$core$IFn$_invoke$arity$1 ? fexpr__55031.cljs$core$IFn$_invoke$arity$1(type) : fexpr__55031.call(null,type));\n});\nspec_tools.parse.collection_type_QMARK_ = (function spec_tools$parse$collection_type_QMARK_(type){\nreturn cljs.core.contains_QMARK_(new cljs.core.PersistentHashSet(null, new cljs.core.PersistentArrayMap(null, 5, [new cljs.core.Keyword(null,\"tuple\",\"tuple\",-472667284),null,new cljs.core.Keyword(null,\"vector\",\"vector\",1902966158),null,new cljs.core.Keyword(null,\"map-of\",\"map-of\",1189682355),null,new cljs.core.Keyword(null,\"set\",\"set\",304602554),null,new cljs.core.Keyword(null,\"map\",\"map\",1371690461),null], null), null),type);\n});\nspec_tools.parse.leaf_type_QMARK_ = (function spec_tools$parse$leaf_type_QMARK_(type){\nreturn (!(cljs.core.contains_QMARK_((spec_tools.parse.non_leaf_types.cljs$core$IFn$_invoke$arity$0 ? spec_tools.parse.non_leaf_types.cljs$core$IFn$_invoke$arity$0() : spec_tools.parse.non_leaf_types.call(null)),type)));\n});\n/**\n * Parses info out of a spec. Spec can be passed as a name, Spec or a form.\n * Returns either `nil` or a map, with keys `:type` and other extra keys\n * (like `:keys` for s/keys specs).\n */\nspec_tools.parse.parse_spec = (function spec_tools$parse$parse_spec(x){\nwhile(true){\nif(cljs.core._EQ_.cljs$core$IFn$_invoke$arity$2(new cljs.core.Keyword(\"cljs.spec.alpha\",\"unknown\",\"cljs.spec.alpha/unknown\",651034818),x)){\nreturn null;\n} else {\nif(cljs.core.qualified_keyword_QMARK_(x)){\nvar G__55113 = cljs.spec.alpha.form(cljs.spec.alpha.get_spec(x));\nx = G__55113;\ncontinue;\n} else {\nif((x instanceof cljs.core.Symbol)){\nvar G__55032 = spec_tools.impl.normalize_symbol(x);\nvar G__55033 = null;\nreturn (spec_tools.parse.parse_form.cljs$core$IFn$_invoke$arity$2 ? spec_tools.parse.parse_form.cljs$core$IFn$_invoke$arity$2(G__55032,G__55033) : spec_tools.parse.parse_form.call(null,G__55032,G__55033));\n} else {\nif(cljs.core.seq_QMARK_(x)){\nvar G__55034 = spec_tools.impl.normalize_symbol(cljs.core.first(x));\nvar G__55035 = x;\nreturn (spec_tools.parse.parse_form.cljs$core$IFn$_invoke$arity$2 ? spec_tools.parse.parse_form.cljs$core$IFn$_invoke$arity$2(G__55034,G__55035) : spec_tools.parse.parse_form.call(null,G__55034,G__55035));\n} else {\nif(cljs.core.truth_(cljs.spec.alpha.spec_QMARK_(x))){\nvar G__55115 = cljs.spec.alpha.form(x);\nx = G__55115;\ncontinue;\n} else {\nif(cljs.core.ifn_QMARK_(x)){\nvar G__55036 = spec_tools.impl.normalize_symbol(spec_tools.form.resolve_form.cljs$core$IFn$_invoke$arity$1(x));\nvar G__55037 = null;\nreturn (spec_tools.parse.parse_form.cljs$core$IFn$_invoke$arity$2 ? spec_tools.parse.parse_form.cljs$core$IFn$_invoke$arity$2(G__55036,G__55037) : spec_tools.parse.parse_form.call(null,G__55036,G__55037));\n} else {\nreturn (spec_tools.parse.parse_form.cljs$core$IFn$_invoke$arity$2 ? spec_tools.parse.parse_form.cljs$core$IFn$_invoke$arity$2(x,null) : spec_tools.parse.parse_form.call(null,x,null));\n\n}\n}\n}\n}\n}\n}\nbreak;\n}\n});\nspec_tools.parse.parse_spec_with_spec_ref = (function spec_tools$parse$parse_spec_with_spec_ref(x){\nreturn cljs.core.merge.cljs$core$IFn$_invoke$arity$variadic(cljs.core.prim_seq.cljs$core$IFn$_invoke$arity$2([spec_tools.parse.parse_spec(x),((cljs.core.qualified_keyword_QMARK_(x))?new cljs.core.PersistentArrayMap(null, 1, [new cljs.core.Keyword(null,\"spec\",\"spec\",347520401),x], null):null)], 0));\n});\nspec_tools.parse.get_keys = (function spec_tools$parse$get_keys(parse_data){\nvar or__4126__auto__ = new cljs.core.Keyword(\"spec-tools.parse\",\"keys\",\"spec-tools.parse/keys\",1331815460).cljs$core$IFn$_invoke$arity$1(parse_data);\nif(cljs.core.truth_(or__4126__auto__)){\nreturn or__4126__auto__;\n} else {\nvar G__55038 = parse_data;\nvar G__55038__$1 = (((G__55038 == null))?null:new cljs.core.Keyword(\"spec-tools.parse\",\"items\",\"spec-tools.parse/items\",1255627600).cljs$core$IFn$_invoke$arity$1(G__55038));\nvar G__55038__$2 = (((G__55038__$1 == null))?null:cljs.core.keep.cljs$core$IFn$_invoke$arity$2(spec_tools.parse.get_keys,G__55038__$1));\nvar G__55038__$3 = (((G__55038__$2 == null))?null:cljs.core.apply.cljs$core$IFn$_invoke$arity$2(cljs.core.concat,G__55038__$2));\nvar G__55038__$4 = (((G__55038__$3 == null))?null:cljs.core.seq(G__55038__$3));\nif((G__55038__$4 == null)){\nreturn null;\n} else {\nreturn cljs.core.set(G__55038__$4);\n}\n}\n});\nif((typeof spec_tools !== 'undefined') && (typeof spec_tools.parse !== 'undefined') && (typeof spec_tools.parse.parse_form !== 'undefined')){\n} else {\nspec_tools.parse.parse_form = (function (){var method_table__4619__auto__ = cljs.core.atom.cljs$core$IFn$_invoke$arity$1(cljs.core.PersistentArrayMap.EMPTY);\nvar prefer_table__4620__auto__ = cljs.core.atom.cljs$core$IFn$_invoke$arity$1(cljs.core.PersistentArrayMap.EMPTY);\nvar method_cache__4621__auto__ = cljs.core.atom.cljs$core$IFn$_invoke$arity$1(cljs.core.PersistentArrayMap.EMPTY);\nvar cached_hierarchy__4622__auto__ = cljs.core.atom.cljs$core$IFn$_invoke$arity$1(cljs.core.PersistentArrayMap.EMPTY);\nvar hierarchy__4623__auto__ = cljs.core.get.cljs$core$IFn$_invoke$arity$3(new cljs.core.PersistentArrayMap(null, 1, [new cljs.core.Keyword(null,\"default\",\"default\",-1987822328),new cljs.core.Keyword(\"spec-tools.parse\",\"default\",\"spec-tools.parse/default\",-1184283850)], null),new cljs.core.Keyword(null,\"hierarchy\",\"hierarchy\",-1053470341),(function (){var fexpr__55043 = cljs.core.get_global_hierarchy;\nreturn (fexpr__55043.cljs$core$IFn$_invoke$arity$0 ? fexpr__55043.cljs$core$IFn$_invoke$arity$0() : fexpr__55043.call(null));\n})());\nreturn (new cljs.core.MultiFn(cljs.core.symbol.cljs$core$IFn$_invoke$arity$2(\"spec-tools.parse\",\"parse-form\"),(function (dispatch,_){\nreturn dispatch;\n}),new cljs.core.Keyword(\"spec-tools.parse\",\"default\",\"spec-tools.parse/default\",-1184283850),hierarchy__4623__auto__,method_table__4619__auto__,prefer_table__4620__auto__,method_cache__4621__auto__,cached_hierarchy__4622__auto__));\n})();\n}\nspec_tools.parse.parse_form.cljs$core$IMultiFn$_add_method$arity$3(null,new cljs.core.Keyword(\"spec-tools.parse\",\"default\",\"spec-tools.parse/default\",-1184283850),(function (_,___$1){\nreturn new cljs.core.PersistentArrayMap(null, 1, [new cljs.core.Keyword(null,\"type\",\"type\",1174270348),null], null);\n}));\nspec_tools.parse.non_leaf_types = (function spec_tools$parse$non_leaf_types(){\nreturn new cljs.core.PersistentHashSet(null, new cljs.core.PersistentArrayMap(null, 9, [new cljs.core.Keyword(null,\"or\",\"or\",235744169),null,new cljs.core.Keyword(null,\"multi-spec\",\"multi-spec\",1274719724),null,new cljs.core.Keyword(null,\"tuple\",\"tuple\",-472667284),null,new cljs.core.Keyword(null,\"vector\",\"vector\",1902966158),null,new cljs.core.Keyword(null,\"map-of\",\"map-of\",1189682355),null,new cljs.core.Keyword(null,\"and\",\"and\",-971899817),null,new cljs.core.Keyword(null,\"set\",\"set\",304602554),null,new cljs.core.Keyword(null,\"map\",\"map\",1371690461),null,new cljs.core.Keyword(null,\"nilable\",\"nilable\",1842307102),null], null), null);\n});\nspec_tools.parse.types = (function spec_tools$parse$types(){\nreturn new cljs.core.PersistentHashSet(null, new cljs.core.PersistentArrayMap(null, 21, [new cljs.core.Keyword(null,\"date\",\"date\",-1463434462),null,new cljs.core.Keyword(null,\"long\",\"long\",-171452093),null,new cljs.core.Keyword(null,\"double\",\"double\",884886883),null,new cljs.core.Keyword(null,\"symbol\",\"symbol\",-1038572696),null,new cljs.core.Keyword(null,\"or\",\"or\",235744169),null,new cljs.core.Keyword(null,\"multi-spec\",\"multi-spec\",1274719724),null,new cljs.core.Keyword(null,\"tuple\",\"tuple\",-472667284),null,new cljs.core.Keyword(null,\"string\",\"string\",-1989541586),null,new cljs.core.Keyword(null,\"vector\",\"vector\",1902966158),null,new cljs.core.Keyword(null,\"spec\",\"spec\",347520401),null,new cljs.core.Keyword(null,\"map-of\",\"map-of\",1189682355),null,new cljs.core.Keyword(null,\"keyword\",\"keyword\",811389747),null,new cljs.core.Keyword(null,\"ratio\",\"ratio\",-926560044),null,new cljs.core.Keyword(null,\"bigdec\",\"bigdec\",1019443956),null,new cljs.core.Keyword(null,\"and\",\"and\",-971899817),null,new cljs.core.Keyword(null,\"uri\",\"uri\",-774711847),null,new cljs.core.Keyword(null,\"uuid\",\"uuid\",-2145095719),null,new cljs.core.Keyword(null,\"set\",\"set\",304602554),null,new cljs.core.Keyword(null,\"boolean\",\"boolean\",-1919418404),null,new cljs.core.Keyword(null,\"map\",\"map\",1371690461),null,new cljs.core.Keyword(null,\"nilable\",\"nilable\",1842307102),null], null), null);\n});\nspec_tools.parse.type_symbols = (function spec_tools$parse$type_symbols(){\nreturn cljs.core.set(cljs.core.filter.cljs$core$IFn$_invoke$arity$2(cljs.core.symbol_QMARK_,cljs.core.keys(cljs.core.methods$(spec_tools.parse.parse_form))));\n});\nspec_tools.parse.parse_form.cljs$core$IMultiFn$_add_method$arity$3(null,new cljs.core.Symbol(\"clojure.core\",\"any?\",\"clojure.core/any?\",-1093069272,null),(function (_,___$1){\nreturn new cljs.core.PersistentArrayMap(null, 1, [new cljs.core.Keyword(null,\"spec\",\"spec\",347520401),cljs.core.any_QMARK_], null);\n}));\nspec_tools.parse.parse_form.cljs$core$IMultiFn$_add_method$arity$3(null,new cljs.core.Symbol(\"clojure.core\",\"some?\",\"clojure.core/some?\",-543337038,null),(function (_,___$1){\nreturn new cljs.core.PersistentArrayMap(null, 1, [new cljs.core.Keyword(null,\"spec\",\"spec\",347520401),cljs.core.some_QMARK_], null);\n}));\nspec_tools.parse.parse_form.cljs$core$IMultiFn$_add_method$arity$3(null,new cljs.core.Symbol(\"clojure.core\",\"number?\",\"clojure.core/number?\",-1044499897,null),(function (_,___$1){\nreturn new cljs.core.PersistentArrayMap(null, 2, [new cljs.core.Keyword(null,\"spec\",\"spec\",347520401),cljs.core.number_QMARK_,new cljs.core.Keyword(null,\"type\",\"type\",1174270348),new cljs.core.Keyword(null,\"double\",\"double\",884886883)], null);\n}));\nspec_tools.parse.parse_form.cljs$core$IMultiFn$_add_method$arity$3(null,new cljs.core.Symbol(\"clojure.core\",\"integer?\",\"clojure.core/integer?\",-1617881728,null),(function (_,___$1){\nreturn new cljs.core.PersistentArrayMap(null, 2, [new cljs.core.Keyword(null,\"spec\",\"spec\",347520401),cljs.core.integer_QMARK_,new cljs.core.Keyword(null,\"type\",\"type\",1174270348),new cljs.core.Keyword(null,\"long\",\"long\",-171452093)], null);\n}));\nspec_tools.parse.parse_form.cljs$core$IMultiFn$_add_method$arity$3(null,new cljs.core.Symbol(\"clojure.core\",\"int?\",\"clojure.core/int?\",1026034806,null),(function (_,___$1){\nreturn new cljs.core.PersistentArrayMap(null, 2, [new cljs.core.Keyword(null,\"spec\",\"spec\",347520401),cljs.core.int_QMARK_,new cljs.core.Keyword(null,\"type\",\"type\",1174270348),new cljs.core.Keyword(null,\"long\",\"long\",-171452093)], null);\n}));\nspec_tools.parse.parse_form.cljs$core$IMultiFn$_add_method$arity$3(null,new cljs.core.Symbol(\"clojure.core\",\"pos-int?\",\"clojure.core/pos-int?\",-1946393424,null),(function (_,___$1){\nreturn new cljs.core.PersistentArrayMap(null, 2, [new cljs.core.Keyword(null,\"spec\",\"spec\",347520401),cljs.core.pos_int_QMARK_,new cljs.core.Keyword(null,\"type\",\"type\",1174270348),new cljs.core.Keyword(null,\"long\",\"long\",-171452093)], null);\n}));\nspec_tools.parse.parse_form.cljs$core$IMultiFn$_add_method$arity$3(null,new cljs.core.Symbol(\"clojure.core\",\"neg-int?\",\"clojure.core/neg-int?\",-830554117,null),(function (_,___$1){\nreturn new cljs.core.PersistentArrayMap(null, 2, [new cljs.core.Keyword(null,\"spec\",\"spec\",347520401),cljs.core.neg_int_QMARK_,new cljs.core.Keyword(null,\"type\",\"type\",1174270348),new cljs.core.Keyword(null,\"long\",\"long\",-171452093)], null);\n}));\nspec_tools.parse.parse_form.cljs$core$IMultiFn$_add_method$arity$3(null,new cljs.core.Symbol(\"clojure.core\",\"nat-int?\",\"clojure.core/nat-int?\",-65390525,null),(function (_,___$1){\nreturn new cljs.core.PersistentArrayMap(null, 2, [new cljs.core.Keyword(null,\"spec\",\"spec\",347520401),cljs.core.nat_int_QMARK_,new cljs.core.Keyword(null,\"type\",\"type\",1174270348),new cljs.core.Keyword(null,\"long\",\"long\",-171452093)], null);\n}));\nspec_tools.parse.parse_form.cljs$core$IMultiFn$_add_method$arity$3(null,new cljs.core.Symbol(\"clojure.core\",\"float?\",\"clojure.core/float?\",-99660463,null),(function (_,___$1){\nreturn new cljs.core.PersistentArrayMap(null, 2, [new cljs.core.Keyword(null,\"spec\",\"spec\",347520401),cljs.core.float_QMARK_,new cljs.core.Keyword(null,\"type\",\"type\",1174270348),new cljs.core.Keyword(null,\"double\",\"double\",884886883)], null);\n}));\nspec_tools.parse.parse_form.cljs$core$IMultiFn$_add_method$arity$3(null,new cljs.core.Symbol(\"clojure.core\",\"double?\",\"clojure.core/double?\",1847770331,null),(function (_,___$1){\nreturn new cljs.core.PersistentArrayMap(null, 2, [new cljs.core.Keyword(null,\"spec\",\"spec\",347520401),cljs.core.double_QMARK_,new cljs.core.Keyword(null,\"type\",\"type\",1174270348),new cljs.core.Keyword(null,\"double\",\"double\",884886883)], null);\n}));\nspec_tools.parse.parse_form.cljs$core$IMultiFn$_add_method$arity$3(null,new cljs.core.Symbol(\"clojure.core\",\"boolean?\",\"clojure.core/boolean?\",1566259823,null),(function (_,___$1){\nreturn new cljs.core.PersistentArrayMap(null, 2, [new cljs.core.Keyword(null,\"spec\",\"spec\",347520401),cljs.core.boolean_QMARK_,new cljs.core.Keyword(null,\"type\",\"type\",1174270348),new cljs.core.Keyword(null,\"boolean\",\"boolean\",-1919418404)], null);\n}));\nspec_tools.parse.parse_form.cljs$core$IMultiFn$_add_method$arity$3(null,new cljs.core.Symbol(\"clojure.core\",\"string?\",\"clojure.core/string?\",-1902673477,null),(function (_,___$1){\nreturn new cljs.core.PersistentArrayMap(null, 2, [new cljs.core.Keyword(null,\"spec\",\"spec\",347520401),cljs.core.string_QMARK_,new cljs.core.Keyword(null,\"type\",\"type\",1174270348),new cljs.core.Keyword(null,\"string\",\"string\",-1989541586)], null);\n}));\nspec_tools.parse.parse_form.cljs$core$IMultiFn$_add_method$arity$3(null,new cljs.core.Symbol(\"clojure.core\",\"ident?\",\"clojure.core/ident?\",1397717549,null),(function (_,___$1){\nreturn new cljs.core.PersistentArrayMap(null, 2, [new cljs.core.Keyword(null,\"spec\",\"spec\",347520401),cljs.core.ident_QMARK_,new cljs.core.Keyword(null,\"type\",\"type\",1174270348),new cljs.core.Keyword(null,\"keyword\",\"keyword\",811389747)], null);\n}));\nspec_tools.parse.parse_form.cljs$core$IMultiFn$_add_method$arity$3(null,new cljs.core.Symbol(\"clojure.core\",\"simple-ident?\",\"clojure.core/simple-ident?\",1706467712,null),(function (_,___$1){\nreturn new cljs.core.PersistentArrayMap(null, 2, [new cljs.core.Keyword(null,\"spec\",\"spec\",347520401),cljs.core.simple_ident_QMARK_,new cljs.core.Keyword(null,\"type\",\"type\",1174270348),new cljs.core.Keyword(null,\"keyword\",\"keyword\",811389747)], null);\n}));\nspec_tools.parse.parse_form.cljs$core$IMultiFn$_add_method$arity$3(null,new cljs.core.Symbol(\"clojure.core\",\"qualified-ident?\",\"clojure.core/qualified-ident?\",-1630579588,null),(function (_,___$1){\nreturn new cljs.core.PersistentArrayMap(null, 2, [new cljs.core.Keyword(null,\"spec\",\"spec\",347520401),cljs.core.qualified_ident_QMARK_,new cljs.core.Keyword(null,\"type\",\"type\",1174270348),new cljs.core.Keyword(null,\"keyword\",\"keyword\",811389747)], null);\n}));\nspec_tools.parse.parse_form.cljs$core$IMultiFn$_add_method$arity$3(null,new cljs.core.Symbol(\"clojure.core\",\"keyword?\",\"clojure.core/keyword?\",543424180,null),(function (_,___$1){\nreturn new cljs.core.PersistentArrayMap(null, 2, [new cljs.core.Keyword(null,\"spec\",\"spec\",347520401),cljs.core.keyword_QMARK_,new cljs.core.Keyword(null,\"type\",\"type\",1174270348),new cljs.core.Keyword(null,\"keyword\",\"keyword\",811389747)], null);\n}));\nspec_tools.parse.parse_form.cljs$core$IMultiFn$_add_method$arity$3(null,new cljs.core.Symbol(\"clojure.core\",\"simple-keyword?\",\"clojure.core/simple-keyword?\",406342760,null),(function (_,___$1){\nreturn new cljs.core.PersistentArrayMap(null, 2, [new cljs.core.Keyword(null,\"spec\",\"spec\",347520401),cljs.core.simple_keyword_QMARK_,new cljs.core.Keyword(null,\"type\",\"type\",1174270348),new cljs.core.Keyword(null,\"keyword\",\"keyword\",811389747)], null);\n}));\nspec_tools.parse.parse_form.cljs$core$IMultiFn$_add_method$arity$3(null,new cljs.core.Symbol(\"clojure.core\",\"qualified-keyword?\",\"clojure.core/qualified-keyword?\",-398139912,null),(function (_,___$1){\nreturn new cljs.core.PersistentArrayMap(null, 2, [new cljs.core.Keyword(null,\"spec\",\"spec\",347520401),cljs.core.qualified_keyword_QMARK_,new cljs.core.Keyword(null,\"type\",\"type\",1174270348),new cljs.core.Keyword(null,\"keyword\",\"keyword\",811389747)], null);\n}));\nspec_tools.parse.parse_form.cljs$core$IMultiFn$_add_method$arity$3(null,new cljs.core.Symbol(\"clojure.core\",\"symbol?\",\"clojure.core/symbol?\",1587987784,null),(function (_,___$1){\nreturn new cljs.core.PersistentArrayMap(null, 2, [new cljs.core.Keyword(null,\"spec\",\"spec\",347520401),cljs.core.symbol_QMARK_,new cljs.core.Keyword(null,\"type\",\"type\",1174270348),new cljs.core.Keyword(null,\"symbol\",\"symbol\",-1038572696)], null);\n}));\nspec_tools.parse.parse_form.cljs$core$IMultiFn$_add_method$arity$3(null,new cljs.core.Symbol(\"clojure.core\",\"simple-symbol?\",\"clojure.core/simple-symbol?\",-1919094963,null),(function (_,___$1){\nreturn new cljs.core.PersistentArrayMap(null, 2, [new cljs.core.Keyword(null,\"spec\",\"spec\",347520401),cljs.core.simple_symbol_QMARK_,new cljs.core.Keyword(null,\"type\",\"type\",1174270348),new cljs.core.Keyword(null,\"symbol\",\"symbol\",-1038572696)], null);\n}));\nspec_tools.parse.parse_form.cljs$core$IMultiFn$_add_method$arity$3(null,new cljs.core.Symbol(\"clojure.core\",\"qualified-symbol?\",\"clojure.core/qualified-symbol?\",1469032566,null),(function (_,___$1){\nreturn new cljs.core.PersistentArrayMap(null, 2, [new cljs.core.Keyword(null,\"spec\",\"spec\",347520401),cljs.core.qualified_symbol_QMARK_,new cljs.core.Keyword(null,\"type\",\"type\",1174270348),new cljs.core.Keyword(null,\"symbol\",\"symbol\",-1038572696)], null);\n}));\nspec_tools.parse.parse_form.cljs$core$IMultiFn$_add_method$arity$3(null,new cljs.core.Symbol(\"clojure.core\",\"uuid?\",\"clojure.core/uuid?\",-100722718,null),(function (_,___$1){\nreturn new cljs.core.PersistentArrayMap(null, 2, [new cljs.core.Keyword(null,\"spec\",\"spec\",347520401),cljs.core.uuid_QMARK_,new cljs.core.Keyword(null,\"type\",\"type\",1174270348),new cljs.core.Keyword(null,\"uuid\",\"uuid\",-2145095719)], null);\n}));\nspec_tools.parse.parse_form.cljs$core$IMultiFn$_add_method$arity$3(null,new cljs.core.Symbol(\"clojure.core\",\"inst?\",\"clojure.core/inst?\",-1302678916,null),(function (_,___$1){\nreturn new cljs.core.PersistentArrayMap(null, 2, [new cljs.core.Keyword(null,\"spec\",\"spec\",347520401),cljs.core.inst_QMARK_,new cljs.core.Keyword(null,\"type\",\"type\",1174270348),new cljs.core.Keyword(null,\"date\",\"date\",-1463434462)], null);\n}));\nspec_tools.parse.parse_form.cljs$core$IMultiFn$_add_method$arity$3(null,new cljs.core.Symbol(\"clojure.core\",\"seqable?\",\"clojure.core/seqable?\",-696461980,null),(function (_,___$1){\nreturn new cljs.core.PersistentArrayMap(null, 1, [new cljs.core.Keyword(null,\"spec\",\"spec\",347520401),cljs.core.seqable_QMARK_], null);\n}));\nspec_tools.parse.parse_form.cljs$core$IMultiFn$_add_method$arity$3(null,new cljs.core.Symbol(\"clojure.core\",\"indexed?\",\"clojure.core/indexed?\",-1145703303,null),(function (_,___$1){\nreturn new cljs.core.PersistentArrayMap(null, 1, [new cljs.core.Keyword(null,\"spec\",\"spec\",347520401),cljs.core.indexed_QMARK_], null);\n}));\nspec_tools.parse.parse_form.cljs$core$IMultiFn$_add_method$arity$3(null,new cljs.core.Symbol(\"clojure.core\",\"map?\",\"clojure.core/map?\",-1425864013,null),(function (_,___$1){\nreturn new cljs.core.PersistentArrayMap(null, 1, [new cljs.core.Keyword(null,\"spec\",\"spec\",347520401),cljs.core.map_QMARK_], null);\n}));\nspec_tools.parse.parse_form.cljs$core$IMultiFn$_add_method$arity$3(null,new cljs.core.Symbol(\"clojure.core\",\"vector?\",\"clojure.core/vector?\",-1380385430,null),(function (_,___$1){\nreturn new cljs.core.PersistentArrayMap(null, 1, [new cljs.core.Keyword(null,\"spec\",\"spec\",347520401),cljs.core.vector_QMARK_], null);\n}));\nspec_tools.parse.parse_form.cljs$core$IMultiFn$_add_method$arity$3(null,new cljs.core.Symbol(\"clojure.core\",\"list?\",\"clojure.core/list?\",-775099136,null),(function (_,___$1){\nreturn new cljs.core.PersistentArrayMap(null, 1, [new cljs.core.Keyword(null,\"spec\",\"spec\",347520401),cljs.core.list_QMARK_], null);\n}));\nspec_tools.parse.parse_form.cljs$core$IMultiFn$_add_method$arity$3(null,new cljs.core.Symbol(\"clojure.core\",\"seq?\",\"clojure.core/seq?\",-1182659926,null),(function (_,___$1){\nreturn new cljs.core.PersistentArrayMap(null, 1, [new cljs.core.Keyword(null,\"spec\",\"spec\",347520401),cljs.core.seq_QMARK_], null);\n}));\nspec_tools.parse.parse_form.cljs$core$IMultiFn$_add_method$arity$3(null,new cljs.core.Symbol(\"clojure.core\",\"char?\",\"clojure.core/char?\",372498287,null),(function (_,___$1){\nreturn new cljs.core.PersistentArrayMap(null, 1, [new cljs.core.Keyword(null,\"spec\",\"spec\",347520401),cljs.core.char_QMARK_], null);\n}));\nspec_tools.parse.parse_form.cljs$core$IMultiFn$_add_method$arity$3(null,new cljs.core.Symbol(\"clojure.core\",\"set?\",\"clojure.core/set?\",-1275117977,null),(function (_,___$1){\nreturn new cljs.core.PersistentArrayMap(null, 1, [new cljs.core.Keyword(null,\"spec\",\"spec\",347520401),cljs.core.set_QMARK_], null);\n}));\nspec_tools.parse.parse_form.cljs$core$IMultiFn$_add_method$arity$3(null,new cljs.core.Symbol(\"clojure.core\",\"nil?\",\"clojure.core/nil?\",842444475,null),(function (_,___$1){\nreturn new cljs.core.PersistentArrayMap(null, 1, [new cljs.core.Keyword(null,\"spec\",\"spec\",347520401),cljs.core.nil_QMARK_], null);\n}));\nspec_tools.parse.parse_form.cljs$core$IMultiFn$_add_method$arity$3(null,new cljs.core.Symbol(\"clojure.core\",\"false?\",\"clojure.core/false?\",-1754275840,null),(function (_,___$1){\nreturn new cljs.core.PersistentArrayMap(null, 2, [new cljs.core.Keyword(null,\"spec\",\"spec\",347520401),cljs.core.false_QMARK_,new cljs.core.Keyword(null,\"type\",\"type\",1174270348),new cljs.core.Keyword(null,\"boolean\",\"boolean\",-1919418404)], null);\n}));\nspec_tools.parse.parse_form.cljs$core$IMultiFn$_add_method$arity$3(null,new cljs.core.Symbol(\"clojure.core\",\"true?\",\"clojure.core/true?\",-21483202,null),(function (_,___$1){\nreturn new cljs.core.PersistentArrayMap(null, 2, [new cljs.core.Keyword(null,\"spec\",\"spec\",347520401),cljs.core.true_QMARK_,new cljs.core.Keyword(null,\"type\",\"type\",1174270348),new cljs.core.Keyword(null,\"boolean\",\"boolean\",-1919418404)], null);\n}));\nspec_tools.parse.parse_form.cljs$core$IMultiFn$_add_method$arity$3(null,new cljs.core.Symbol(\"clojure.core\",\"zero?\",\"clojure.core/zero?\",-313584680,null),(function (_,___$1){\nreturn new cljs.core.PersistentArrayMap(null, 2, [new cljs.core.Keyword(null,\"spec\",\"spec\",347520401),cljs.core.zero_QMARK_,new cljs.core.Keyword(null,\"type\",\"type\",1174270348),new cljs.core.Keyword(null,\"long\",\"long\",-171452093)], null);\n}));\nspec_tools.parse.parse_form.cljs$core$IMultiFn$_add_method$arity$3(null,new cljs.core.Symbol(\"clojure.core\",\"coll?\",\"clojure.core/coll?\",1311547908,null),(function (_,___$1){\nreturn new cljs.core.PersistentArrayMap(null, 1, [new cljs.core.Keyword(null,\"spec\",\"spec\",347520401),cljs.core.coll_QMARK_], null);\n}));\nspec_tools.parse.parse_form.cljs$core$IMultiFn$_add_method$arity$3(null,new cljs.core.Symbol(\"clojure.core\",\"empty?\",\"clojure.core/empty?\",1788889970,null),(function (_,___$1){\nreturn new cljs.core.PersistentArrayMap(null, 1, [new cljs.core.Keyword(null,\"spec\",\"spec\",347520401),cljs.core.empty_QMARK_], null);\n}));\nspec_tools.parse.parse_form.cljs$core$IMultiFn$_add_method$arity$3(null,new cljs.core.Symbol(\"clojure.core\",\"associative?\",\"clojure.core/associative?\",634514106,null),(function (_,___$1){\nreturn new cljs.core.PersistentArrayMap(null, 2, [new cljs.core.Keyword(null,\"spec\",\"spec\",347520401),cljs.core.associative_QMARK_,new cljs.core.Keyword(null,\"type\",\"type\",1174270348),null], null);\n}));\nspec_tools.parse.parse_form.cljs$core$IMultiFn$_add_method$arity$3(null,new cljs.core.Symbol(\"clojure.core\",\"sequential?\",\"clojure.core/sequential?\",1943138316,null),(function (_,___$1){\nreturn new cljs.core.PersistentArrayMap(null, 1, [new cljs.core.Keyword(null,\"spec\",\"spec\",347520401),cljs.core.sequential_QMARK_], null);\n}));\nspec_tools.parse.parse_form.cljs$core$IMultiFn$_add_method$arity$3(null,new cljs.core.Keyword(\"clojure.spec.alpha\",\"unknown\",\"clojure.spec.alpha/unknown\",-246507596),(function (_,___$1){\nreturn null;\n}));\nspec_tools.parse.parse_form.cljs$core$IMultiFn$_add_method$arity$3(null,new cljs.core.Symbol(\"clojure.spec.alpha\",\"keys\",\"clojure.spec.alpha/keys\",-90227326,null),(function (_,form){\nvar map__55068 = spec_tools.impl.parse_keys(form);\nvar map__55068__$1 = (((((!((map__55068 == null))))?(((((map__55068.cljs$lang$protocol_mask$partition0$ & (64))) || ((cljs.core.PROTOCOL_SENTINEL === map__55068.cljs$core$ISeq$))))?true:false):false))?cljs.core.apply.cljs$core$IFn$_invoke$arity$2(cljs.core.hash_map,map__55068):map__55068);\nvar req = cljs.core.get.cljs$core$IFn$_invoke$arity$2(map__55068__$1,new cljs.core.Keyword(null,\"req\",\"req\",-326448303));\nvar opt = cljs.core.get.cljs$core$IFn$_invoke$arity$2(map__55068__$1,new cljs.core.Keyword(null,\"opt\",\"opt\",-794706369));\nvar req_un = cljs.core.get.cljs$core$IFn$_invoke$arity$2(map__55068__$1,new cljs.core.Keyword(null,\"req-un\",\"req-un\",1074571008));\nvar opt_un = cljs.core.get.cljs$core$IFn$_invoke$arity$2(map__55068__$1,new cljs.core.Keyword(null,\"opt-un\",\"opt-un\",883442496));\nvar key__GT_spec = cljs.core.get.cljs$core$IFn$_invoke$arity$2(map__55068__$1,new cljs.core.Keyword(null,\"key->spec\",\"key->spec\",1088543019));\nvar G__55070 = new cljs.core.PersistentArrayMap(null, 3, [new cljs.core.Keyword(null,\"type\",\"type\",1174270348),new cljs.core.Keyword(null,\"map\",\"map\",1371690461),new cljs.core.Keyword(\"spec-tools.parse\",\"key->spec\",\"spec-tools.parse/key->spec\",1347735257),key__GT_spec,new cljs.core.Keyword(\"spec-tools.parse\",\"keys\",\"spec-tools.parse/keys\",1331815460),cljs.core.set(cljs.core.concat.cljs$core$IFn$_invoke$arity$variadic(req,opt,cljs.core.prim_seq.cljs$core$IFn$_invoke$arity$2([req_un,opt_un], 0)))], null);\nvar G__55070__$1 = (cljs.core.truth_((function (){var or__4126__auto__ = req;\nif(cljs.core.truth_(or__4126__auto__)){\nreturn or__4126__auto__;\n} else {\nreturn req_un;\n}\n})())?cljs.core.assoc.cljs$core$IFn$_invoke$arity$3(G__55070,new cljs.core.Keyword(\"spec-tools.parse\",\"keys-req\",\"spec-tools.parse/keys-req\",-1559250753),cljs.core.set(cljs.core.concat.cljs$core$IFn$_invoke$arity$2(req,req_un))):G__55070);\nif(cljs.core.truth_((function (){var or__4126__auto__ = opt;\nif(cljs.core.truth_(or__4126__auto__)){\nreturn or__4126__auto__;\n} else {\nreturn opt_un;\n}\n})())){\nreturn cljs.core.assoc.cljs$core$IFn$_invoke$arity$3(G__55070__$1,new cljs.core.Keyword(\"spec-tools.parse\",\"keys-opt\",\"spec-tools.parse/keys-opt\",-1090203455),cljs.core.set(cljs.core.concat.cljs$core$IFn$_invoke$arity$2(opt,opt_un)));\n} else {\nreturn G__55070__$1;\n}\n}));\n/**\n * Given a multi-spec form, call its multi method methods to retrieve\n * its subspecs.\n */\nspec_tools.parse.get_multi_spec_sub_specs = (function spec_tools$parse$get_multi_spec_sub_specs(multi_spec_form){\nvar vec__55071 = multi_spec_form;\nvar seq__55072 = cljs.core.seq(vec__55071);\nvar first__55073 = cljs.core.first(seq__55072);\nvar seq__55072__$1 = cljs.core.next(seq__55072);\nvar _ = first__55073;\nvar first__55073__$1 = cljs.core.first(seq__55072__$1);\nvar seq__55072__$2 = cljs.core.next(seq__55072__$1);\nvar multi_method_symbol = first__55073__$1;\nvar ___$1 = seq__55072__$2;\nvar form = vec__55071;\nvar temp__5735__auto__ = cljs.core.first(cljs.core.filter.cljs$core$IFn$_invoke$arity$2((function (v){\nreturn cljs.core._EQ_.cljs$core$IFn$_invoke$arity$2(form,cljs.spec.alpha.form(v));\n}),cljs.core.vals(cljs.spec.alpha.registry())));\nif(cljs.core.truth_(temp__5735__auto__)){\nvar spec = temp__5735__auto__;\nreturn cljs.core.map.cljs$core$IFn$_invoke$arity$2((function (p__55078){\nvar vec__55079 = p__55078;\nvar spec_k = cljs.core.nth.cljs$core$IFn$_invoke$arity$3(vec__55079,(0),null);\nvar method = cljs.core.nth.cljs$core$IFn$_invoke$arity$3(vec__55079,(1),null);\nreturn new cljs.core.PersistentVector(null, 2, 5, cljs.core.PersistentVector.EMPTY_NODE, [spec_k,(method.cljs$core$IFn$_invoke$arity$1 ? method.cljs$core$IFn$_invoke$arity$1(null) : method.call(null,null))], null);\n}),cljs.core.methods$(cljs.core.deref(spec.mmvar)));\n} else {\nreturn null;\n}\n});\nspec_tools.parse.parse_form.cljs$core$IMultiFn$_add_method$arity$3(null,new cljs.core.Symbol(\"clojure.spec.alpha\",\"multi-spec\",\"clojure.spec.alpha/multi-spec\",1408976740,null),(function (_,form){\nreturn new cljs.core.PersistentArrayMap(null, 3, [new cljs.core.Keyword(null,\"type\",\"type\",1174270348),new cljs.core.Keyword(null,\"multi-spec\",\"multi-spec\",1274719724),new cljs.core.Keyword(\"spec-tools.parse\",\"key\",\"spec-tools.parse/key\",-753897253),cljs.core.last(form),new cljs.core.Keyword(\"spec-tools.parse\",\"dispatch\",\"spec-tools.parse/dispatch\",1593226563),cljs.core.into.cljs$core$IFn$_invoke$arity$2(cljs.core.PersistentArrayMap.EMPTY,spec_tools.parse.get_multi_spec_sub_specs(form))], null);\n}));\nspec_tools.parse.parse_form.cljs$core$IMultiFn$_add_method$arity$3(null,new cljs.core.Symbol(\"clojure.spec.alpha\",\"or\",\"clojure.spec.alpha/or\",434904251,null),(function (_,form){\nvar specs = cljs.core.mapv.cljs$core$IFn$_invoke$arity$2(cljs.core.comp.cljs$core$IFn$_invoke$arity$2(spec_tools.parse.parse_spec_with_spec_ref,cljs.core.second),cljs.core.partition.cljs$core$IFn$_invoke$arity$2((2),cljs.core.rest(form)));\nreturn new cljs.core.PersistentArrayMap(null, 2, [new cljs.core.Keyword(null,\"type\",\"type\",1174270348),new cljs.core.PersistentVector(null, 2, 5, cljs.core.PersistentVector.EMPTY_NODE, [new cljs.core.Keyword(null,\"or\",\"or\",235744169),cljs.core.vec(cljs.core.keep.cljs$core$IFn$_invoke$arity$2(cljs.core.identity,cljs.core.distinct.cljs$core$IFn$_invoke$arity$1(cljs.core.map.cljs$core$IFn$_invoke$arity$2(new cljs.core.Keyword(null,\"type\",\"type\",1174270348),specs))))], null),new cljs.core.Keyword(\"spec-tools.parse\",\"items\",\"spec-tools.parse/items\",1255627600),specs], null);\n}));\nspec_tools.parse.parse_form.cljs$core$IMultiFn$_add_method$arity$3(null,new cljs.core.Symbol(\"clojure.spec.alpha\",\"and\",\"clojure.spec.alpha/and\",-843882543,null),(function (_,form){\nvar specs = cljs.core.mapv.cljs$core$IFn$_invoke$arity$2(spec_tools.parse.parse_spec_with_spec_ref,cljs.core.rest(form));\nvar types = cljs.core.vec(cljs.core.keep.cljs$core$IFn$_invoke$arity$2(cljs.core.identity,cljs.core.distinct.cljs$core$IFn$_invoke$arity$1(cljs.core.map.cljs$core$IFn$_invoke$arity$2(new cljs.core.Keyword(null,\"type\",\"type\",1174270348),specs))));\nreturn new cljs.core.PersistentArrayMap(null, 2, [new cljs.core.Keyword(null,\"type\",\"type\",1174270348),new cljs.core.PersistentVector(null, 2, 5, cljs.core.PersistentVector.EMPTY_NODE, [new cljs.core.Keyword(null,\"and\",\"and\",-971899817),types], null),new cljs.core.Keyword(\"spec-tools.parse\",\"items\",\"spec-tools.parse/items\",1255627600),specs], null);\n}));\nspec_tools.parse.parse_form.cljs$core$IMultiFn$_add_method$arity$3(null,new cljs.core.Symbol(\"clojure.spec.alpha\",\"merge\",\"clojure.spec.alpha/merge\",472136035,null),(function (_,form){\nvar type_priority = (function (p1__55085_SHARP_){\nvar G__55087 = new cljs.core.PersistentArrayMap(null, 2, [new cljs.core.Keyword(null,\"map\",\"map\",1371690461),(0),new cljs.core.Keyword(null,\"multi-spec\",\"multi-spec\",1274719724),(1)], null);\nvar G__55088 = (0);\nvar fexpr__55086 = new cljs.core.Keyword(null,\"type\",\"type\",1174270348).cljs$core$IFn$_invoke$arity$1(p1__55085_SHARP_);\nreturn (fexpr__55086.cljs$core$IFn$_invoke$arity$2 ? fexpr__55086.cljs$core$IFn$_invoke$arity$2(G__55087,G__55088) : fexpr__55086.call(null,G__55087,G__55088));\n});\nreturn cljs.core.apply.cljs$core$IFn$_invoke$arity$2(spec_tools.impl.deep_merge,cljs.core.sort_by.cljs$core$IFn$_invoke$arity$2(type_priority,cljs.core.map.cljs$core$IFn$_invoke$arity$2(spec_tools.parse.parse_spec,cljs.core.rest(form))));\n}));\nspec_tools.parse.parse_form.cljs$core$IMultiFn$_add_method$arity$3(null,new cljs.core.Symbol(\"clojure.spec.alpha\",\"every\",\"clojure.spec.alpha/every\",-1327408778,null),(function (_,form){\nvar map__55093 = cljs.core.apply.cljs$core$IFn$_invoke$arity$2(cljs.core.hash_map,cljs.core.drop.cljs$core$IFn$_invoke$arity$2((2),form));\nvar map__55093__$1 = (((((!((map__55093 == null))))?(((((map__55093.cljs$lang$protocol_mask$partition0$ & (64))) || ((cljs.core.PROTOCOL_SENTINEL === map__55093.cljs$core$ISeq$))))?true:false):false))?cljs.core.apply.cljs$core$IFn$_invoke$arity$2(cljs.core.hash_map,map__55093):map__55093);\nvar into = cljs.core.get.cljs$core$IFn$_invoke$arity$2(map__55093__$1,new cljs.core.Keyword(null,\"into\",\"into\",-150836029));\nreturn new cljs.core.PersistentArrayMap(null, 2, [new cljs.core.Keyword(\"spec-tools.parse\",\"item\",\"spec-tools.parse/item\",-565704128),spec_tools.parse.parse_spec(cljs.core.second(form)),new cljs.core.Keyword(null,\"type\",\"type\",1174270348),((cljs.core.map_QMARK_(into))?new cljs.core.Keyword(null,\"map-of\",\"map-of\",1189682355):((cljs.core.set_QMARK_(into))?new cljs.core.Keyword(null,\"set\",\"set\",304602554):new cljs.core.Keyword(null,\"vector\",\"vector\",1902966158)\n))], null);\n}));\nspec_tools.parse.parse_form.cljs$core$IMultiFn$_add_method$arity$3(null,new cljs.core.Symbol(\"clojure.spec.alpha\",\"coll-of\",\"clojure.spec.alpha/coll-of\",-465249451,null),(function (_,form){\nvar map__55095 = cljs.core.apply.cljs$core$IFn$_invoke$arity$2(cljs.core.hash_map,cljs.core.drop.cljs$core$IFn$_invoke$arity$2((2),form));\nvar map__55095__$1 = (((((!((map__55095 == null))))?(((((map__55095.cljs$lang$protocol_mask$partition0$ & (64))) || ((cljs.core.PROTOCOL_SENTINEL === map__55095.cljs$core$ISeq$))))?true:false):false))?cljs.core.apply.cljs$core$IFn$_invoke$arity$2(cljs.core.hash_map,map__55095):map__55095);\nvar into = cljs.core.get.cljs$core$IFn$_invoke$arity$2(map__55095__$1,new cljs.core.Keyword(null,\"into\",\"into\",-150836029));\nreturn new cljs.core.PersistentArrayMap(null, 2, [new cljs.core.Keyword(\"spec-tools.parse\",\"item\",\"spec-tools.parse/item\",-565704128),spec_tools.parse.parse_spec_with_spec_ref(cljs.core.second(form)),new cljs.core.Keyword(null,\"type\",\"type\",1174270348),((cljs.core.map_QMARK_(into))?new cljs.core.Keyword(null,\"map-of\",\"map-of\",1189682355):((cljs.core.set_QMARK_(into))?new cljs.core.Keyword(null,\"set\",\"set\",304602554):new cljs.core.Keyword(null,\"vector\",\"vector\",1902966158)\n))], null);\n}));\nspec_tools.parse.parse_form.cljs$core$IMultiFn$_add_method$arity$3(null,new cljs.core.Symbol(\"clojure.spec.alpha\",\"map-of\",\"clojure.spec.alpha/map-of\",2125010727,null),(function (_,p__55097){\nvar vec__55098 = p__55097;\nvar ___$1 = cljs.core.nth.cljs$core$IFn$_invoke$arity$3(vec__55098,(0),null);\nvar k = cljs.core.nth.cljs$core$IFn$_invoke$arity$3(vec__55098,(1),null);\nvar v = cljs.core.nth.cljs$core$IFn$_invoke$arity$3(vec__55098,(2),null);\nreturn new cljs.core.PersistentArrayMap(null, 3, [new cljs.core.Keyword(null,\"type\",\"type\",1174270348),new cljs.core.Keyword(null,\"map-of\",\"map-of\",1189682355),new cljs.core.Keyword(\"spec-tools.parse\",\"key\",\"spec-tools.parse/key\",-753897253),spec_tools.parse.parse_spec_with_spec_ref(k),new cljs.core.Keyword(\"spec-tools.parse\",\"value\",\"spec-tools.parse/value\",-492706501),spec_tools.parse.parse_spec_with_spec_ref(v)], null);\n}));\nspec_tools.parse.parse_form.cljs$core$IMultiFn$_add_method$arity$3(null,new cljs.core.Symbol(\"spec-tools.core\",\"spec\",\"spec-tools.core/spec\",-497332036,null),(function (_,form){\nvar parsed = spec_tools.parse.parse_spec(new cljs.core.Keyword(null,\"spec\",\"spec\",347520401).cljs$core$IFn$_invoke$arity$1(cljs.core.last(form)));\nif(cljs.core.truth_(new cljs.core.Keyword(null,\"type\",\"type\",1174270348).cljs$core$IFn$_invoke$arity$1(parsed))){\nreturn parsed;\n} else {\nreturn new cljs.core.PersistentArrayMap(null, 1, [new cljs.core.Keyword(null,\"type\",\"type\",1174270348),new cljs.core.Keyword(null,\"spec\",\"spec\",347520401)], null);\n}\n}));\nspec_tools.parse.parse_form.cljs$core$IMultiFn$_add_method$arity$3(null,new cljs.core.Symbol(\"clojure.spec.alpha\",\"tuple\",\"clojure.spec.alpha/tuple\",800350846,null),(function (_,p__55102){\nvar vec__55103 = p__55102;\nvar seq__55104 = cljs.core.seq(vec__55103);\nvar first__55105 = cljs.core.first(seq__55104);\nvar seq__55104__$1 = cljs.core.next(seq__55104);\nvar ___$1 = first__55105;\nvar values = seq__55104__$1;\nvar specs = cljs.core.mapv.cljs$core$IFn$_invoke$arity$2(spec_tools.parse.parse_spec_with_spec_ref,values);\nvar types = cljs.core.mapv.cljs$core$IFn$_invoke$arity$2(new cljs.core.Keyword(null,\"type\",\"type\",1174270348),specs);\nreturn new cljs.core.PersistentArrayMap(null, 2, [new cljs.core.Keyword(null,\"type\",\"type\",1174270348),new cljs.core.PersistentVector(null, 2, 5, cljs.core.PersistentVector.EMPTY_NODE, [new cljs.core.Keyword(null,\"tuple\",\"tuple\",-472667284),types], null),new cljs.core.Keyword(\"spec-tools.parse\",\"items\",\"spec-tools.parse/items\",1255627600),specs], null);\n}));\nspec_tools.parse.parse_form.cljs$core$IMultiFn$_add_method$arity$3(null,new cljs.core.Symbol(\"clojure.spec.alpha\",\"nilable\",\"clojure.spec.alpha/nilable\",-1718644550,null),(function (_,form){\nvar spec = spec_tools.parse.parse_spec_with_spec_ref(cljs.core.second(form));\nreturn new cljs.core.PersistentArrayMap(null, 2, [new cljs.core.Keyword(null,\"type\",\"type\",1174270348),new cljs.core.Keyword(null,\"nilable\",\"nilable\",1842307102),new cljs.core.Keyword(\"spec-tools.parse\",\"item\",\"spec-tools.parse/item\",-565704128),spec], null);\n}));\nspec_tools.parse.parse_form.cljs$core$IMultiFn$_add_method$arity$3(null,new cljs.core.Symbol(\"spec-tools.core\",\"merge\",\"spec-tools.core/merge\",2048449266,null),(function (_,form){\nvar type_priority = (function (p1__55106_SHARP_){\nvar G__55112 = new cljs.core.PersistentArrayMap(null, 2, [new cljs.core.Keyword(null,\"map\",\"map\",1371690461),(1),new cljs.core.Keyword(null,\"multi-spec\",\"multi-spec\",1274719724),(0)], null);\nvar fexpr__55111 = new cljs.core.Keyword(null,\"type\",\"type\",1174270348).cljs$core$IFn$_invoke$arity$1(p1__55106_SHARP_);\nreturn (fexpr__55111.cljs$core$IFn$_invoke$arity$1 ? fexpr__55111.cljs$core$IFn$_invoke$arity$1(G__55112) : fexpr__55111.call(null,G__55112));\n});\nreturn cljs.core.apply.cljs$core$IFn$_invoke$arity$2(spec_tools.impl.deep_merge,cljs.core.sort_by.cljs$core$IFn$_invoke$arity$2(type_priority,cljs.core.map.cljs$core$IFn$_invoke$arity$2(spec_tools.parse.parse_spec,cljs.core.rest(form))));\n}));\n","~:ns-info",["^ ","~:rename-macros",null,"~:renames",["^ "],"~:meta",["^ ","~:file","spec_tools/parse.cljc","~:line",1,"~:column",5,"~:end-line",1,"~:end-column",21],"~:ns-aliases",["^ ","~$cljs.loader","~$shadow.loader","~$clojure.pprint","~$cljs.pprint","~$react","~$shadow.js.shim.module$react","~$clojure.spec.alpha","~$cljs.spec.alpha"],"~:use-macros",null,"~:excludes",["~#set",[]],"~:name","~$spec-tools.parse","~:op","~:ns","~:imports",null,"~:requires",["^ ","~$form","~$spec-tools.form","^B","^C","~$impl","~$spec-tools.impl","^P","^P","~$cljs.core","^Q","~$goog","^R","~$s","^C","^N","^N","^C","^C"],"~:seen",["^F",["~:require"]],"~:uses",null,"~:require-macros",["^ ","^Q","^Q","^B","^C","^O","^P","^P","^P","~$s","^C","^C","^C"],"~:form",["~#list",["~$ns","^H",["^X",["^T",["^P","~:as","^O"],["^B","^Z","~$s"],["^N","^Z","^M"]]]]],"~:flags",["^ ","^T",["^F",[]]],"~:js-deps",["^ "],"~:deps",["^R","^Q","^P","^C","^N"]],"^J","^H","~:resource-id",["~:shadow.build.classpath/resource","spec_tools/parse.cljc"],"~:compiled-at",1613924124656,"~:resource-name","spec_tools/parse.cljc","~:warnings",[],"~:source","(ns spec-tools.parse\n (:require [spec-tools.impl :as impl]\n [clojure.spec.alpha :as s]\n [spec-tools.form :as form]))\n\n(declare parse-form)\n(declare non-leaf-types)\n\n(defn type-dispatch-value [type]\n ((if (sequential? type) first identity) type))\n\n(defn collection-type? [type]\n (contains? #{:map :map-of :set :vector :tuple} type))\n\n(defn leaf-type? [type]\n (not (contains? (non-leaf-types) type)))\n\n(defn parse-spec\n \"Parses info out of a spec. Spec can be passed as a name, Spec or a form.\n Returns either `nil` or a map, with keys `:type` and other extra keys\n (like `:keys` for s/keys specs).\"\n [x]\n (cond\n\n ;; unknown\n (= ::s/unknown x)\n nil\n\n ;; spec name\n (qualified-keyword? x)\n (recur (s/form (s/get-spec x)))\n\n ;; symbol\n (symbol? x)\n (parse-form (impl/normalize-symbol x) nil)\n\n ;; a form\n (seq? x)\n (parse-form (impl/normalize-symbol (first x)) x)\n\n ;; a spec\n (s/spec? x)\n (recur (s/form x))\n\n ;; a predicate\n (ifn? x)\n (parse-form (impl/normalize-symbol (form/resolve-form x)) nil)\n\n ;; default\n :else (parse-form x nil)))\n\n(defn parse-spec-with-spec-ref [x]\n (merge (parse-spec x) (if (qualified-keyword? x) {:spec x})))\n\n(defn get-keys [parse-data]\n (or (::keys parse-data)\n (some->> parse-data ::items (keep get-keys) (apply concat) (seq) (set))))\n\n(defmulti parse-form (fn [dispatch _] dispatch) :default ::default)\n\n(defmethod parse-form ::default [_ _] {:type nil})\n\n(defn- non-leaf-types []\n #{:map :map-of :and :or :nilable :tuple :set :vector :multi-spec})\n\n(defn types []\n #{:long\n :double\n :boolean\n :string\n :keyword\n :symbol\n :uuid\n :uri\n :bigdec\n :date\n :ratio\n :map\n :map-of\n :multi-spec\n :and\n :or\n :set\n :tuple\n :nilable\n :vector\n :spec})\n\n(defn type-symbols []\n (-> parse-form\n methods\n keys\n (->> (filter symbol?))\n set))\n\n(defmethod parse-form 'clojure.core/any? [_ _] {:spec any?})\n(defmethod parse-form 'clojure.core/some? [_ _] {:spec some?})\n(defmethod parse-form 'clojure.core/number? [_ _] {:spec number?, :type :double})\n(defmethod parse-form 'clojure.core/integer? [_ _] {:spec integer?, :type :long})\n(defmethod parse-form 'clojure.core/int? [_ _] {:spec int?, :type :long})\n(defmethod parse-form 'clojure.core/pos-int? [_ _] {:spec pos-int?, :type :long})\n(defmethod parse-form 'clojure.core/neg-int? [_ _] {:spec neg-int?, :type :long})\n(defmethod parse-form 'clojure.core/nat-int? [_ _] {:spec nat-int?, :type :long})\n(defmethod parse-form 'clojure.core/float? [_ _] {:spec float?, :type :double})\n(defmethod parse-form 'clojure.core/double? [_ _] {:spec double?, :type :double})\n(defmethod parse-form 'clojure.core/boolean? [_ _] {:spec boolean?, :type :boolean})\n(defmethod parse-form 'clojure.core/string? [_ _] {:spec string?, :type :string})\n(defmethod parse-form 'clojure.core/ident? [_ _] {:spec ident? :type :keyword})\n(defmethod parse-form 'clojure.core/simple-ident? [_ _] {:spec simple-ident?, :type :keyword})\n(defmethod parse-form 'clojure.core/qualified-ident? [_ _] {:spec qualified-ident?, :type :keyword})\n(defmethod parse-form 'clojure.core/keyword? [_ _] {:spec keyword?, :type :keyword})\n(defmethod parse-form 'clojure.core/simple-keyword? [_ _] {:spec simple-keyword?, :type :keyword})\n(defmethod parse-form 'clojure.core/qualified-keyword? [_ _] {:spec qualified-keyword? :type :keyword})\n(defmethod parse-form 'clojure.core/symbol? [_ _] {:spec symbol?, :type :symbol})\n(defmethod parse-form 'clojure.core/simple-symbol? [_ _] {:spec simple-symbol?, :type :symbol})\n(defmethod parse-form 'clojure.core/qualified-symbol? [_ _] {:spec qualified-symbol?, :type :symbol})\n(defmethod parse-form 'clojure.core/uuid? [_ _] {:spec uuid?, :type :uuid})\n#?(:clj (defmethod parse-form 'clojure.core/uri? [_ _] {:spec uri?, :type :uri}))\n#?(:clj (defmethod parse-form 'clojure.core/decimal? [_ _] {:spec decimal?, :type :bigdec}))\n(defmethod parse-form 'clojure.core/inst? [_ _] {:spec inst?, :type :date})\n(defmethod parse-form 'clojure.core/seqable? [_ _] {:spec seqable?})\n(defmethod parse-form 'clojure.core/indexed? [_ _] {:spec indexed?})\n(defmethod parse-form 'clojure.core/map? [_ _] {:spec map?})\n(defmethod parse-form 'clojure.core/vector? [_ _] {:spec vector?})\n(defmethod parse-form 'clojure.core/list? [_ _] {:spec list?})\n(defmethod parse-form 'clojure.core/seq? [_ _] {:spec seq?})\n(defmethod parse-form 'clojure.core/char? [_ _] {:spec char?})\n(defmethod parse-form 'clojure.core/set? [_ _] {:spec set?})\n(defmethod parse-form 'clojure.core/nil? [_ _] {:spec nil?})\n(defmethod parse-form 'clojure.core/false? [_ _] {:spec false?, :type :boolean})\n(defmethod parse-form 'clojure.core/true? [_ _] {:spec true?, :type :boolean})\n(defmethod parse-form 'clojure.core/zero? [_ _] {:spec zero?, :type :long})\n#?(:clj (defmethod parse-form 'clojure.core/rational? [_ _] {:spec rational?, :type :long}))\n(defmethod parse-form 'clojure.core/coll? [_ _] {:spec coll?})\n(defmethod parse-form 'clojure.core/empty? [_ _] {:spec empty?})\n(defmethod parse-form 'clojure.core/associative? [_ _] {:spec associative?, :type nil})\n(defmethod parse-form 'clojure.core/sequential? [_ _] {:spec sequential?})\n#?(:clj (defmethod parse-form 'clojure.core/ratio? [_ _] {:spec ratio?, :type :ratio}))\n#?(:clj (defmethod parse-form 'clojure.core/bytes? [_ _] {:spec bytes?}))\n\n(defmethod parse-form :clojure.spec.alpha/unknown [_ _])\n\n(defmethod parse-form 'clojure.spec.alpha/keys [_ form]\n (let [{:keys [req opt req-un opt-un key->spec]} (impl/parse-keys form)]\n (cond-> {:type :map\n ::key->spec key->spec\n ::keys (set (concat req opt req-un opt-un))}\n (or req req-un) (assoc ::keys-req (set (concat req req-un)))\n (or opt opt-un) (assoc ::keys-opt (set (concat opt opt-un))))))\n\n#?(:clj\n (defn get-multi-spec-sub-specs\n \"Given a multi-spec form, call its multi method methods to retrieve\n its subspecs.\"\n [multi-spec-form]\n (let [[_ multi-method-symbol & _] multi-spec-form]\n (->> (resolve multi-method-symbol)\n deref\n methods\n (map (fn [[spec-k method]]\n [spec-k (method nil)])))))\n :cljs\n (defn get-multi-spec-sub-specs\n \"Given a multi-spec form, call its multi method methods to retrieve\n its subspecs.\"\n [multi-spec-form]\n (let [[_ multi-method-symbol & _ :as form] multi-spec-form]\n (when-let [spec (first (filter (fn [v] (= form (s/form v))) (vals (s/registry))))]\n (->> (.-mmvar spec)\n deref\n methods\n (map (fn [[spec-k method]]\n [spec-k (method nil)])))))))\n\n(defmethod parse-form 'clojure.spec.alpha/multi-spec [_ form]\n {:type :multi-spec\n ::key (last form)\n ::dispatch (into {} (get-multi-spec-sub-specs form))})\n\n(defmethod parse-form 'clojure.spec.alpha/or [_ form]\n (let [specs (mapv (comp parse-spec-with-spec-ref second) (partition 2 (rest form)))]\n {:type [:or (->> specs (map :type) (distinct) (keep identity) (vec))]\n ::items specs}))\n\n(defmethod parse-form 'clojure.spec.alpha/and [_ form]\n (let [specs (mapv parse-spec-with-spec-ref (rest form))\n types (->> specs (map :type) (distinct) (keep identity) (vec))]\n {:type [:and types]\n ::items specs}))\n\n(defmethod parse-form 'clojure.spec.alpha/merge [_ form]\n (let [type-priority #((:type %) {:map 0\n :multi-spec 1} 0)]\n (apply impl/deep-merge (->> (rest form)\n (map parse-spec)\n (sort-by type-priority)))))\n\n(defmethod parse-form 'clojure.spec.alpha/every [_ form]\n (let [{:keys [into]} (apply hash-map (drop 2 form))]\n {::item (parse-spec (second form))\n :type\n (cond\n (map? into) :map-of\n (set? into) :set\n :else :vector)}))\n\n; every-ks\n\n(defmethod parse-form 'clojure.spec.alpha/coll-of [_ form]\n (let [{:keys [into]} (apply hash-map (drop 2 form))]\n {::item (parse-spec-with-spec-ref (second form))\n :type\n (cond\n (map? into) :map-of\n (set? into) :set\n :else :vector)}))\n\n(defmethod parse-form 'clojure.spec.alpha/map-of [_ [_ k v]]\n {:type :map-of\n ::key (parse-spec-with-spec-ref k)\n ::value (parse-spec-with-spec-ref v)})\n\n(defmethod parse-form 'spec-tools.core/spec [_ form]\n (let [parsed (-> form last :spec parse-spec)]\n (if (:type parsed) parsed {:type :spec})))\n\n; *\n