Files
pluto/js/pluto/reader.js
T

159 lines
14 KiB
JavaScript
Raw Normal View History

2018-11-08 09:47:44 +01:00
// Compiled by ClojureScript 1.10.439 {:static-fns true, :optimize-constants true}
2018-08-31 17:05:18 +02:00
goog.provide('pluto.reader');
goog.require('cljs.core');
goog.require('cljs.core.constants');
goog.require('clojure.set');
goog.require('cljs.spec.alpha');
2018-09-24 16:12:44 +02:00
goog.require('cljs.tools.reader.edn');
2018-08-31 17:05:18 +02:00
goog.require('pluto.reader.errors');
goog.require('pluto.reader.hooks');
2018-10-08 09:17:05 +02:00
goog.require('pluto.reader.views');
2018-08-31 17:05:18 +02:00
goog.require('pluto.utils');
pluto.reader.reader_error = (function pluto$reader$reader_error(ex){
return pluto.reader.errors.error.cljs$core$IFn$_invoke$arity$3(cljs.core.cst$kw$pluto$reader$errors_SLASH_reader_DASH_error,cljs.core.cst$kw$ex_DASH_kind.cljs$core$IFn$_invoke$arity$1(cljs.core.ex_data(ex)),cljs.core.merge.cljs$core$IFn$_invoke$arity$variadic(cljs.core.prim_seq.cljs$core$IFn$_invoke$arity$2([new cljs.core.PersistentArrayMap(null, 1, [cljs.core.cst$kw$pluto$reader$errors_SLASH_message,pluto.utils.ex_message(ex)], null),(function (){var temp__5457__auto__ = pluto.utils.ex_cause(ex);
if(cljs.core.truth_(temp__5457__auto__)){
var c = temp__5457__auto__;
return new cljs.core.PersistentArrayMap(null, 1, [cljs.core.cst$kw$cause,c], null);
} else {
return null;
}
})()], 0)));
});
/**
* Reads an extension definition as an EDN string.
*
* No semantic validation is performed at this stage.
*
* Returns a map defining:
* * :data the extension definition as a map
* * :errors a vector of errors map triggered during read
*/
pluto.reader.read = (function pluto$reader$read(s){
2018-09-24 16:12:44 +02:00
try{return new cljs.core.PersistentArrayMap(null, 1, [cljs.core.cst$kw$data,cljs.tools.reader.edn.read_string.cljs$core$IFn$_invoke$arity$2(cljs.core.PersistentArrayMap.EMPTY,s)], null);
2018-11-29 16:19:05 +01:00
}catch (e1392){var ex = e1392;
2018-08-31 17:05:18 +02:00
return new cljs.core.PersistentArrayMap(null, 1, [cljs.core.cst$kw$errors,new cljs.core.PersistentVector(null, 1, 5, cljs.core.PersistentVector.EMPTY_NODE, [pluto.reader.reader_error(ex)], null)], null);
}});
2018-09-28 10:28:10 +02:00
goog.exportSymbol('pluto.reader.read', pluto.reader.read);
2018-08-31 17:05:18 +02:00
pluto.reader.mandatory_keys = new cljs.core.PersistentHashSet(null, new cljs.core.PersistentArrayMap(null, 1, [cljs.core.cst$sym$meta,null], null), null);
pluto.reader.valid_keys = pluto.reader.mandatory_keys;
pluto.reader.capacity_QMARK_ = (function pluto$reader$capacity_QMARK_(m,s){
var keys = cljs.core.set(cljs.core.map.cljs$core$IFn$_invoke$arity$2(cljs.core.name,cljs.core.keys(m)));
2018-11-29 16:19:05 +01:00
var G__1393 = cljs.core.name(s);
return (keys.cljs$core$IFn$_invoke$arity$1 ? keys.cljs$core$IFn$_invoke$arity$1(G__1393) : keys.call(null,G__1393));
2018-08-31 17:05:18 +02:00
});
if((typeof pluto !== 'undefined') && (typeof pluto.reader !== 'undefined') && (typeof pluto.reader.valid_element_QMARK_ !== 'undefined')){
} else {
2018-11-08 09:47:44 +01:00
pluto.reader.valid_element_QMARK_ = (function (){var method_table__4524__auto__ = cljs.core.atom.cljs$core$IFn$_invoke$arity$1(cljs.core.PersistentArrayMap.EMPTY);
var prefer_table__4525__auto__ = cljs.core.atom.cljs$core$IFn$_invoke$arity$1(cljs.core.PersistentArrayMap.EMPTY);
var method_cache__4526__auto__ = cljs.core.atom.cljs$core$IFn$_invoke$arity$1(cljs.core.PersistentArrayMap.EMPTY);
var cached_hierarchy__4527__auto__ = cljs.core.atom.cljs$core$IFn$_invoke$arity$1(cljs.core.PersistentArrayMap.EMPTY);
2018-11-29 16:19:05 +01:00
var hierarchy__4528__auto__ = cljs.core.get.cljs$core$IFn$_invoke$arity$3(cljs.core.PersistentArrayMap.EMPTY,cljs.core.cst$kw$hierarchy,(function (){var fexpr__1394 = cljs.core.get_global_hierarchy;
return (fexpr__1394.cljs$core$IFn$_invoke$arity$0 ? fexpr__1394.cljs$core$IFn$_invoke$arity$0() : fexpr__1394.call(null));
2018-11-08 09:47:44 +01:00
})());
return (new cljs.core.MultiFn(cljs.core.symbol.cljs$core$IFn$_invoke$arity$2("pluto.reader","valid-element?"),((function (method_table__4524__auto__,prefer_table__4525__auto__,method_cache__4526__auto__,cached_hierarchy__4527__auto__,hierarchy__4528__auto__){
2018-08-31 17:05:18 +02:00
return (function (_,k,___$1){
2018-11-08 09:47:44 +01:00
var or__4047__auto__ = cljs.core.namespace(k);
if(cljs.core.truth_(or__4047__auto__)){
return or__4047__auto__;
2018-08-31 17:05:18 +02:00
} else {
return cljs.core.name(k);
}
2018-11-08 09:47:44 +01:00
});})(method_table__4524__auto__,prefer_table__4525__auto__,method_cache__4526__auto__,cached_hierarchy__4527__auto__,hierarchy__4528__auto__))
,cljs.core.cst$kw$default,hierarchy__4528__auto__,method_table__4524__auto__,prefer_table__4525__auto__,method_cache__4526__auto__,cached_hierarchy__4527__auto__));
2018-08-31 17:05:18 +02:00
})();
}
2018-11-29 16:19:05 +01:00
cljs.spec.alpha.def_impl(cljs.core.cst$kw$pluto$reader_SLASH_meta,cljs.core.list(cljs.core.cst$sym$cljs$spec$alpha_SLASH_keys,cljs.core.cst$kw$req_DASH_un,new cljs.core.PersistentVector(null, 3, 5, cljs.core.PersistentVector.EMPTY_NODE, [cljs.core.cst$kw$pluto$reader_SLASH_name,cljs.core.cst$kw$pluto$reader_SLASH_description,cljs.core.cst$kw$pluto$reader_SLASH_documentation], null)),cljs.spec.alpha.map_spec_impl(cljs.core.PersistentHashMap.fromArrays([cljs.core.cst$kw$req_DASH_un,cljs.core.cst$kw$opt_DASH_un,cljs.core.cst$kw$gfn,cljs.core.cst$kw$pred_DASH_exprs,cljs.core.cst$kw$keys_DASH_pred,cljs.core.cst$kw$opt_DASH_keys,cljs.core.cst$kw$req_DASH_specs,cljs.core.cst$kw$req,cljs.core.cst$kw$req_DASH_keys,cljs.core.cst$kw$opt_DASH_specs,cljs.core.cst$kw$pred_DASH_forms,cljs.core.cst$kw$opt],[new cljs.core.PersistentVector(null, 3, 5, cljs.core.PersistentVector.EMPTY_NODE, [cljs.core.cst$kw$pluto$reader_SLASH_name,cljs.core.cst$kw$pluto$reader_SLASH_description,cljs.core.cst$kw$pluto$reader_SLASH_documentation], null),null,null,new cljs.core.PersistentVector(null, 4, 5, cljs.core.PersistentVector.EMPTY_NODE, [(function (G__1395){
return cljs.core.map_QMARK_(G__1395);
}),(function (G__1395){
return cljs.core.contains_QMARK_(G__1395,cljs.core.cst$kw$name);
}),(function (G__1395){
return cljs.core.contains_QMARK_(G__1395,cljs.core.cst$kw$description);
}),(function (G__1395){
return cljs.core.contains_QMARK_(G__1395,cljs.core.cst$kw$documentation);
})], null),(function (G__1395){
return ((cljs.core.map_QMARK_(G__1395)) && (cljs.core.contains_QMARK_(G__1395,cljs.core.cst$kw$name)) && (cljs.core.contains_QMARK_(G__1395,cljs.core.cst$kw$description)) && (cljs.core.contains_QMARK_(G__1395,cljs.core.cst$kw$documentation)));
2018-08-31 17:05:18 +02:00
}),cljs.core.PersistentVector.EMPTY,new cljs.core.PersistentVector(null, 3, 5, cljs.core.PersistentVector.EMPTY_NODE, [cljs.core.cst$kw$pluto$reader_SLASH_name,cljs.core.cst$kw$pluto$reader_SLASH_description,cljs.core.cst$kw$pluto$reader_SLASH_documentation], null),null,new cljs.core.PersistentVector(null, 3, 5, cljs.core.PersistentVector.EMPTY_NODE, [cljs.core.cst$kw$name,cljs.core.cst$kw$description,cljs.core.cst$kw$documentation], null),cljs.core.PersistentVector.EMPTY,new cljs.core.PersistentVector(null, 4, 5, cljs.core.PersistentVector.EMPTY_NODE, [cljs.core.list(cljs.core.cst$sym$cljs$core_SLASH_fn,new cljs.core.PersistentVector(null, 1, 5, cljs.core.PersistentVector.EMPTY_NODE, [cljs.core.cst$sym$_PERCENT_], null),cljs.core.list(cljs.core.cst$sym$cljs$core_SLASH_map_QMARK_,cljs.core.cst$sym$_PERCENT_)),cljs.core.list(cljs.core.cst$sym$cljs$core_SLASH_fn,new cljs.core.PersistentVector(null, 1, 5, cljs.core.PersistentVector.EMPTY_NODE, [cljs.core.cst$sym$_PERCENT_], null),cljs.core.list(cljs.core.cst$sym$cljs$core_SLASH_contains_QMARK_,cljs.core.cst$sym$_PERCENT_,cljs.core.cst$kw$name)),cljs.core.list(cljs.core.cst$sym$cljs$core_SLASH_fn,new cljs.core.PersistentVector(null, 1, 5, cljs.core.PersistentVector.EMPTY_NODE, [cljs.core.cst$sym$_PERCENT_], null),cljs.core.list(cljs.core.cst$sym$cljs$core_SLASH_contains_QMARK_,cljs.core.cst$sym$_PERCENT_,cljs.core.cst$kw$description)),cljs.core.list(cljs.core.cst$sym$cljs$core_SLASH_fn,new cljs.core.PersistentVector(null, 1, 5, cljs.core.PersistentVector.EMPTY_NODE, [cljs.core.cst$sym$_PERCENT_], null),cljs.core.list(cljs.core.cst$sym$cljs$core_SLASH_contains_QMARK_,cljs.core.cst$sym$_PERCENT_,cljs.core.cst$kw$documentation))], null),null])));
cljs.spec.alpha.def_impl(cljs.core.cst$kw$pluto$reader_SLASH_hooks,cljs.core.cst$sym$cljs$core_SLASH_map_QMARK_,cljs.core.map_QMARK_);
2018-11-29 16:19:05 +01:00
pluto.reader.valid_element_QMARK_.cljs$core$IMultiFn$_add_method$arity$3(null,"hooks",(function (p__1396,k,v){
var map__1397 = p__1396;
var map__1397__$1 = (((((!((map__1397 == null))))?(((((map__1397.cljs$lang$protocol_mask$partition0$ & (64))) || ((cljs.core.PROTOCOL_SENTINEL === map__1397.cljs$core$ISeq$))))?true:false):false))?cljs.core.apply.cljs$core$IFn$_invoke$arity$2(cljs.core.hash_map,map__1397):map__1397);
var hooks = cljs.core.get.cljs$core$IFn$_invoke$arity$2(map__1397__$1,cljs.core.cst$kw$hooks);
2018-08-31 17:05:18 +02:00
if(cljs.core.truth_(pluto.reader.capacity_QMARK_(hooks,pluto.reader.hooks.root_id(k)))){
if(cljs.core.truth_(cljs.spec.alpha.valid_QMARK_.cljs$core$IFn$_invoke$arity$2(cljs.core.cst$kw$pluto$reader_SLASH_hooks,v))){
return null;
} else {
return new cljs.core.PersistentVector(null, 1, 5, cljs.core.PersistentVector.EMPTY_NODE, [pluto.reader.errors.error.cljs$core$IFn$_invoke$arity$2(cljs.core.cst$kw$pluto$reader$errors_SLASH_invalid_DASH_value,k)], null);
}
} else {
return new cljs.core.PersistentVector(null, 1, 5, cljs.core.PersistentVector.EMPTY_NODE, [pluto.reader.errors.error.cljs$core$IFn$_invoke$arity$2(cljs.core.cst$kw$pluto$reader$errors_SLASH_invalid_DASH_key,k)], null);
}
}));
2018-11-29 16:19:05 +01:00
pluto.reader.valid_element_QMARK_.cljs$core$IMultiFn$_add_method$arity$3(null,"queries",(function (p__1399,k,v){
var map__1400 = p__1399;
var map__1400__$1 = (((((!((map__1400 == null))))?(((((map__1400.cljs$lang$protocol_mask$partition0$ & (64))) || ((cljs.core.PROTOCOL_SENTINEL === map__1400.cljs$core$ISeq$))))?true:false):false))?cljs.core.apply.cljs$core$IFn$_invoke$arity$2(cljs.core.hash_map,map__1400):map__1400);
var queries = cljs.core.get.cljs$core$IFn$_invoke$arity$2(map__1400__$1,cljs.core.cst$kw$queries);
return null;
}));
pluto.reader.valid_element_QMARK_.cljs$core$IMultiFn$_add_method$arity$3(null,"events",(function (p__1402,k,v){
2018-11-26 10:37:35 +01:00
var map__1403 = p__1402;
var map__1403__$1 = (((((!((map__1403 == null))))?(((((map__1403.cljs$lang$protocol_mask$partition0$ & (64))) || ((cljs.core.PROTOCOL_SENTINEL === map__1403.cljs$core$ISeq$))))?true:false):false))?cljs.core.apply.cljs$core$IFn$_invoke$arity$2(cljs.core.hash_map,map__1403):map__1403);
2018-11-29 16:19:05 +01:00
var events = cljs.core.get.cljs$core$IFn$_invoke$arity$2(map__1403__$1,cljs.core.cst$kw$events);
2018-10-17 09:10:34 +02:00
return null;
2018-08-31 17:05:18 +02:00
}));
2018-11-26 10:37:35 +01:00
pluto.reader.valid_element_QMARK_.cljs$core$IMultiFn$_add_method$arity$3(null,"events",(function (p__1405,k,v){
var map__1406 = p__1405;
var map__1406__$1 = (((((!((map__1406 == null))))?(((((map__1406.cljs$lang$protocol_mask$partition0$ & (64))) || ((cljs.core.PROTOCOL_SENTINEL === map__1406.cljs$core$ISeq$))))?true:false):false))?cljs.core.apply.cljs$core$IFn$_invoke$arity$2(cljs.core.hash_map,map__1406):map__1406);
var events = cljs.core.get.cljs$core$IFn$_invoke$arity$2(map__1406__$1,cljs.core.cst$kw$events);
2018-10-17 09:10:34 +02:00
return null;
2018-08-31 17:05:18 +02:00
}));
pluto.reader.valid_element_QMARK_.cljs$core$IMultiFn$_add_method$arity$3(null,"views",(function (_,___$1,___$2){
2018-10-17 09:10:34 +02:00
return null;
2018-08-31 17:05:18 +02:00
}));
pluto.reader.valid_element_QMARK_.cljs$core$IMultiFn$_add_method$arity$3(null,cljs.core.cst$kw$default,(function (_,k,___$1){
return new cljs.core.PersistentVector(null, 1, 5, cljs.core.PersistentVector.EMPTY_NODE, [pluto.reader.errors.error.cljs$core$IFn$_invoke$arity$2(cljs.core.cst$kw$pluto$reader$errors_SLASH_invalid_DASH_key,k)], null);
}));
2018-11-29 16:19:05 +01:00
pluto.reader.validate = (function pluto$reader$validate(p__1411,m){
var map__1412 = p__1411;
var map__1412__$1 = (((((!((map__1412 == null))))?(((((map__1412.cljs$lang$protocol_mask$partition0$ & (64))) || ((cljs.core.PROTOCOL_SENTINEL === map__1412.cljs$core$ISeq$))))?true:false):false))?cljs.core.apply.cljs$core$IFn$_invoke$arity$2(cljs.core.hash_map,map__1412):map__1412);
var capacities = cljs.core.get.cljs$core$IFn$_invoke$arity$2(map__1412__$1,cljs.core.cst$kw$capacities);
2018-08-31 17:05:18 +02:00
var keys = cljs.core.set(cljs.core.keys(m));
var missing_keys = clojure.set.difference.cljs$core$IFn$_invoke$arity$2(pluto.reader.mandatory_keys,keys);
2018-11-29 16:19:05 +01:00
return cljs.core.reduce_kv(((function (keys,missing_keys,map__1412,map__1412__$1,capacities){
return (function (p1__1410_SHARP_,p2__1408_SHARP_,p3__1409_SHARP_){
var temp__5455__auto__ = (pluto.reader.valid_element_QMARK_.cljs$core$IFn$_invoke$arity$3 ? pluto.reader.valid_element_QMARK_.cljs$core$IFn$_invoke$arity$3(capacities,p2__1408_SHARP_,p3__1409_SHARP_) : pluto.reader.valid_element_QMARK_.call(null,capacities,p2__1408_SHARP_,p3__1409_SHARP_));
2018-08-31 17:05:18 +02:00
if(cljs.core.truth_(temp__5455__auto__)){
var errors = temp__5455__auto__;
2018-11-29 16:19:05 +01:00
return cljs.core.concat.cljs$core$IFn$_invoke$arity$2(p1__1410_SHARP_,errors);
2018-08-31 17:05:18 +02:00
} else {
2018-11-29 16:19:05 +01:00
return p1__1410_SHARP_;
2018-08-31 17:05:18 +02:00
}
2018-11-29 16:19:05 +01:00
});})(keys,missing_keys,map__1412,map__1412__$1,capacities))
2018-10-04 13:50:25 +02:00
,((cljs.core.seq(missing_keys))?new cljs.core.PersistentVector(null, 1, 5, cljs.core.PersistentVector.EMPTY_NODE, [pluto.reader.errors.error.cljs$core$IFn$_invoke$arity$2(cljs.core.cst$kw$pluto$reader$errors_SLASH_missing_DASH_keys,missing_keys)], null):null),cljs.core.dissoc.cljs$core$IFn$_invoke$arity$2(m,cljs.core.cst$sym$meta));
2018-08-31 17:05:18 +02:00
});
pluto.reader.parse_meta = (function pluto$reader$parse_meta(v){
if(cljs.core.truth_(cljs.spec.alpha.valid_QMARK_.cljs$core$IFn$_invoke$arity$2(cljs.core.cst$kw$pluto$reader_SLASH_meta,v))){
return new cljs.core.PersistentArrayMap(null, 1, [cljs.core.cst$kw$data,new cljs.core.PersistentArrayMap(null, 1, [cljs.core.cst$sym$meta,v], null)], null);
} else {
return new cljs.core.PersistentArrayMap(null, 1, [cljs.core.cst$kw$errors,new cljs.core.PersistentVector(null, 1, 5, cljs.core.PersistentVector.EMPTY_NODE, [pluto.reader.errors.error.cljs$core$IFn$_invoke$arity$2(cljs.core.cst$kw$pluto$reader$errors_SLASH_invalid_DASH_meta,v)], null)], null);
}
});
/**
* Parse an extension definition map as encapsulated in :data key of the map returned by read.
2018-10-08 09:17:05 +02:00
* `ctx` is a map defining:
2018-08-31 17:05:18 +02:00
* * `capacities` a map of valid supported capacities (hooks, queries, events)
2018-11-21 13:29:40 +01:00
* * `env` [optional] a map of extension environment, may contain for example id of extension {:id 'id'}, will be
* * provided as second parameter into event and query handlers
2018-08-31 17:05:18 +02:00
*
* Returns a map defining:
* * :data a map of meta and parsed hooks
* * :permissions a vector of required permissions
* * :errors a vector of errors maps triggered during parse
*/
2018-10-08 09:17:05 +02:00
pluto.reader.parse = (function pluto$reader$parse(ctx,m){
var errors = pluto.reader.validate(ctx,m);
2018-11-29 16:19:05 +01:00
return pluto.reader.errors.merge_results.cljs$core$IFn$_invoke$arity$variadic(cljs.core.prim_seq.cljs$core$IFn$_invoke$arity$2([pluto.reader.parse_meta((function (){var fexpr__1414 = cljs.core.cst$sym$meta;
return (fexpr__1414.cljs$core$IFn$_invoke$arity$1 ? fexpr__1414.cljs$core$IFn$_invoke$arity$1(m) : fexpr__1414.call(null,m));
2018-10-08 09:17:05 +02:00
})()),pluto.reader.hooks.parse(ctx,m),new cljs.core.PersistentArrayMap(null, 1, [cljs.core.cst$kw$errors,errors], null)], 0));
2018-08-31 17:05:18 +02:00
});
2018-09-28 10:28:10 +02:00
goog.exportSymbol('pluto.reader.parse', pluto.reader.parse);