New Case Study:See how Anthropic automated 95% of dependency reviews with Socket.Learn More
Socket
Sign inDemoInstall
Socket

aurelia-cycle

Package Overview
Dependencies
Maintainers
1
Versions
7
Alerts
File Explorer

Advanced tools

Socket logo

Install Socket

Detect and block malicious and high-risk dependencies

Install

aurelia-cycle - npm Package Compare versions

Comparing version 0.0.6 to 0.1.0

35

dist/aurelia-cycle.d.ts
declare module 'aurelia-cycle' {
import { Observable } from 'rxjs/Rx';
export function configure(frameworkConfig: any): void;
export type PropertyViewSetterMap = Map<string, (value) => void>;
export type ViewObservable = Observable<string | number>;
export type FromViewActionObservable = Observable<Action> & {
_aureliaType: 'action' | 'property';
import { FrameworkConfiguration } from 'aurelia-framework';
export function configure(frameworkConfig: FrameworkConfiguration): void;
export type Action = {
event: AnyEvent;
arguments: Array<any>;
};
export type FromViewValueObservable = ViewObservable & {
_aureliaType: 'action' | 'property';
export type Value = string | number;
export type ViewValue = Action | Value;
export type ObservableTypeExtension = {
_cycleType: 'action' | 'value';
};
export type FromViewObservable = FromViewActionObservable | FromViewValueObservable;
export type FromViewObservableMap = Map<string, FromViewObservable>;
export type ActionObservable = Observable<Action> & ObservableTypeExtension;
export type ValueObservable = Observable<Value> & ObservableTypeExtension;
export type ViewObservable = (Observable<Action> | Observable<Value>) & ObservableTypeExtension;
export type ViewObservableMap = Map<string, ViewObservable>;
export type ViewValues = Map<string, string | number>;
export type AnyEvent = Event | FocusEvent | GamepadEvent | HashChangeEvent | KeyboardEvent | MessageEvent | MouseEvent | MouseWheelEvent | MSGestureEvent | MSManipulationEvent | MSMediaKeyMessageEvent | MSMediaKeyNeededEvent | MSSiteModeEvent | MutationEvent | NavigationCompletedEvent | NavigationEvent | NavigationEventWithReferrer | OfflineAudioCompletionEvent | PageTransitionEvent | PermissionRequestedEvent | PointerEvent | PopStateEvent | ProgressEvent | ScriptNotifyEvent | StorageEvent | SVGZoomEvent | TextEvent | TouchEvent | TrackEvent | TransitionEvent | UIEvent | UnviewableContentIdentifiedEvent | WebGLContextEvent | WheelEvent;
export type Action = {
event: AnyEvent;
arguments: Array<any>;
};
export type ViewSource = {
values: (bindingName: string) => FromViewValueObservable;
actions: (bindingName: string) => FromViewActionObservable;
values: (bindingName: string) => ValueObservable;
actions: (bindingName: string) => ActionObservable;
};
export function makeAureliaDriver(context: any): any;
export class CycleBindingBehavior {
bind(binding: any, scope: any, name: any): void;
unbind(binding: any, scope: any): void;
}
export function cycle(potentialTarget?: any): any;
}
import { Observable } from 'rxjs/Rx';
export declare function configure(frameworkConfig: any): void;
export declare type PropertyViewSetterMap = Map<string, (value) => void>;
export declare type ViewObservable = Observable<string | number>;
export declare type FromViewActionObservable = Observable<Action> & {
_aureliaType: 'action' | 'property';
import { FrameworkConfiguration } from 'aurelia-framework';
export declare function configure(frameworkConfig: FrameworkConfiguration): void;
export declare type Action = {
event: AnyEvent;
arguments: Array<any>;
};
export declare type FromViewValueObservable = ViewObservable & {
_aureliaType: 'action' | 'property';
export declare type Value = string | number;
export declare type ViewValue = Action | Value;
export declare type ObservableTypeExtension = {
_cycleType: 'action' | 'value';
};
export declare type FromViewObservable = FromViewActionObservable | FromViewValueObservable;
export declare type FromViewObservableMap = Map<string, FromViewObservable>;
export declare type ActionObservable = Observable<Action> & ObservableTypeExtension;
export declare type ValueObservable = Observable<Value> & ObservableTypeExtension;
export declare type ViewObservable = (Observable<Action> | Observable<Value>) & ObservableTypeExtension;
export declare type ViewObservableMap = Map<string, ViewObservable>;
export declare type ViewValues = Map<string, string | number>;
export declare type AnyEvent = Event | FocusEvent | GamepadEvent | HashChangeEvent | KeyboardEvent | MessageEvent | MouseEvent | MouseWheelEvent | MSGestureEvent | MSManipulationEvent | MSMediaKeyMessageEvent | MSMediaKeyNeededEvent | MSSiteModeEvent | MutationEvent | NavigationCompletedEvent | NavigationEvent | NavigationEventWithReferrer | OfflineAudioCompletionEvent | PageTransitionEvent | PermissionRequestedEvent | PointerEvent | PopStateEvent | ProgressEvent | ScriptNotifyEvent | StorageEvent | SVGZoomEvent | TextEvent | TouchEvent | TrackEvent | TransitionEvent | UIEvent | UnviewableContentIdentifiedEvent | WebGLContextEvent | WheelEvent;
export declare type Action = {
event: AnyEvent;
arguments: Array<any>;
};
export declare type ViewSource = {
values: (bindingName: string) => FromViewValueObservable;
actions: (bindingName: string) => FromViewActionObservable;
values: (bindingName: string) => ValueObservable;
actions: (bindingName: string) => ActionObservable;
};
export declare function makeAureliaDriver(context: any): any;
export declare class CycleBindingBehavior {
bind(binding: any, scope: any, name: any): void;
unbind(binding: any, scope: any): void;
}
export declare function cycle(potentialTarget?: any): any;

272

dist/index.js

@@ -1,7 +0,5 @@

define(["require", "exports", 'aurelia-templating', 'rxjs/Rx', '@cycle/core/lib/index', '@cycle/rxjs-adapter/lib/index', 'aurelia-logging'], function (require, exports, aurelia_templating_1, Rx_1, index_1, index_2, TheLogManager) {
define(["require", "exports", 'aurelia-binding', 'aurelia-templating', 'rxjs/Rx', '@cycle/core/lib/index', '@cycle/rxjs-adapter/lib/index', 'aurelia-framework'], function (require, exports, aurelia_binding_1, aurelia_templating_1, Rx_1, index_1, index_2, aurelia_framework_1) {
"use strict";
var logger = TheLogManager.getLogger('aurelia-cycle');
var logger = aurelia_framework_1.LogManager.getLogger('aurelia-cycle-new');
function configure(frameworkConfig) {
var bindingBehaviorInstance = frameworkConfig.container.get(CycleBindingBehavior);
frameworkConfig.aurelia.resources.registerBindingBehavior('cycle', bindingBehaviorInstance);
var originalBind = aurelia_templating_1.View.prototype.bind;

@@ -30,23 +28,106 @@ aurelia_templating_1.View.prototype.bind = function bind(context, overrideContext, _systemUpdate) {

};
var callScopeConnect = aurelia_binding_1.CallScope.prototype.connect;
aurelia_binding_1.CallScope.prototype.connect = function connect(binding, scope) {
callScopeConnect.apply(this, arguments);
console.log('connected', binding, scope, this);
if (this.name == 'cycleValue') {
console.log('we have a cycleValue connect!');
var context = scope.bindingContext;
var name_1 = this.args[0].evaluate(scope, binding.lookupFunctions, true);
var observable = getOrCreateObservable(name_1, context);
observable.subscribe(function (value) {
var bindingValue = binding.sourceExpression.evaluate(binding.source, binding.lookupFunctions);
binding.updateTarget(bindingValue);
}, function (error) { return logger.error("binding error for " + name_1, error); }, function () { return logger.debug("observable for " + name_1 + " complete"); });
}
};
var callScopeConstructor = aurelia_binding_1.CallScope.prototype.constructor;
aurelia_binding_1.CallScope.prototype.constructor = function () {
callScopeConstructor.apply(this, arguments);
this.isAssignable = true;
};
function triggerObservers(name, value, context) {
var observers = context.observers.get(name);
if (observers)
observers.forEach(function (observer) { return observer.next(value); });
else
logger.error("no observer set exists for " + name + " cycle binding");
}
aurelia_binding_1.CallScope.prototype.assign = function assign(scope, value, lookupFunctions) {
var context = aurelia_binding_1.getContextFor(this.name, scope, this.ancestor);
if (!context || typeof context.cycle != 'function' || this.name !== 'cycleValue' || this.args.length === 0) {
throw new Error("Binding expression \"" + this + "\" cannot be assigned to.");
}
var name = this.args[0].evaluate(scope, lookupFunctions, true);
logger.debug(context, 'will set', name, 'to', value);
triggerObservers(name, value, context);
};
var callScopeEvaluate = aurelia_binding_1.CallScope.prototype.evaluate;
aurelia_binding_1.CallScope.prototype.evaluate = function evaluate(scope, lookupFunctions, mustEvaluate) {
var context = aurelia_binding_1.getContextFor(this.name, scope, this.ancestor);
if (!context || typeof context.cycle != 'function' || (this.name !== 'cycleValue' && this.name !== 'cycleAction') || this.args.length === 0) {
return callScopeEvaluate.apply(this, arguments);
}
var name = this.args[0].evaluate(scope, lookupFunctions, true);
if (this.name === 'cycleAction') {
var args = evalList(scope, Array.from(this.args).slice(1), lookupFunctions);
var event_1 = scope.overrideContext.$event;
logger.debug(context, 'event trigerred', name, args, event_1, this);
triggerObservers(name, { event: event_1, arguments: args }, context);
return;
}
logger.debug(context, 'getting value to set in the view', name, this);
if (name in context)
return context[name];
};
function getOrCreateObservable(name, context, hasValue) {
if (hasValue === void 0) { hasValue = true; }
var observable = context.observables.get(name);
if (!observable) {
var observers_1 = new Set();
observable = Rx_1.Observable.create(function (observer) {
observers_1.add(observer);
return function () {
observers_1.delete(observer);
};
});
if (hasValue) {
observable._cycleType = 'value';
var storeValueCacheSubscription = observable.subscribe(function (value) { return context[name] = value; });
}
else {
observable._cycleType = 'action';
}
context.observables.set(name, observable);
context.observers.set(name, observers_1);
}
return observable;
}
aurelia_binding_1.CallScope.prototype.bind = function bind(binding, scope, lookupFunctions) {
var expression = binding.sourceExpression;
if (expression.name == 'cycleValue' || expression.name == 'cycleAction') {
var context = aurelia_binding_1.getContextFor(expression.name, scope, expression.ancestor);
var name_2 = expression.args[0].evaluate(scope, lookupFunctions, true);
logger.debug('store the updateTarget for', name_2, context, binding);
var observable = getOrCreateObservable(name_2, context, expression.name == 'cycleValue');
}
};
aurelia_binding_1.CallScope.prototype.unbind = function unbind(binding, scope) {
var expression = binding.sourceExpression;
if (expression.name == 'cycleValue') {
expression._unbind();
}
};
}
exports.configure = configure;
function invokeAureliaBindingSetter(context, name, value) {
var previousValue = context.aureliaViewValues.get(name);
var previousValue = context[name];
if (previousValue !== value) {
var propertyViewSetters = context.propertyViewSetters;
var setter = propertyViewSetters.get(name);
if (setter)
setter(value);
else
logger.error("the binding (" + name + ") is not a two-way binding and you cannot set it!");
var observers = context.observers;
observers.get(name).forEach(function (observer) { return observer.next(value); });
}
}
function getAureliaObservableForBinding(context, name) {
var aureliaFromViewObservables = context.aureliaFromViewObservables;
var aureliaToViewObservables = context.aureliaToViewObservables;
var fromView = aureliaFromViewObservables.get(name);
var toView = aureliaToViewObservables.get(name);
var returnObservable = toView && fromView ? Rx_1.Observable.merge(fromView, toView) : toView || fromView;
returnObservable._aureliaType = fromView ? fromView._aureliaType : 'property';
return returnObservable;
var observables = context.observables;
return observables.get(name);
}

@@ -64,4 +145,4 @@ function makeAureliaDriver(context) {

var observable = getAureliaObservableForBinding(context, bindingName);
if (!observable || observable._aureliaType != 'property')
throw new Error("Cannot select an unexistent binding " + bindingName);
if (!observable || observable._cycleType != 'value')
throw new Error("Cannot select a non-existent value binding " + bindingName);
return observable;

@@ -71,4 +152,4 @@ },

var observable = getAureliaObservableForBinding(context, bindingName);
if (!observable || observable._aureliaType != 'action')
throw new Error("Cannot select an unexistent binding " + bindingName);
if (!observable || observable._cycleType != 'action')
throw new Error("Cannot select a non-existent action binding " + bindingName);
return observable;

@@ -80,10 +161,6 @@ },

driverCreator.streamAdapter = index_2.default;
if (!context.propertyViewSetters)
context.propertyViewSetters = new Map();
if (!context.aureliaFromViewObservables)
context.aureliaFromViewObservables = new Map();
if (!context.aureliaToViewObservables)
context.aureliaToViewObservables = new Map();
if (!context.aureliaViewValues)
context.aureliaViewValues = new Map();
if (!context.observables)
context.observables = new Map();
if (!context.observers)
context.observers = new Map();
if (!context.cycleStarted || !context.cycleStartedResolve)

@@ -94,129 +171,16 @@ context.cycleStarted = new Promise(function (resolve) { return context.cycleStartedResolve = resolve; });

exports.makeAureliaDriver = makeAureliaDriver;
var interceptMethods = ['updateTarget', 'updateSource', 'callSource'];
var CycleBindingBehavior = (function () {
function CycleBindingBehavior() {
var evalListCache = [[], [0], [0, 0], [0, 0, 0], [0, 0, 0, 0], [0, 0, 0, 0, 0]];
function evalList(scope, list, lookupFunctions) {
var length = list.length, cacheLength, i;
for (cacheLength = evalListCache.length; cacheLength <= length; ++cacheLength) {
evalListCache.push([]);
}
CycleBindingBehavior.prototype.bind = function (binding, scope, name) {
var context = scope.overrideContext.bindingContext;
var expression = binding.sourceExpression.expression;
var firstExpression = expression.expression || expression;
if (!name) {
var maxNesting = 10;
while (!firstExpression.name && maxNesting--) {
firstExpression = firstExpression.left;
}
name = firstExpression.name;
}
logger.debug("Creating Cycle binding for '" + name + "' via interception");
var toViewObservers = new Set();
var toViewObservable = Rx_1.Observable.create(function (observer) {
toViewObservers.add(observer);
return function () {
toViewObservers.delete(observer);
};
});
binding.toViewObservable = toViewObservable;
binding.toViewObservers = toViewObservers;
context.aureliaToViewObservables.set(name, toViewObservable);
var toViewSubscription;
if (binding['updateTarget']) {
var method = 'updateTarget';
binding[("cycle-intercepted-" + method)] = binding[method];
var updateBindingValueInView_1 = binding[method].bind(binding);
toViewSubscription = toViewObservable.subscribe(function (value) {
updateBindingValueInView_1(value);
}, function (error) { return logger.error("Error in a toViewObservable binding for " + name); });
var toViewObserversNextAll_1 = function (value) {
toViewObservers.forEach(function (observer) { return observer.next(value); });
};
binding[method] = function (value) {
context.cycleStarted.then(function () {
if (value !== undefined) {
logger.debug("an initial value was seeded to the observable: " + name + " = '" + value + "'");
toViewObserversNextAll_1(value);
}
});
};
context.propertyViewSetters.set(name, toViewObserversNextAll_1);
}
var allChanges = toViewObservable;
if (binding['updateSource'] || binding['callSource']) {
var fromViewObservers_1 = new Set();
var fromViewObservable = Rx_1.Observable.create(function (observer) {
fromViewObservers_1.add(observer);
return function () {
fromViewObservers_1.delete(observer);
};
});
binding.fromViewObservable = fromViewObservable;
binding.fromViewObservers = fromViewObservers_1;
context.aureliaFromViewObservables.set(name, fromViewObservable);
if (binding['updateSource']) {
var method = 'updateSource';
binding[("cycle-intercepted-" + method)] = binding[method];
binding[method] = function (value) {
fromViewObservers_1.forEach(function (observer) { return observer.next(value); });
};
fromViewObservable['_aureliaType'] = 'property';
allChanges = Rx_1.Observable.merge(fromViewObservable, toViewObservable);
}
if (binding['callSource']) {
var method = 'callSource';
binding[("cycle-intercepted-" + method)] = binding[method];
var args_1 = firstExpression.args;
binding[method] = function ($event) {
var evaluatedArgs = [];
for (var _i = 0, args_2 = args_1; _i < args_2.length; _i++) {
var arg = args_2[_i];
evaluatedArgs.push(arg.evaluate(binding.source, binding.lookupFunctions, true));
}
fromViewObservers_1.forEach(function (observer) { return observer.next({ event: event, arguments: evaluatedArgs }); });
};
fromViewObservable['_aureliaType'] = 'action';
}
}
if (binding['updateSource'] || binding['updateTarget']) {
binding.allChangesObservable =
allChanges.subscribe(function (value) {
context.aureliaViewValues.set(name, value);
}, function (error) { return logger.error(error.message); }, function () {
logger.debug("completed allChangesObservable for " + name);
binding.allChangesObservable = undefined;
});
}
};
CycleBindingBehavior.prototype.unbind = function (binding, scope) {
var i = interceptMethods.length;
while (i--) {
var method = interceptMethods[i];
if (!binding[method]) {
continue;
}
binding[method] = binding[("cycle-intercepted-" + method)];
binding[("cycle-intercepted-" + method)] = undefined;
}
if (binding.toViewObservable) {
binding.toViewObservers.forEach(function (observer) { return observer.complete(); });
binding.toViewObservers = undefined;
binding.toViewObservable = undefined;
}
if (binding.fromViewObservable) {
binding.fromViewObservers.forEach(function (observer) { return observer.complete(); });
binding.fromViewObservers = undefined;
binding.fromViewObservable = undefined;
}
};
return CycleBindingBehavior;
}());
exports.CycleBindingBehavior = CycleBindingBehavior;
function cycle(potentialTarget) {
var deco = function (target) {
console.log('cycle decorator', target);
target.useCycle = true;
};
return potentialTarget ? deco(potentialTarget) : deco;
var result = evalListCache[length];
for (i = 0; i < length; ++i) {
result[i] = list[i].evaluate(scope, lookupFunctions);
}
return result;
}
exports.cycle = cycle;
});
//# sourceMappingURL=index.js.map
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiL3NvdXJjZS8iLCJzb3VyY2VzIjpbImluZGV4LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7O0lBV0EsSUFBTSxNQUFNLEdBQUcsYUFBYSxDQUFDLFNBQVMsQ0FBQyxlQUFlLENBQUMsQ0FBQTtJQUV2RCxtQkFBMEIsZUFBZTtRQUN2QyxJQUFNLHVCQUF1QixHQUFHLGVBQWUsQ0FBQyxTQUFTLENBQUMsR0FBRyxDQUFDLG9CQUFvQixDQUFDLENBQUE7UUFDbkYsZUFBZSxDQUFDLE9BQU8sQ0FBQyxTQUFTLENBQUMsdUJBQXVCLENBQUMsT0FBTyxFQUFFLHVCQUF1QixDQUFDLENBQUE7UUFFM0YsSUFBTSxZQUFZLEdBQWlCLHlCQUFJLENBQUMsU0FBUyxDQUFDLElBQUksQ0FBQTtRQUV0RCx5QkFBSSxDQUFDLFNBQVMsQ0FBQyxJQUFJLEdBQUcsY0FBYyxPQUFZLEVBQUUsZUFBd0IsRUFBRSxhQUF1QjtZQUNqRyxJQUFJLE9BQU8sQ0FBQTtZQUVYLEVBQUUsQ0FBQyxDQUFDLE9BQU8sSUFBSSxPQUFPLE9BQU8sQ0FBQyxLQUFLLElBQUksVUFBVSxDQUFDLENBQUMsQ0FBQztnQkFDbEQ7b0JBQ0UsTUFBTSxDQUFDLFVBQUUsR0FBQyxPQUFPLENBQUMsV0FBVyxDQUFDLElBQUksR0FBRyxNQUFNLENBQUMsR0FBRSxpQkFBaUIsQ0FBQyxPQUFPLENBQUMsS0FBRSxDQUFBOztnQkFDNUUsQ0FBQztnQkFHRCxPQUFPLEdBQUcsT0FBTyxDQUFDLFlBQVksQ0FBQTtnQkFHOUIsRUFBRSxDQUFDLENBQUMsT0FBTyxJQUFJLE9BQU8sT0FBTyxJQUFJLFFBQVEsQ0FBQyxDQUFDLENBQUM7b0JBQzFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxPQUFPLENBQUMsV0FBVyxDQUFDLElBQUksR0FBRyxNQUFNLElBQUksT0FBTyxDQUFDLENBQUM7d0JBQ2xELE1BQU0sQ0FBQyxNQUFNLENBQUMsT0FBTyxFQUFFLGlCQUFpQixFQUFF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
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiL3NvdXJjZS8iLCJzb3VyY2VzIjpbImluZGV4LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7O0lBdUJBLElBQU0sTUFBTSxHQUFHLDhCQUFVLENBQUMsU0FBUyxDQUFDLG1CQUFtQixDQUFDLENBQUE7SUFHeEQsbUJBQTBCLGVBQXVDO1FBVS9ELElBQU0sWUFBWSxHQUFpQix5QkFBSSxDQUFDLFNBQVMsQ0FBQyxJQUFJLENBQUE7UUFFdEQseUJBQUksQ0FBQyxTQUFTLENBQUMsSUFBSSxHQUFHLGNBQWMsT0FBWSxFQUFFLGVBQXdCLEVBQUUsYUFBdUI7WUFDakcsSUFBSSxPQUFPLENBQUE7WUFFWCxFQUFFLENBQUMsQ0FBQyxPQUFPLElBQUksT0FBTyxPQUFPLENBQUMsS0FBSyxJQUFJLFVBQVUsQ0FBQyxDQUFDLENBQUM7Z0JBQ2xEO29CQUNFLE1BQU0sQ0FBQyxVQUFFLEdBQUMsT0FBTyxDQUFDLFdBQVcsQ0FBQyxJQUFJLEdBQUcsTUFBTSxDQUFDLEdBQUUsaUJBQWlCLENBQUMsT0FBTyxDQUFDLEtBQUUsQ0FBQTs7Z0JBQzVFLENBQUM7Z0JBR0QsT0FBTyxHQUFHLE9BQU8sQ0FBQyxZQUFZLENBQUE7Z0JBRzlCLEVBQUUsQ0FBQyxDQUFDLE9BQU8sSUFBSSxPQUFPLE9BQU8sSUFBSSxRQUFRLENBQUMsQ0FBQyxDQUFDO29CQUMxQyxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUMsT0FBTyxDQUFDLFdBQVcsQ0FBQyxJQUFJLEdBQUcsTUFBTSxJQUFJLE9BQU8sQ0FBQyxDQUFDO3dCQUNsRCxNQUFNLENBQUMsTUFBTSxDQUFDLE9BQU8sRUFBRSxpQkFBaUIsRUFBRSxDQUFDLENBQUE7Z0JBRS9DLENBQUM7Z0JBQUMsSUFBSSxDQUFDLENBQUM7b0JBRU4sT0FBTyxHQUFHLGlCQUFpQixFQUFFLENBQUE7Z0JBQy9CLENBQUM7WUFDSCxDQUFDO1lBRUQsWUFBWSxDQUFDLEtBQUssQ0FBQyxJQUFJLEVBQUUsU0FBUyxD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
{
"name": "aurelia-cycle",
"version": "0.0.6",
"version": "0.1.0",
"description": "An Aurelia plugin that enables the use of Cycle.js inside of Aurelia.",

@@ -5,0 +5,0 @@ "keywords": [

@@ -54,9 +54,9 @@ # aurelia-cycle

To make bindings visible to the driver you need to apply the `cycle` Binding Behavior to them as shown below:
To make bindings visible to the driver you need to refer to them as if they're either `cycleValue('yourName')` or `cycleAction('yourName')` as shown below:
```html
<template>
<h2>${count & cycle}</h2>
<button click.delegate="increment() & cycle">+</button>
<button click.delegate="decrement() & cycle">-</button>
<h2>${cycleValue('count')}</h2>
<button click.delegate="cycleAction('increment')">+</button>
<button click.delegate="cycleAction('decrement')">-</button>
</template>

@@ -63,0 +63,0 @@ ```

@@ -1,2 +0,3 @@

import {View} from 'aurelia-templating';
import {CallScope, Scope, getContextFor, Binding, Expression} from 'aurelia-binding'
import {View} from 'aurelia-templating'
import {Observable, Observer, Subscription} from 'rxjs/Rx'

@@ -6,14 +7,32 @@ import Cycle from '@cycle/core/lib/index'

import { DriverFunction } from '@cycle/base'
import {Aurelia, LogManager, FrameworkConfiguration} from 'aurelia-framework';
import * as TheLogManager from 'aurelia-logging'
// for returning data to other cycles (like clicks on a delete button)
// it would be great to have a shared context
// actions / values should have { event, arguments, context }
// then there are an aggregate observables that contain data of all objects
// so you can have a SharedAureliaDriver
// Shared.select(TodoItem).actions('destroy')
// actually, with @bindable you could theoretically also bind action triggers
// so maybe it's not necesary to have a shared context after all?
// import * as TheLogManager from 'aurelia-logging'
// export { default as Cycle } from '@cycle/core/lib/index'
// export { Subject, Scheduler, Observable, Observer, Operator, Subscriber, Subscription, Symbol, AsyncSubject, ReplaySubject, BehaviorSubject, ConnectableObservable, Notification, EmptyError, ArgumentOutOfRangeError, ObjectUnsubscribedError, UnsubscriptionError } from 'rxjs/Rx'
const logger = TheLogManager.getLogger('aurelia-cycle')
const logger = LogManager.getLogger('aurelia-cycle-new')
// const logger = TheLogManager.getLogger('aurelia-cycle-new')
export function configure(frameworkConfig) {
const bindingBehaviorInstance = frameworkConfig.container.get(CycleBindingBehavior)
frameworkConfig.aurelia.resources.registerBindingBehavior('cycle', bindingBehaviorInstance) //new CycleBindingBehavior()
export function configure(frameworkConfig: FrameworkConfiguration) {
// const bindingBehaviorInstance = frameworkConfig.container.get(CycleBindingBehavior)
// frameworkConfig.aurelia.resources.registerBindingBehavior('cycle', bindingBehaviorInstance) //new CycleBindingBehavior()
// TODO: investigate:
// frameworkConfig.aurelia.resources.registerViewEngineHooks({
// beforeCreate: ()=>{ logger.debug('before view create') },
// afterCreate: ()=>{ logger.debug('after view create') }
// })
const originalBind:(scope)=>void = View.prototype.bind

@@ -23,3 +42,3 @@

let sources
// logger.debug('before bind')
if (context && typeof context.cycle == 'function') {

@@ -30,3 +49,3 @@ function getDefaultSources() {

// console.log('sources', context, context.cycleDrivers, scope)
// logger.debug('sources', context, context.cycleDrivers, scope)
sources = context.cycleDrivers

@@ -46,2 +65,3 @@ // logger.debug('starting post-binding for cycle hook', sources, typeof sources, context.constructor.name + 'View', context.constructor.name + 'View' in sources)

originalBind.apply(this, arguments)
// logger.debug('after bind')

@@ -58,27 +78,200 @@ if (sources) {

/*
const originalEnsurePropertiesDefined = HtmlBehaviorResource.prototype._ensurePropertiesDefined
HtmlBehaviorResource.prototype._ensurePropertiesDefined = function _ensurePropertiesDefined(instance: Object, lookup: Object) {
logger.debug('HtmlBehaviorResource', instance, lookup, this, this.properties)
originalEnsurePropertiesDefined.apply(this, arguments)
// const bindingBind: Function = Binding.prototype.bind
// Binding.prototype.bind = function bind(source: Scope) {
// bindingBind.apply(this, arguments)
// console.log('binding', this)
// }
const callScopeConnect: Function = CallScope.prototype.connect
CallScope.prototype.connect = function connect(binding: Binding & any, scope: Scope) {
callScopeConnect.apply(this, arguments)
console.log('connected', binding, scope, this)
// binding.call()
if (this.name == 'cycleValue') {
console.log('we have a cycleValue connect!')
const context = scope.bindingContext
const name = this.args[0].evaluate(scope, binding.lookupFunctions, true)
const observable = getOrCreateObservable(name, context)
observable.subscribe(
(value) => {
// this.updateTarget(value) // update CallScope value
let bindingValue = binding.sourceExpression.evaluate(binding.source, binding.lookupFunctions)
binding.updateTarget(bindingValue) // update the whole binding
},
(error) => logger.error(`binding error for ${name}`, error),
() => logger.debug(`observable for ${name} complete`)
)
// setInterval(() => {
// let value = binding.sourceExpression.evaluate(binding.source, binding.lookupFunctions)
// binding.updateTarget(value)
// }, 1000)
}
// binding.
// let args = this.args;
// let i = args.length;
// while (i--) {
// args[i].connect(binding, scope);
// }
// todo: consider adding `binding.observeProperty(scope, this.name);`
}
*/
const callScopeConstructor: Function = CallScope.prototype.constructor
CallScope.prototype.constructor = function() {
callScopeConstructor.apply(this, arguments)
this.isAssignable = true
}
function triggerObservers(name:string, value: ViewValue, context) {
const observers = context.observers.get(name) as Set<Observer<ViewValue>>
if (observers)
observers.forEach(observer => observer.next(value)) // maybe we need to add origin?
else
logger.error(`no observer set exists for ${name} cycle binding`)
}
CallScope.prototype.assign = function assign(scope: Scope, value: any, lookupFunctions: any): any {
// if (!context.cycle) {
const context = getContextFor(this.name, scope, this.ancestor)
if (!context || typeof context.cycle != 'function' || this.name !== 'cycleValue' || this.args.length === 0) {
throw new Error(`Binding expression "${this}" cannot be assigned to.`);
}
// const context = scope.bindingContext
const name = this.args[0].evaluate(scope, lookupFunctions, true)
logger.debug(context, 'will set', name, 'to', value)
triggerObservers(name, value, context)
}
const callScopeEvaluate: Function = CallScope.prototype.evaluate
CallScope.prototype.evaluate = function evaluate(scope: Scope, lookupFunctions, mustEvaluate: boolean) {
const context = getContextFor(this.name, scope, this.ancestor)
if (!context || typeof context.cycle != 'function' || (this.name !== 'cycleValue' && this.name !== 'cycleAction') || this.args.length === 0) {
return callScopeEvaluate.apply(this, arguments)
}
// const context = scope.bindingContext
const name = this.args[0].evaluate(scope, lookupFunctions, true)
if (this.name === 'cycleAction') {
const args = evalList(scope, Array.from(this.args).slice(1), lookupFunctions)
const event = scope.overrideContext.$event
logger.debug(context, 'event trigerred', name, args, event, this)
triggerObservers(name, { event, arguments: args }, context)
// NOTE: if this returns true, it can leave propagation
return
}
logger.debug(context, 'getting value to set in the view', name, this)
// no it's own we shouldn't return anything;
// instead we will use propertyViewSetters directly to set the value of this binding
if (name in context)
return context[name]
// context.aureliaViewValues.get(name)
// 'awesome'
// let args = evalList(scope, this.args, lookupFunctions);
// let func = getFunction(context, this.name, mustEvaluate);
// if (func) {
// return func.apply(context, args);
// }
// return undefined;
}
function getOrCreateObservable(name: string, context, hasValue = true) {
let observable = context.observables.get(name) as Observable<any> & ObservableTypeExtension
if (!observable) {
const observers = new Set<Observer<string>>()
observable = Observable.create(function (observer: Observer<string>) {
// logger.debug('Creating toView binding observable for:', name)
observers.add(observer)
// Any cleanup logic might go here
return function () {
// logger.debug('disposed of toView observable for', name)
observers.delete(observer)
}
})
if (hasValue) {
observable._cycleType = 'value'
const storeValueCacheSubscription: Subscription = observable.subscribe(
value => context[name] = value
// value => context.aureliaViewValues.set(name, value)
// undefined,
// () => storeValueCacheSubscription.unsubscribe()
)
} else {
observable._cycleType = 'action'
}
context.observables.set(name, observable)
context.observers.set(name, observers)
// storeValueSubscription.
}
return observable
}
CallScope.prototype.bind = function bind(binding: Binding & any, scope: Scope, lookupFunctions) {
const expression = binding.sourceExpression // as Expression & { name:string, ancestor:any, args:Array<Expression>, _unbind:()=>void }
// const name = expression.name // act only if 'cycleValue'
// console.log('binding', binding)
if (expression.name == 'cycleValue' || expression.name == 'cycleAction') {
const context = getContextFor(expression.name, scope, expression.ancestor)
const name = expression.args[0].evaluate(scope, lookupFunctions, true)
// store the update method:
logger.debug('store the updateTarget for', name, context, binding)
// setTimeout(() => binding.updateTarget('ho ho ho'), 2000)
const observable = getOrCreateObservable(name, context, expression.name == 'cycleValue')
// observable.subscribe(
// (value) => binding.updateTarget(value),
// (error) => logger.error(`binding error for ${name}`, error),
// () => logger.debug(`observable for ${name} complete`)
// )
// const propertyViewSetters = context.propertyViewSetters as Map<string, Function>
// propertyViewSetters.set(name, binding.updateTarget.bind(binding))
// expression._unbind = () => propertyViewSetters.delete(name)
}
// should we?
// binding.targetObserver = { subscribe(){ }, unsubscribe() { } }
}
CallScope.prototype.unbind = function unbind(binding, scope: Scope) {
const expression = binding.sourceExpression
// const name = expression.name // act only if 'cycleValue'
if (expression.name == 'cycleValue') {
expression._unbind()
// const context = getContextFor(expression.name, scope, expression.ancestor)
// const name = expression.args[0].evaluate(scope, lookupFunctions, true)
// store the update method:
// logger.debug('store the updateTarget for', name, context, binding.updateTarget)
}
// should we?
// binding.targetObserver = { subscribe(){ }, unsubscribe() { } }
}
}
export type PropertyViewSetterMap = Map<string, (value)=>void>;
export type ViewObservable = Observable<string | number>;
export type Action = { event: AnyEvent, arguments: Array<any> };
export type Value = string | number
export type ViewValue = Action | Value
export type FromViewActionObservable = Observable<Action> & { _aureliaType: 'action' | 'property' };
export type FromViewValueObservable = ViewObservable & { _aureliaType: 'action' | 'property' };
// export type ViewObservable = Observable<string | number>;
export type FromViewObservable = FromViewActionObservable | FromViewValueObservable;
export type FromViewObservableMap = Map<string, FromViewObservable>;
export type ObservableTypeExtension = { _cycleType: 'action' | 'value' };
export type ActionObservable = Observable<Action> & ObservableTypeExtension;
export type ValueObservable = Observable<Value> & ObservableTypeExtension;
// export type ViewObservable = ActionObservable | ValueObservable;
export type ViewObservable = (Observable<Action> | Observable<Value>) & ObservableTypeExtension;
export type ViewObservableMap = Map<string, ViewObservable>;
export type ViewValues = Map<string, string | number>;
// export type ViewObservableMap = Map<string, ViewObservable>;
export type AnyEvent = Event | FocusEvent | GamepadEvent | HashChangeEvent | KeyboardEvent | MessageEvent | MouseEvent | MouseWheelEvent | MSGestureEvent | MSManipulationEvent | MSMediaKeyMessageEvent | MSMediaKeyNeededEvent | MSSiteModeEvent | MutationEvent | NavigationCompletedEvent | NavigationEvent | NavigationEventWithReferrer | OfflineAudioCompletionEvent | PageTransitionEvent | PermissionRequestedEvent | PointerEvent | PopStateEvent | ProgressEvent | ScriptNotifyEvent | StorageEvent | SVGZoomEvent | TextEvent | TouchEvent | TrackEvent | TransitionEvent | UIEvent | UnviewableContentIdentifiedEvent | WebGLContextEvent | WheelEvent;
export type Action = { event: AnyEvent, arguments: Array<any> };
export type ViewSource = { values: (bindingName: string) => FromViewValueObservable, actions: (bindingName: string) => FromViewActionObservable };
export type ViewSource = { values: (bindingName: string) => ValueObservable, actions: (bindingName: string) => ActionObservable };
//////////////////////////
function invokeAureliaBindingSetter(context: any, name: string, value: string) {
const previousValue = context.aureliaViewValues.get(name)
// const previousValue = context.aureliaViewValues.get(name)
const previousValue = context[name]

@@ -93,10 +286,10 @@ if (previousValue !== value) {

const propertyViewSetters: PropertyViewSetterMap = context.propertyViewSetters
// const aureliaToViewObservables: ViewObservables = context.aureliaToViewObservables
const setter = propertyViewSetters.get(name)
if (setter)
setter(value)
else
logger.error(`the binding (${name}) is not a two-way binding and you cannot set it!`)
// const propertyViewSetters: PropertyViewSetterMap = context.propertyViewSetters
const observers = context.observers as Map<string, Observer<string>>
observers.get(name).forEach(observer => observer.next(value))
// const setter = propertyViewSetters.get(name)
// if (setter)
// setter(value)
// else
// logger.error(`the binding (${name}) is not a two-way binding and you cannot set it!`)
}

@@ -109,12 +302,14 @@ // else {

function getAureliaObservableForBinding(context: any, name: string) {
const aureliaFromViewObservables: FromViewObservableMap = context.aureliaFromViewObservables
const aureliaToViewObservables: ViewObservableMap = context.aureliaToViewObservables
const observables: ViewObservableMap = context.observables
return observables.get(name)
// const aureliaFromViewObservables: FromViewObservableMap = context.aureliaFromViewObservables
// const aureliaToViewObservables: ViewObservableMap = context.aureliaToViewObservables
let fromView = aureliaFromViewObservables.get(name)
let toView = aureliaToViewObservables.get(name)
// let fromView = aureliaFromViewObservables.get(name)
// let toView = aureliaToViewObservables.get(name)
const returnObservable: FromViewObservable = toView && fromView ? Observable.merge<FromViewObservable, FromViewObservable>(fromView, toView) : toView as any || fromView
// const returnObservable: FromViewObservable = toView && fromView ? Observable.merge<FromViewObservable, FromViewObservable>(fromView, toView) : toView as any || fromView
returnObservable._aureliaType = fromView ? fromView._aureliaType : 'property'
return returnObservable
// returnObservable._cycleType = fromView ? fromView._cycleType : 'value'
// return returnObservable
}

@@ -140,4 +335,4 @@

const observable = getAureliaObservableForBinding(context, bindingName)
if (!observable || observable._aureliaType != 'property')
throw new Error(`Cannot select an unexistent binding ${bindingName}`)
if (!observable || observable._cycleType != 'value')
throw new Error(`Cannot select a non-existent value binding ${bindingName}`)
return observable

@@ -147,4 +342,4 @@ },

const observable = getAureliaObservableForBinding(context, bindingName)
if (!observable || observable._aureliaType != 'action')
throw new Error(`Cannot select an unexistent binding ${bindingName}`)
if (!observable || observable._cycleType != 'action')
throw new Error(`Cannot select a non-existent action binding ${bindingName}`)
return observable

@@ -159,14 +354,20 @@ },

// aurelia specific
if (!context.propertyViewSetters)
context.propertyViewSetters = new Map<string, (value)=>void>()
// if (!context.propertyViewSetters)
// context.propertyViewSetters = new Map<string, (value)=>void>()
if (!context.aureliaFromViewObservables)
context.aureliaFromViewObservables = new Map<string, Observable<any>>()
// if (!context.aureliaFromViewObservables)
// context.aureliaFromViewObservables = new Map<string, Observable<any>>()
if (!context.aureliaToViewObservables)
context.aureliaToViewObservables = new Map<string, Observable<any>>()
// if (!context.aureliaToViewObservables)
// context.aureliaToViewObservables = new Map<string, Observable<any>>()
if (!context.aureliaViewValues)
context.aureliaViewValues = new Map<string, string>()
// if (!context.aureliaViewValues)
// context.aureliaViewValues = new Map<string, string>()
if (!context.observables)
context.observables = new Map<string, Observable<any>>()
if (!context.observers)
context.observers = new Map<string, Observer<any>>()
if (!context.cycleStarted || !context.cycleStartedResolve)

@@ -178,184 +379,27 @@ context.cycleStarted = new Promise<void>((resolve) => context.cycleStartedResolve = resolve)

const interceptMethods = ['updateTarget', 'updateSource', 'callSource']
export class CycleBindingBehavior {
bind(binding, scope, name) { // , param, param...
const context = scope.overrideContext.bindingContext // == Welcome
const expression = binding.sourceExpression.expression
let firstExpression = expression.expression || expression
if (!name) {
let maxNesting = 10
while (!firstExpression.name && maxNesting--) {
firstExpression = firstExpression.left
}
name = firstExpression.name
}
logger.debug(`Creating Cycle binding for '${name}' via interception`)
// TODO: don't create toView when 'callSource' type
const toViewObservers = new Set<Observer<string>>()
const toViewObservable:Observable<any> = Observable.create(function (observer: Observer<any>) {
// logger.debug('Creating toView binding observable for:', name)
// Yield a single value and complete
toViewObservers.add(observer)
// Any cleanup logic might go here
return function () {
// logger.debug('disposed of toView observable for', name)
toViewObservers.delete(observer)
}
})
binding.toViewObservable = toViewObservable
binding.toViewObservers = toViewObservers
context.aureliaToViewObservables.set(name, toViewObservable)
let toViewSubscription: Subscription
if (binding['updateTarget']) {
let method = 'updateTarget'
binding[`cycle-intercepted-${method}`] = binding[method]
const updateBindingValueInView = binding[method].bind(binding);
toViewSubscription = toViewObservable.subscribe(value => {
// logger.debug('updating toView', name, value)
updateBindingValueInView(value)
}, error => logger.error(`Error in a toViewObservable binding for ${name}`))
const toViewObserversNextAll = (value) => {
toViewObservers.forEach(observer => observer.next(value))
}
// seed default value of the binding
// this shouldn't happen more than once (?)
// update is the "setter" for the View
// binding[method] = toViewObserversNextAll
binding[method] = (value) => {
context.cycleStarted.then(() => {
// don't seed an initial value if it is undefined
if (value !== undefined) {
logger.debug(`an initial value was seeded to the observable: ${name} = '${value}'`)
toViewObserversNextAll(value)
}
})
// toViewObservers.forEach(observer => observer.next(value))
}
context.propertyViewSetters.set(name, toViewObserversNextAll)
}
let allChanges = toViewObservable
if (binding['updateSource'] || binding['callSource']) {
let fromViewObservers = new Set<Observer<string|{event; arguments}>>()
const fromViewObservable:Observable<any> = Observable.create(function (observer: Observer<any>) {
// logger.debug('Creating fromView binding observable for:', name)
// Yield a single value and complete
fromViewObservers.add(observer)
// Any cleanup logic might go here
return function () {
// logger.debug('disposed of fromView observable for', name)
fromViewObservers.delete(observer)
}
})
binding.fromViewObservable = fromViewObservable
binding.fromViewObservers = fromViewObservers
context.aureliaFromViewObservables.set(name, fromViewObservable)
if (binding['updateSource']) {
let method = 'updateSource'
binding[`cycle-intercepted-${method}`] = binding[method];
// user input - we don't need to change the underlying ViewModel,
// since we don't plan on using it
//
// we seed the value as user input to the observable
binding[method] = (value) => {
// logger.debug('you changed the value of', name, value)
fromViewObservers.forEach(observer => observer.next(value))
}
fromViewObservable['_aureliaType'] = 'property'
allChanges = Observable.merge(fromViewObservable, toViewObservable)
}
if (binding['callSource']) {
let method = 'callSource'
binding[`cycle-intercepted-${method}`] = binding[method]
// triggers and delegates should be considered user input
const args = firstExpression.args
binding[method] = ($event) => {
let evaluatedArgs = []
for (let arg of args) {
evaluatedArgs.push(arg.evaluate(binding.source, binding.lookupFunctions, true))
}
// logger.debug('you invoked a method', name, event, evaluatedArgs)
fromViewObservers.forEach(observer => observer.next({ event, arguments: evaluatedArgs }))
}
fromViewObservable['_aureliaType'] = 'action'
}
}
if (binding['updateSource'] || binding['updateTarget']) {
binding.allChangesObservable =
allChanges.subscribe(
(value) => {
// logger.debug('a value was set', name, value)
context.aureliaViewValues.set(name, value)
},
(error) => logger.error(error.message),
() => {
logger.debug(`completed allChangesObservable for ${name}`)
binding.allChangesObservable = undefined
}
)
}
}
unbind(binding, scope) {
let i = interceptMethods.length;
while (i--) {
let method = interceptMethods[i];
if (!binding[method]) {
continue;
}
binding[method] = binding[`cycle-intercepted-${method}`];
binding[`cycle-intercepted-${method}`] = undefined;
}
if (binding.toViewObservable) {
binding.toViewObservers.forEach(observer => observer.complete())
binding.toViewObservers = undefined
binding.toViewObservable = undefined
}
if (binding.fromViewObservable) {
binding.fromViewObservers.forEach(observer => observer.complete())
binding.fromViewObservers = undefined
binding.fromViewObservable = undefined
}
//////////////////////////
// FROM https://github.com/aurelia/binding/blob/master/src/ast.js
var evalListCache = [[],[0],[0,0],[0,0,0],[0,0,0,0],[0,0,0,0,0]];
/// Evaluate the [list] in context of the [scope].
function evalList(scope, list, lookupFunctions) {
var length = list.length,
cacheLength, i;
for (cacheLength = evalListCache.length; cacheLength <= length; ++cacheLength) {
evalListCache.push([]);
}
}
var result = evalListCache[length];
/**
* Decorator: Specifies that Cycle should used in the decoratored ViewModel.
* [NOT USED AT THIS TIME]
*/
export function cycle(potentialTarget?: any): any {
let deco = function(target) {
console.log('cycle decorator', target)
target.useCycle = true
for (i = 0; i < length; ++i) {
result[i] = list[i].evaluate(scope, lookupFunctions);
}
return potentialTarget ? deco(potentialTarget) : deco;
return result;
}

Sorry, the diff of this file is not supported yet

SocketSocket SOC 2 Logo

Product

  • Package Alerts
  • Integrations
  • Docs
  • Pricing
  • FAQ
  • Roadmap
  • Changelog

Packages

npm

Stay in touch

Get open source security insights delivered straight into your inbox.


  • Terms
  • Privacy
  • Security

Made with ⚡️ by Socket Inc