Comparing version 2.3.1 to 2.4.0
@@ -1,2 +0,1 @@ | ||
// Generated by CoffeeScript 2.4.1 | ||
(function() { | ||
@@ -47,2 +46,3 @@ 'use strict'; | ||
this._has_contractors = {}; | ||
this._has_listener = {}; | ||
//--------------------------------------------------------------------------------------------------------- | ||
@@ -68,58 +68,17 @@ this._mark_as_primary = function(x) { | ||
//--------------------------------------------------------------------------------------------------------- | ||
this._get_ksl = function(key, self, listener) { | ||
var arity; | ||
switch (arity = arguments.length) { | ||
case 2: | ||
[key, self, listener] = [key, null, self]; | ||
break; | ||
case 3: | ||
[key, self, listener] = [key, self, listener]; | ||
break; | ||
default: | ||
throw new Error(`µ67348 expected 2 or 3 arguments, got ${arity}`); | ||
this._datom_from_emit_arguments = function(...P) { | ||
var arity, d; | ||
if (!((arity = P.length) > 0)) { | ||
throw new Error("µ44422 expected one or more arguments, got none"); | ||
} | ||
validate.nonempty_text(key); | ||
return [key, self, listener]; | ||
}; | ||
//--------------------------------------------------------------------------------------------------------- | ||
this._get_sl = function(self, listener) { | ||
var arity; | ||
switch (arity = arguments.length) { | ||
case 1: | ||
[self, listener] = [null, self]; | ||
break; | ||
case 2: | ||
[self, listener] = [self, listener]; | ||
break; | ||
default: | ||
throw new Error(`µ68252 expected 1 or 2 arguments, got ${arity}`); | ||
if (isa.text(P[0])) { | ||
return DATOM.new_datom(P[0], ...P.slice(1)); | ||
} | ||
return [self, listener]; | ||
}; | ||
//--------------------------------------------------------------------------------------------------------- | ||
this._get_kd = function(key, d) { | ||
var arity, org_d, org_key; | ||
org_key = key; | ||
org_d = d; | ||
switch (arity = arguments.length) { | ||
case 1: | ||
if (isa.text(key)) { | ||
[key, d] = [key, key]; | ||
} else { | ||
if (!DATOM.is_datom(key)) { | ||
throw new Error(`µ44422 expected a text or a datom got a ${type_of(key)}`); | ||
} | ||
[key, d] = [key.$key, key]; | ||
} | ||
break; | ||
case 2: | ||
null; | ||
break; | ||
default: | ||
throw new Error(`µ69156 expected 1 or 2 arguments, got ${arity}`); | ||
if ((arity = P.length) !== 1) { | ||
throw new Error(`µ44422 expected single argument unless first is key, got ${arity}`); | ||
} | ||
if (key == null) { | ||
throw new Error(`µ69608 expected a key, got ${rpr(key)} from ${rpr(org_key)}, ${rpr(org_d)}`); | ||
if (!DATOM.is_datom(d = P[0])) { | ||
throw new Error(`µ44422 expected a text or a datom got a ${type_of(key)}`); | ||
} | ||
return [key, d]; | ||
return d; | ||
}; | ||
@@ -129,4 +88,5 @@ //========================================================================================================= | ||
//--------------------------------------------------------------------------------------------------------- | ||
this.contract = function(key, self, listener) { | ||
[key, self, listener] = this._get_ksl(...arguments); | ||
this.contract = function(key, listener) { | ||
validate.datom_key(key); | ||
validate.callable(listener); | ||
if (this._has_contractors[key]) { | ||
@@ -136,20 +96,32 @@ throw new Error(`µ68704 key ${rpr(key)} already has a primary listener`); | ||
this._has_contractors[key] = true; | ||
this._has_listener[key] = true; | ||
return this._emitter.on(key, async(d) => { | ||
return this._mark_as_primary((await listener.call(self, d))); | ||
return this._mark_as_primary((await listener(d))); | ||
}); | ||
}; | ||
//--------------------------------------------------------------------------------------------------------- | ||
this.listen_to = function(key, self, listener) { | ||
[key, self, listener] = this._get_ksl(...arguments); | ||
return this._emitter.on(key, async function(d) { | ||
return (await listener.call(self, d)); | ||
this.listen_to = function(key, listener) { | ||
validate.datom_key(key); | ||
validate.callable(listener); | ||
this._has_listener[key] = true; | ||
return this._emitter.on(key, async(d) => { | ||
return (await listener(d)); | ||
}); | ||
}; | ||
//--------------------------------------------------------------------------------------------------------- | ||
this.listen_to_all = function(self, listener) { | ||
[self, listener] = this._get_sl(...arguments); | ||
return this._emitter.onAny(async function(key, d) { | ||
return (await listener.call(self, key, d)); | ||
this.listen_to_all = function(listener) { | ||
validate.callable(listener); | ||
return this._emitter.onAny(async(key, d) => { | ||
return (await listener(key, d)); | ||
}); | ||
}; | ||
//--------------------------------------------------------------------------------------------------------- | ||
this.listen_to_unheard = function(listener) { | ||
validate.callable(listener); | ||
return this._emitter.onAny(async(key, d) => { | ||
if (!this._has_listener[key]) { | ||
return (await listener(key, d)); | ||
} | ||
}); | ||
}; | ||
//========================================================================================================= | ||
@@ -159,3 +131,4 @@ // API / SENDING | ||
this.emit = async function(key, d) { | ||
return (await this._emitter.emit(...(this._get_kd(...arguments)))); | ||
d = this._datom_from_emit_arguments(...arguments); | ||
return (await this._emitter.emit(d.$key, d)); | ||
}; | ||
@@ -193,3 +166,1 @@ //--------------------------------------------------------------------------------------------------------- | ||
}).call(this); | ||
//# sourceMappingURL=xemitter.mixin.js.map |
{ | ||
"name": "datom", | ||
"version": "2.3.1", | ||
"version": "2.4.0", | ||
"description": "standardized immutable objects in the spirit of datomic, especially suited for use in data pipelines", | ||
@@ -31,7 +31,7 @@ "main": "lib/main.js", | ||
"dependencies": { | ||
"cnd": "^4.6.0", | ||
"cnd": "^4.7.3", | ||
"emittery": "^0.5.1", | ||
"intertype": "^2.5.0", | ||
"intertype": "^2.7.0", | ||
"letsfreezethat": "^2.2.5", | ||
"multimix": "^2.1.0" | ||
"multimix": "^2.1.1" | ||
}, | ||
@@ -38,0 +38,0 @@ "devDependencies": { |
Sorry, the diff of this file is not supported yet
Sorry, the diff of this file is not supported yet
License Policy Violation
LicenseThis package is not allowed per your license policy. Review the package's license to ensure compliance.
Found 1 instance in 1 package
License Policy Violation
LicenseThis package is not allowed per your license policy. Review the package's license to ensure compliance.
Found 1 instance in 1 package
20
1549
159511
Updatedcnd@^4.7.3
Updatedintertype@^2.7.0
Updatedmultimix@^2.1.1