Comparing version 2.0.0-alpha.1 to 2.0.0-alpha.2
223
dist/jpex.js
(function(){ | ||
var __jpex_modules__ = []; | ||
// /src/constants.js | ||
// /src/hasOwn.js | ||
__jpex_modules__[2] = function(require, module, exports){ | ||
var ObjectHasOwnProperty = Object.hasOwnProperty; | ||
module.exports = function (obj, name) { | ||
return ObjectHasOwnProperty.call(obj, name); | ||
}; | ||
}; | ||
// /src/constants.js | ||
__jpex_modules__[3] = function(require, module, exports){ | ||
exports.APPLICATION = 1; | ||
@@ -13,3 +22,3 @@ exports.CLASS = 2; | ||
// /src/jpexError.js | ||
__jpex_modules__[5] = function(require, module, exports){ | ||
__jpex_modules__[6] = function(require, module, exports){ | ||
module.exports = function(mess){ | ||
@@ -24,5 +33,5 @@ var e = new Error(mess); | ||
// /src/resolver/factories.js | ||
__jpex_modules__[4] = function(require, module, exports){ | ||
var jpexError = require(5); | ||
var constants = require(2); | ||
__jpex_modules__[5] = function(require, module, exports){ | ||
var jpexError = require(6); | ||
var constants = require(3); | ||
@@ -101,5 +110,6 @@ exports.getFactory = function (Class, name, optional) { | ||
// /src/resolver/index.js | ||
__jpex_modules__[3] = function(require, module, exports){ | ||
var factoryService = require(4); | ||
var jpexError = require(5); | ||
__jpex_modules__[4] = function(require, module, exports){ | ||
var hasOwn = require(2); | ||
var factoryService = require(5); | ||
var jpexError = require(6); | ||
@@ -184,3 +194,3 @@ exports.extractParameters = function (fn) { | ||
// Optional dependency | ||
var optional = checkOptional(name); | ||
var optional = exports.checkOptional(name); | ||
if (optional){ | ||
@@ -192,3 +202,3 @@ name = optional; | ||
// Check named Parameters | ||
if (Object.hasOwnProperty.call(namedParameters, name)){ | ||
if (hasOwn(namedParameters, name)){ | ||
return namedParameters[name]; | ||
@@ -251,14 +261,9 @@ } | ||
function checkOptional(name) { | ||
if (name[0] === '_'){ | ||
var arr = name.split('_'); | ||
if (arr[arr.length-1] === ''){ | ||
arr.shift(); | ||
arr.pop(); | ||
name = arr.join('_'); | ||
return name; | ||
} | ||
exports.checkOptional = function (name) { | ||
if (name[0] === '_' && name[name.length-1] === '_'){ | ||
return name.substring(1, name.length-1); | ||
}else{ | ||
return false; | ||
} | ||
return false; | ||
} | ||
}; | ||
@@ -268,3 +273,3 @@ }; | ||
// /src/isNode.js | ||
__jpex_modules__[7] = function(require, module, exports){ | ||
__jpex_modules__[8] = function(require, module, exports){ | ||
var _process; | ||
@@ -283,4 +288,6 @@ | ||
// /src/plugins/index.js | ||
__jpex_modules__[8] = function(require, module, exports){ | ||
exports.use = function (plugin, config) { | ||
__jpex_modules__[9] = function(require, module, exports){ | ||
var hasOwn = require(2); | ||
exports.use = function (plugin, config) { | ||
var Jpex = this; | ||
@@ -353,3 +360,3 @@ | ||
} | ||
if (!Object.hasOwnProperty.call(hooks, name)){ | ||
if (!hasOwn(hooks, name)){ | ||
hooks[name] = Object.create(Class.$$parent.$$hooks[name] || null); | ||
@@ -363,6 +370,7 @@ } | ||
// /src/class/privates.js | ||
__jpex_modules__[6] = function(require, module, exports){ | ||
var isNode = require(7); | ||
var triggerHook = require(8).trigger; | ||
var resolver = require(3); | ||
__jpex_modules__[7] = function(require, module, exports){ | ||
var isNode = require(8); | ||
var hasOwn = require(2); | ||
var triggerHook = require(9).trigger; | ||
var resolver = require(4); | ||
@@ -500,3 +508,3 @@ function getFromNodeModules(name) { | ||
} | ||
if (def && Object.hasOwnProperty.call(def, 'value')){ | ||
if (def && hasOwn(def, 'value')){ | ||
def = def.value; | ||
@@ -518,4 +526,4 @@ } | ||
// /src/factories/wrapper.js | ||
__jpex_modules__[11] = function(require, module, exports){ | ||
var constants = require(2); | ||
__jpex_modules__[12] = function(require, module, exports){ | ||
var constants = require(3); | ||
@@ -552,4 +560,4 @@ module.exports = function (factory) { | ||
// /src/factories/constant.js | ||
__jpex_modules__[10] = function(require, module, exports){ | ||
var wrapper = require(11); | ||
__jpex_modules__[11] = function(require, module, exports){ | ||
var wrapper = require(12); | ||
@@ -565,5 +573,5 @@ module.exports = function (name, obj) { | ||
// /src/factories/factory.js | ||
__jpex_modules__[12] = function(require, module, exports){ | ||
var extractParameters = require(3).extractParameters; | ||
var wrapper = require(11); | ||
__jpex_modules__[13] = function(require, module, exports){ | ||
var extractParameters = require(4).extractParameters; | ||
var wrapper = require(12); | ||
@@ -600,3 +608,3 @@ module.exports = function (lifecycle, name, dependencies, fn) { | ||
// /src/instantiator.js | ||
__jpex_modules__[14] = function(require, module, exports){ | ||
__jpex_modules__[15] = function(require, module, exports){ | ||
module.exports = function(context, args){ | ||
@@ -609,4 +617,6 @@ return new (Function.prototype.bind.apply(context, args)); | ||
// /src/factories/jaas.js | ||
__jpex_modules__[15] = function(require, module, exports){ | ||
// Jpex As A Service | ||
__jpex_modules__[16] = function(require, module, exports){ | ||
var checkOptional = require(4).checkOptional; | ||
// Jpex As A Service | ||
module.exports = function (name, dependencies, Fn) { | ||
@@ -623,7 +633,9 @@ dependencies = dependencies ? [].concat(dependencies) : []; | ||
var i = 1; | ||
dependencies.forEach(function (key) { | ||
dependencies.slice(1).forEach(function (key) { | ||
if (typeof key === 'object'){ | ||
Object.keys(key).forEach(function (key2) { | ||
var val = args[i++]; | ||
if (val !== undefined){ | ||
key2 = checkOptional(key2) || key2; | ||
params[key2] = val; | ||
@@ -635,2 +647,3 @@ } | ||
if (val !== undefined){ | ||
key = checkOptional(key) || key; | ||
params[key] = val; | ||
@@ -662,6 +675,6 @@ } | ||
// /src/factories/service.js | ||
__jpex_modules__[13] = function(require, module, exports){ | ||
var extractParameters = require(3).extractParameters; | ||
var instantiator = require(14); | ||
var jaas = require(15); | ||
__jpex_modules__[14] = function(require, module, exports){ | ||
var extractParameters = require(4).extractParameters; | ||
var instantiator = require(15); | ||
var jaas = require(16); | ||
@@ -700,4 +713,6 @@ module.exports = function (name, dependencies, fn) { | ||
// /src/factories/decorator.js | ||
__jpex_modules__[16] = function(require, module, exports){ | ||
module.exports = function (name, fn) { | ||
__jpex_modules__[17] = function(require, module, exports){ | ||
var hasOwn = require(2); | ||
module.exports = function (name, fn) { | ||
var factory = this.$$factories[name]; | ||
@@ -709,3 +724,3 @@ if (!factory){ | ||
// so copy the factory onto the current class... | ||
if (!Object.hasOwnProperty.call(this.$$factories, name)){ | ||
if (!hasOwn(this.$$factories, name)){ | ||
factory = Object.assign({}, this.$$factories[name]); | ||
@@ -728,7 +743,7 @@ this.$$factories[name] = factory; | ||
// /src/factories/index.js | ||
__jpex_modules__[9] = function(require, module, exports){ | ||
var constant = require(10); | ||
var factory = require(12); | ||
var service = require(13); | ||
var decorator = require(16); | ||
__jpex_modules__[10] = function(require, module, exports){ | ||
var constant = require(11); | ||
var factory = require(13); | ||
var service = require(14); | ||
var decorator = require(17); | ||
@@ -761,4 +776,4 @@ module.exports = function (Class, options) { | ||
// /src/class/resolve.js | ||
__jpex_modules__[17] = function(require, module, exports){ | ||
var resolver = require(3); | ||
__jpex_modules__[18] = function(require, module, exports){ | ||
var resolver = require(4); | ||
@@ -780,7 +795,8 @@ module.exports = function (Jpex) { | ||
__jpex_modules__[1] = function(require, module, exports){ | ||
var constants = require(2); | ||
var resolver = require(3); | ||
var privates = require(6); | ||
var factories = require(9); | ||
var plugins = require(8); | ||
var hasOwn = require(2); | ||
var constants = require(3); | ||
var resolver = require(4); | ||
var privates = require(7); | ||
var factories = require(10); | ||
var plugins = require(9); | ||
@@ -797,3 +813,3 @@ module.exports = function () { | ||
// Add the only default factory, $resolve | ||
require(17)(Jpex); | ||
require(18)(Jpex); | ||
@@ -826,4 +842,5 @@ return Jpex; | ||
constructor : (typeof options === 'function') ? options : null, | ||
invokeParent : !(typeof options === 'function' || options && Object.hasOwnProperty.call(options, 'constructor') && options.constructor), | ||
prototype : null, | ||
invokeParent : !(typeof options === 'function' || options && hasOwn(options, 'constructor') && options.constructor), | ||
methods : null, | ||
properties : null, | ||
static : null, | ||
@@ -857,2 +874,7 @@ config : null, | ||
// Set properties | ||
if (options.properties){ | ||
options.properties = [].concat(options.properties); | ||
} | ||
// MERGE OPTIONS HOOK | ||
@@ -916,2 +938,8 @@ if (Parent.$trigger){ | ||
// Properties | ||
if (options.properties){ | ||
var properties = createProperties(options.properties); | ||
Object.defineProperties(this, properties); | ||
} | ||
// Invoke constructor | ||
@@ -958,4 +986,4 @@ if (typeof options.constructor === 'function'){ | ||
// Add new prototype methods | ||
if (options.prototype){ | ||
Object.assign(prototype, options.prototype); | ||
if (options.methods){ | ||
Object.assign(prototype, options.methods); | ||
} | ||
@@ -969,2 +997,67 @@ | ||
function createProperties(options) { | ||
var properties = {}; | ||
options.forEach(function (option) { | ||
if (typeof option === 'string'){ | ||
properties[option] = { | ||
configurable : true, | ||
enumerable : true, | ||
writable : true, | ||
value : undefined | ||
}; | ||
}else{ | ||
Object.keys(option).forEach(function (key) { | ||
var def = option[key]; | ||
var property = {}; | ||
switch (typeof def){ | ||
case 'object': | ||
break; | ||
case 'function': | ||
def = { watch : def }; | ||
break; | ||
default: | ||
def = { value : def }; | ||
break; | ||
} | ||
var hasValue = hasOwn(def, 'value'), | ||
hasGet = hasOwn(def, 'get') && typeof def.get === 'function', | ||
hasSet = hasOwn(def, 'set') && typeof def.set === 'function', | ||
hasWatch = hasOwn(def, 'watch') && typeof def.watch === 'function', | ||
hasDefault = hasOwn(def, 'default') && typeof def.default === 'function'; | ||
if (hasValue || hasDefault || hasGet || hasSet || hasWatch){ | ||
var value = hasValue ? def.value : (hasDefault ? def.default() : undefined); | ||
property.get = function () { | ||
return hasGet ? def.get.call(this, value) : value; | ||
}; | ||
if (!hasOwn(def, 'writable') || def.writable){ | ||
property.set = function (v) { | ||
var newValue = hasSet ? def.set.call(this, v, value) : v; | ||
if (hasWatch && newValue !== value){ | ||
def.watch.call(this, newValue, value); | ||
} | ||
value = newValue; | ||
}; | ||
} | ||
property.configurable = hasOwn(def, 'configurable') ? def.configurable : true; | ||
property.enumerable = hasOwn(def, 'enumerable') ? def.enumerable : true; | ||
}else{ | ||
property.configurable = true; | ||
property.enumerable = true; | ||
property.writable = true; | ||
property.value = def; | ||
} | ||
properties[key] = property; | ||
}); | ||
} | ||
}); | ||
return properties; | ||
} | ||
function bindToInstance(instance, Class, args, namedParameters, option) { | ||
@@ -971,0 +1064,0 @@ var bindTo = instance; |
@@ -1,1 +0,1 @@ | ||
!function(){var e=[];e[2]=function(e,t,n){n.APPLICATION=1,n.CLASS=2,n.INSTANCE=3,n.NONE=4},e[5]=function(e,t,n){t.exports=function(e){var t=new Error(e);throw t.jpexInternalError=!0,t}},e[4]=function(e,t,n){function r(e){return e&&(e.fn&&"function"==typeof e.fn||e.constant||e.resolved)}var o=e(5),c=e(2);n.getFactory=function(e,t,n){var c;if(e.$trigger("getFactory",{Class:e,factoryName:t,set:function(e){c=e}}),!(r(c)||(c=e.$$resolved[t],r(c)||(c=e.$$factories[t],r(c)||(c=e.$$getFromNodeModules(t),r(c)))))){if(n)return;o(["Unable to find required dependency",t].join(" "))}return c},n.decorate=function(e,t,n){if(!n||!n.length)return t;for(var r=0,o=n.length;r<o;r++)t=n[r].call(e,t);return t},n.cacheResult=function(e,t,n,r,o){switch(n.lifecycle){case c.APPLICATION:n.resolved=!0,n.value=r;break;case c.CLASS:e.$$resolved[t]={resolved:!0,value:r};break;case c.NONE:break;case c.INSTANCE:default:o[t]=r}}},e[3]=function(e,t,n){function r(e,t,n,r,c){if(!t||!t.dependencies)return[];c||(c=[]),n||(n={});var i=[].concat(t.dependencies).map(function(t){return"object"==typeof t?Object.keys(t).map(function(r){return o(e,r,t[r],n,c)}):[o(e,t,r,n,c)]});return Array.prototype.concat.apply([],i)}function o(e,t,n,o,s){var u;switch(o||(o={}),t){case"$options":return n;case"$namedParameters":return o}var f=c(t);if(f&&(t=f,f=!0),Object.hasOwnProperty.call(o,t))return o[t];if(s.indexOf(t)>-1&&a(["Recursive loop for dependency",t,"encountered"].join(" ")),u=i.getFactory(e,t,f),!u)return u;if(u.resolved)return u.value;if(u.constant){var l=u.value;return l=i.decorate(e,l,u.decorators),i.cacheResult(e,t,u,l,o),l}var p;if(u.dependencies&&u.dependencies.length)try{p=r(e,u,o,n,s.concat(t))}catch(e){if(f)return;throw e}var d=u.fn.apply(e,p);return d=i.decorate(e,d,u.decorators),i.cacheResult(e,t,u,d,o),d}function c(e){if("_"===e[0]){var t=e.split("_");if(""===t[t.length-1])return t.shift(),t.pop(),e=t.join("_")}return!1}var i=e(4),a=e(5);n.extractParameters=function(e){var t=e.toString();t=t.replace(/\/\*(.*)\*\//g,"");var n=t.indexOf("("),r=t.indexOf(")"),o=t.indexOf("=>");return o>-1&&(o<n||n<0)?(t=t.substring(0,o).trim(),t?[t]:[]):(t=t.substring(n+1,r),t?t.split(",").map(function(e){return e.trim()}):[])},n.resolveDependencies=function(e,t,n){return r(e,t,n)},n.resolve=function(e,t,n){return o(e,t,null,n,[])}},e[7]=function(e,t,n){var r;try{r=eval("process")}catch(e){}t.exports="object"==typeof r&&"[object process]"===r.toString()},e[8]=function(e,t,n){function r(e,t,n){var r=e.$$hooks;if(!r[t]){for(var o=0,c=e;c.$$parent&&c.$$parent.$$parent;)c=c.$$parent;c.$$hooks[t]=Object.create({push:function(e){this[o++]=e},trigger:function(n){n=Object.assign({Jpex:e,eventName:t},n),Array.prototype.slice.call(this).forEach(function(e){e&&e(n)})}},{length:{get:function(){return o}}})}Object.hasOwnProperty.call(r,t)||(r[t]=Object.create(e.$$parent.$$hooks[t]||null)),r[t].push(n)}n.use=function(e,t){var n=this;if(!e||!e.install||"function"!=typeof e.install)throw new Error("Plugin does not have an install method");if(!e.name||"string"!=typeof e.name)throw new Error("Plugin must have a name property");if(this.$$using[e.name]&&!e.reuse)return void(e.silent||console.warn("Plugin "+e.name+" skipped as it has already been used"));this.$$using[e.name]=!0;var o={Jpex:n,on:function(e,t){r(n,e,t)},options:t};e.install(o)},n.trigger=function(e,t){var n=this.$$hooks[e];n&&n.trigger(t)}},e[6]=function(e,t,n){function r(e){if(s)try{var t=eval("require.main.require(name)");return this.register.constant(e,t),this.$$factories[e]}catch(e){if(!e||!e.message||"Cannot"!==e.message.substr(0,6))throw e}}function o(e,t,n){n&&"object"==typeof n||(n={});var r=0;return e&&t&&e.forEach(function(e){"object"==typeof e?Object.keys(e).forEach(function(e){void 0===n[e]&&void 0!==t[r]&&(n[e]=t[r]),r++}):(void 0===n[e]&&void 0!==t[r]&&(n[e]=t[r]),r++)}),n}function c(e,t,n){t&&!Array.isArray(t)&&(t=Array.prototype.slice.call(t)),n=this.$$namedParameters(t,n),this.$$parent.call(e,n)}function i(e,t){return Array.isArray(e)?f.resolveDependencies(this,{dependencies:e},t):f.resolve(this,e,t)}function a(e){e=e?[].concat(e):[];var t;for(t in this.$$factories)(!e.length||e.indexOf(t)>-1)&&(this.$$factories[t].resolved=!1);for(t in this.$$resolved)(!e.length||e.indexOf(t)>-1)&&delete this.$$resolved[t]}var s=e(7),u=e(8).trigger,f=e(3);t.exports=function(e,t,n){Object.defineProperties(t,{$trigger:{value:u},$resolve:{value:i},$clearCache:{value:a},$$getFromNodeModules:{value:r},$$namedParameters:{value:o.bind(null,n.dependencies)},$$invokeParent:{value:c},$$parent:{value:e},$$using:{value:Object.create(e.$$using||null)},$$factories:{value:Object.create(e.$$factories||null)},$$resolved:{value:Object.create(e.$$interfaces||null)},$$config:{value:Object.assign(Object.create(e.$$config||null),n.config)},$$hooks:{value:Object.create(e.$$hooks||null)}}),t.$trigger("privateProperties",{Class:t,options:n,apply:function(e){var n={};Object.keys(e).forEach(function(t){var r={configurable:!0,enumerable:!1},o=e[t];o&&o.get&&"function"==typeof o.get&&(r.get=o.get),o&&o.set&&"function"==typeof o.set&&(r.set=o.set),o&&Object.hasOwnProperty.call(o,"value")&&(o=o.value),r.get||r.set||(r.value=o),n[t]=r}),Object.defineProperties(t,n)}})}},e[11]=function(e,t,n){var r=e(2);t.exports=function(e){var t={lifecycle:{application:function(){return e.lifecycle=r.APPLICATION,t},class:function(){return e.lifecycle=r.CLASS,t},instance:function(){return e.lifecycle=r.INSTANCE,t},none:function(){return e.lifecycle=r.NONE,t}}};return t}},e[10]=function(e,t,n){var r=e(11);t.exports=function(e,t){var n={value:t,constant:!0};return this.$$factories[e]=n,r(n).lifecycle.application()}},e[12]=function(e,t,n){var r=e(3).extractParameters,o=e(11);t.exports=function(e,t,n,c){if("function"==typeof n&&(c=n,n=null),"function"!=typeof c)throw new Error("Factory "+t+" - fn must be a [Function]");n=n?[].concat(n):r(c),n.length||(n=null);var i={fn:c,dependencies:n,lifecycle:e};return this.$$factories[t]=i,o(i)}},e[14]=function(e,t,n){t.exports=function(e,t){return new(Function.prototype.bind.apply(e,t))}},e[15]=function(e,t,n){t.exports=function(e,t,n){function r(){var e=Array.prototype.slice.call(arguments),r={},o=1;return t.forEach(function(t){if("object"==typeof t)Object.keys(t).forEach(function(t){var n=e[o++];void 0!==n&&(r[t]=n)});else{var n=e[o++];void 0!==n&&(r[t]=n)}}),e[0]&&"object"==typeof e[0]&&Object.keys(e[0]).forEach(function(t){var n=e[0][t];void 0!==n&&(r[t]=n)}),new n(r)}return t=t?[].concat(t):[],t.unshift("$namedParameters"),this.register.factory(e,t,r)}},e[13]=function(e,t,n){var r=e(3).extractParameters,o=e(14),c=e(15);t.exports=function(e,t,n){function i(){var e=Array.prototype.slice.call(arguments);return e.unshift({}),o(n,e)}if("function"==typeof t&&(n=t,t=null),"function"!=typeof n)throw new Error("Service "+e+" - fn must be a [Function]");return n.extend&&n.register&&n.register.factory?c.call(this,e,t,n):(t=t?[].concat(t):r(n),this.register.factory(e,t,i))}},e[16]=function(e,t,n){t.exports=function(e,t){var n=this.$$factories[e];if(!n)throw new Error("Decorator could not be applied as factory "+e+" has not been registered");Object.hasOwnProperty.call(this.$$factories,e)||(n=Object.assign({},this.$$factories[e]),this.$$factories[e]=n),n.resolved&&(n.resolved=!1),this.$$resolved[e]&&delete this.$$resolved[e],n.decorators=(n.decorators||[]).concat(t)}},e[9]=function(e,t,n){var r=e(10),o=e(12),c=e(13),i=e(16);t.exports=function(e,t){var n=function(){return n.factory.apply(null,arguments)};n.constant=r.bind(e),n.factory=o.bind(e,t.defaultLifecycle),n.service=c.bind(e),n.decorator=i.bind(e),e.$trigger("factories",{Class:e,options:t,register:function(t,r){n[t]=r.bind(e)}}),Object.defineProperty(e,"register",{value:n})}},e[17]=function(e,t,n){var r=e(3);t.exports=function(e){e.register.factory("$resolve",[],function(){var e=this;return function(t,n){return Array.isArray(t)?r.resolveDependencies(e,{dependencies:t},n):r.resolve(e,t,n)}}).lifecycle.class()}},e[1]=function(e,t,n){function r(e){var t=this;e=o(t,e);var n=c(t,e);return l(t,n,e),p(n,e),t.$trigger&&t.$trigger("extend",{Class:n,options:e}),n}function o(e,t){var n={constructor:"function"==typeof t?t:null,invokeParent:!("function"==typeof t||t&&Object.hasOwnProperty.call(t,"constructor")&&t.constructor),prototype:null,static:null,config:null,dependencies:null,bindToInstance:!1,defaultLifecycle:u.INSTANCE},r=Object.assign(Object.create(e.$$config||null),t&&t.config);for(var o in r)n[o]=r[o];return t=Object.assign({},n,t),t.dependencies||"function"!=typeof t.constructor?t.dependencies&&(t.dependencies=[].concat(t.dependencies)):t.dependencies=f.extractParameters(t.constructor),t.dependencies&&!t.dependencies.length&&(t.dependencies=null),e.$trigger&&e.$trigger("options",{options:t,merge:function(){var e=Array.prototype.slice.call(arguments);e.unshift(t),Object.assign.apply(Object,e)}}),t}function c(e,t){var n=i(e,t);return n.prototype=a(e,n,t),Object.assign(n,e,t.static),n}function i(e,t){var n;return n=function(e){if(!(this instanceof n))return new n(e);try{var r=f.resolveDependencies(n,{dependencies:t.dependencies},e);this.constructor===n&&n.$trigger("beforeCreate",{Class:n,options:t,instance:this,args:r}),t.invokeParent&&"after"!==t.invokeParent&&n.$$invokeParent(this,r,e),t.bindToInstance&&s(this,n,r,e,t.bindToInstance),"function"==typeof t.constructor&&t.constructor.apply(this,r),"after"===t.invokeParent&&n.$$invokeParent(this,r,e),this.constructor===n&&n.$trigger("created",{Class:n,options:t,instance:this,args:r})}catch(t){t&&t.jpexInternalError&&(t.stack=new Error(t.message).stack);var o=f.resolve(n,"_$errorHandler_",e);if(!o)throw t;o(t)}}}function a(e,t,n){var r=Object.create(e.prototype);return n.prototype&&Object.assign(r,n.prototype),r.constructor=t,r}function s(e,t,n,r,o){var c=e;"string"==typeof o&&o.split(".").forEach(function(e){c[e]=c[e]||{},c=c[e]});var i=t.$$namedParameters(n,r);Object.assign(c,i)}var u=e(2),f=e(3),l=e(6),p=e(9),d=e(8);t.exports=function(){var t=function(){};t.extend=r,t.use=d.use;var n=t.extend();return e(17)(n),n}},e[0]=function(e,t,n){t.exports=e(1)()};var t=function(n){if(t.cache[n])return t.cache[n];var r={exports:{}},o=e[n];if(!o)throw new Error("Could not find module "+n);return o(t,r,r.exports),t.cache[n]=r.exports,r.exports};t.cache=[],"undefined"!=typeof module?module.exports=t(0):"undefined"!=typeof window&&(window.Jpex=t(0))}(); | ||
!function(){var e=[];e[2]=function(e,t,n){var r=Object.hasOwnProperty;t.exports=function(e,t){return r.call(e,t)}},e[3]=function(e,t,n){n.APPLICATION=1,n.CLASS=2,n.INSTANCE=3,n.NONE=4},e[6]=function(e,t,n){t.exports=function(e){var t=new Error(e);throw t.jpexInternalError=!0,t}},e[5]=function(e,t,n){function r(e){return e&&(e.fn&&"function"==typeof e.fn||e.constant||e.resolved)}var o=e(6),i=e(3);n.getFactory=function(e,t,n){var i;if(e.$trigger("getFactory",{Class:e,factoryName:t,set:function(e){i=e}}),!(r(i)||(i=e.$$resolved[t],r(i)||(i=e.$$factories[t],r(i)||(i=e.$$getFromNodeModules(t),r(i)))))){if(n)return;o(["Unable to find required dependency",t].join(" "))}return i},n.decorate=function(e,t,n){if(!n||!n.length)return t;for(var r=0,o=n.length;r<o;r++)t=n[r].call(e,t);return t},n.cacheResult=function(e,t,n,r,o){switch(n.lifecycle){case i.APPLICATION:n.resolved=!0,n.value=r;break;case i.CLASS:e.$$resolved[t]={resolved:!0,value:r};break;case i.NONE:break;case i.INSTANCE:default:o[t]=r}}},e[4]=function(e,t,n){function r(e,t,n,r,i){if(!t||!t.dependencies)return[];i||(i=[]),n||(n={});var c=[].concat(t.dependencies).map(function(t){return"object"==typeof t?Object.keys(t).map(function(r){return o(e,r,t[r],n,i)}):[o(e,t,r,n,i)]});return Array.prototype.concat.apply([],c)}function o(e,t,o,s,u){var f;switch(s||(s={}),t){case"$options":return o;case"$namedParameters":return s}var l=n.checkOptional(t);if(l&&(t=l,l=!0),i(s,t))return s[t];if(u.indexOf(t)>-1&&a(["Recursive loop for dependency",t,"encountered"].join(" ")),!(f=c.getFactory(e,t,l)))return f;if(f.resolved)return f.value;if(f.constant){var p=f.value;return p=c.decorate(e,p,f.decorators),c.cacheResult(e,t,f,p,s),p}var d;if(f.dependencies&&f.dependencies.length)try{d=r(e,f,s,o,u.concat(t))}catch(e){if(l)return;throw e}var v=f.fn.apply(e,d);return v=c.decorate(e,v,f.decorators),c.cacheResult(e,t,f,v,s),v}var i=e(2),c=e(5),a=e(6);n.extractParameters=function(e){var t=e.toString();t=t.replace(/\/\*(.*)\*\//g,"");var n=t.indexOf("("),r=t.indexOf(")"),o=t.indexOf("=>");return o>-1&&(o<n||n<0)?(t=t.substring(0,o).trim(),t?[t]:[]):(t=t.substring(n+1,r),t?t.split(",").map(function(e){return e.trim()}):[])},n.resolveDependencies=function(e,t,n){return r(e,t,n)},n.resolve=function(e,t,n){return o(e,t,null,n,[])},n.checkOptional=function(e){return"_"===e[0]&&"_"===e[e.length-1]&&e.substring(1,e.length-1)}},e[8]=function(e,t,n){var r;try{r=eval("process")}catch(e){}t.exports="object"==typeof r&&"[object process]"===r.toString()},e[9]=function(e,t,n){function r(e,t,n){var r=e.$$hooks;if(!r[t]){for(var i=0,c=e;c.$$parent&&c.$$parent.$$parent;)c=c.$$parent;c.$$hooks[t]=Object.create({push:function(e){this[i++]=e},trigger:function(n){n=Object.assign({Jpex:e,eventName:t},n),Array.prototype.slice.call(this).forEach(function(e){e&&e(n)})}},{length:{get:function(){return i}}})}o(r,t)||(r[t]=Object.create(e.$$parent.$$hooks[t]||null)),r[t].push(n)}var o=e(2);n.use=function(e,t){var n=this;if(!e||!e.install||"function"!=typeof e.install)throw new Error("Plugin does not have an install method");if(!e.name||"string"!=typeof e.name)throw new Error("Plugin must have a name property");if(this.$$using[e.name]&&!e.reuse)return void(e.silent||console.warn("Plugin "+e.name+" skipped as it has already been used"));this.$$using[e.name]=!0;var o={Jpex:n,on:function(e,t){r(n,e,t)},options:t};e.install(o)},n.trigger=function(e,t){var n=this.$$hooks[e];n&&n.trigger(t)}},e[7]=function(e,t,n){function r(e){if(s)try{var t=eval("require.main.require(name)");return this.register.constant(e,t),this.$$factories[e]}catch(e){if(!e||!e.message||"Cannot"!==e.message.substr(0,6))throw e}}function o(e,t,n){n&&"object"==typeof n||(n={});var r=0;return e&&t&&e.forEach(function(e){"object"==typeof e?Object.keys(e).forEach(function(e){void 0===n[e]&&void 0!==t[r]&&(n[e]=t[r]),r++}):(void 0===n[e]&&void 0!==t[r]&&(n[e]=t[r]),r++)}),n}function i(e,t,n){t&&!Array.isArray(t)&&(t=Array.prototype.slice.call(t)),n=this.$$namedParameters(t,n),this.$$parent.call(e,n)}function c(e,t){return Array.isArray(e)?l.resolveDependencies(this,{dependencies:e},t):l.resolve(this,e,t)}function a(e){e=e?[].concat(e):[];var t;for(t in this.$$factories)(!e.length||e.indexOf(t)>-1)&&(this.$$factories[t].resolved=!1);for(t in this.$$resolved)(!e.length||e.indexOf(t)>-1)&&delete this.$$resolved[t]}var s=e(8),u=e(2),f=e(9).trigger,l=e(4);t.exports=function(e,t,n){Object.defineProperties(t,{$trigger:{value:f},$resolve:{value:c},$clearCache:{value:a},$$getFromNodeModules:{value:r},$$namedParameters:{value:o.bind(null,n.dependencies)},$$invokeParent:{value:i},$$parent:{value:e},$$using:{value:Object.create(e.$$using||null)},$$factories:{value:Object.create(e.$$factories||null)},$$resolved:{value:Object.create(e.$$interfaces||null)},$$config:{value:Object.assign(Object.create(e.$$config||null),n.config)},$$hooks:{value:Object.create(e.$$hooks||null)}}),t.$trigger("privateProperties",{Class:t,options:n,apply:function(e){var n={};Object.keys(e).forEach(function(t){var r={configurable:!0,enumerable:!1},o=e[t];o&&o.get&&"function"==typeof o.get&&(r.get=o.get),o&&o.set&&"function"==typeof o.set&&(r.set=o.set),o&&u(o,"value")&&(o=o.value),r.get||r.set||(r.value=o),n[t]=r}),Object.defineProperties(t,n)}})}},e[12]=function(e,t,n){var r=e(3);t.exports=function(e){var t={lifecycle:{application:function(){return e.lifecycle=r.APPLICATION,t},class:function(){return e.lifecycle=r.CLASS,t},instance:function(){return e.lifecycle=r.INSTANCE,t},none:function(){return e.lifecycle=r.NONE,t}}};return t}},e[11]=function(e,t,n){var r=e(12);t.exports=function(e,t){var n={value:t,constant:!0};return this.$$factories[e]=n,r(n).lifecycle.application()}},e[13]=function(e,t,n){var r=e(4).extractParameters,o=e(12);t.exports=function(e,t,n,i){if("function"==typeof n&&(i=n,n=null),"function"!=typeof i)throw new Error("Factory "+t+" - fn must be a [Function]");n=n?[].concat(n):r(i),n.length||(n=null);var c={fn:i,dependencies:n,lifecycle:e};return this.$$factories[t]=c,o(c)}},e[15]=function(e,t,n){t.exports=function(e,t){return new(Function.prototype.bind.apply(e,t))}},e[16]=function(e,t,n){var r=e(4).checkOptional;t.exports=function(e,t,n){function o(){var e=Array.prototype.slice.call(arguments),o={},i=1;return t.slice(1).forEach(function(t){if("object"==typeof t)Object.keys(t).forEach(function(t){var n=e[i++];void 0!==n&&(t=r(t)||t,o[t]=n)});else{var n=e[i++];void 0!==n&&(t=r(t)||t,o[t]=n)}}),e[0]&&"object"==typeof e[0]&&Object.keys(e[0]).forEach(function(t){var n=e[0][t];void 0!==n&&(o[t]=n)}),new n(o)}return t=t?[].concat(t):[],t.unshift("$namedParameters"),this.register.factory(e,t,o)}},e[14]=function(e,t,n){var r=e(4).extractParameters,o=e(15),i=e(16);t.exports=function(e,t,n){function c(){var e=Array.prototype.slice.call(arguments);return e.unshift({}),o(n,e)}if("function"==typeof t&&(n=t,t=null),"function"!=typeof n)throw new Error("Service "+e+" - fn must be a [Function]");return n.extend&&n.register&&n.register.factory?i.call(this,e,t,n):(t=t?[].concat(t):r(n),this.register.factory(e,t,c))}},e[17]=function(e,t,n){var r=e(2);t.exports=function(e,t){var n=this.$$factories[e];if(!n)throw new Error("Decorator could not be applied as factory "+e+" has not been registered");r(this.$$factories,e)||(n=Object.assign({},this.$$factories[e]),this.$$factories[e]=n),n.resolved&&(n.resolved=!1),this.$$resolved[e]&&delete this.$$resolved[e],n.decorators=(n.decorators||[]).concat(t)}},e[10]=function(e,t,n){var r=e(11),o=e(13),i=e(14),c=e(17);t.exports=function(e,t){var n=function(){return n.factory.apply(null,arguments)};n.constant=r.bind(e),n.factory=o.bind(e,t.defaultLifecycle),n.service=i.bind(e),n.decorator=c.bind(e),e.$trigger("factories",{Class:e,options:t,register:function(t,r){n[t]=r.bind(e)}}),Object.defineProperty(e,"register",{value:n})}},e[18]=function(e,t,n){var r=e(4);t.exports=function(e){e.register.factory("$resolve",[],function(){var e=this;return function(t,n){return Array.isArray(t)?r.resolveDependencies(e,{dependencies:t},n):r.resolve(e,t,n)}}).lifecycle.class()}},e[1]=function(e,t,n){function r(e){var t=this;e=o(t,e);var n=i(t,e);return d(t,n,e),v(n,e),t.$trigger&&t.$trigger("extend",{Class:n,options:e}),n}function o(e,t){var n={constructor:"function"==typeof t?t:null,invokeParent:!("function"==typeof t||t&&f(t,"constructor")&&t.constructor),methods:null,properties:null,static:null,config:null,dependencies:null,bindToInstance:!1,defaultLifecycle:l.INSTANCE},r=Object.assign(Object.create(e.$$config||null),t&&t.config);for(var o in r)n[o]=r[o];return t=Object.assign({},n,t),t.dependencies||"function"!=typeof t.constructor?t.dependencies&&(t.dependencies=[].concat(t.dependencies)):t.dependencies=p.extractParameters(t.constructor),t.dependencies&&!t.dependencies.length&&(t.dependencies=null),t.properties&&(t.properties=[].concat(t.properties)),e.$trigger&&e.$trigger("options",{options:t,merge:function(){var e=Array.prototype.slice.call(arguments);e.unshift(t),Object.assign.apply(Object,e)}}),t}function i(e,t){var n=c(e,t);return n.prototype=a(e,n,t),Object.assign(n,e,t.static),n}function c(e,t){var n;return n=function(e){if(!(this instanceof n))return new n(e);try{var r=p.resolveDependencies(n,{dependencies:t.dependencies},e);if(this.constructor===n&&n.$trigger("beforeCreate",{Class:n,options:t,instance:this,args:r}),t.invokeParent&&"after"!==t.invokeParent&&n.$$invokeParent(this,r,e),t.bindToInstance&&u(this,n,r,e,t.bindToInstance),t.properties){var o=s(t.properties);Object.defineProperties(this,o)}"function"==typeof t.constructor&&t.constructor.apply(this,r),"after"===t.invokeParent&&n.$$invokeParent(this,r,e),this.constructor===n&&n.$trigger("created",{Class:n,options:t,instance:this,args:r})}catch(t){t&&t.jpexInternalError&&(t.stack=new Error(t.message).stack);var i=p.resolve(n,"_$errorHandler_",e);if(!i)throw t;i(t)}}}function a(e,t,n){var r=Object.create(e.prototype);return n.methods&&Object.assign(r,n.methods),r.constructor=t,r}function s(e){var t={};return e.forEach(function(e){"string"==typeof e?t[e]={configurable:!0,enumerable:!0,writable:!0,value:void 0}:Object.keys(e).forEach(function(n){var r=e[n],o={};switch(typeof r){case"object":break;case"function":r={watch:r};break;default:r={value:r}}var i=f(r,"value"),c=f(r,"get")&&"function"==typeof r.get,a=f(r,"set")&&"function"==typeof r.set,s=f(r,"watch")&&"function"==typeof r.watch,u=f(r,"default")&&"function"==typeof r.default;if(i||u||c||a||s){var l=i?r.value:u?r.default():void 0;o.get=function(){return c?r.get.call(this,l):l},f(r,"writable")&&!r.writable||(o.set=function(e){var t=a?r.set.call(this,e,l):e;s&&t!==l&&r.watch.call(this,t,l),l=t}),o.configurable=!f(r,"configurable")||r.configurable,o.enumerable=!f(r,"enumerable")||r.enumerable}else o.configurable=!0,o.enumerable=!0,o.writable=!0,o.value=r;t[n]=o})}),t}function u(e,t,n,r,o){var i=e;"string"==typeof o&&o.split(".").forEach(function(e){i[e]=i[e]||{},i=i[e]});var c=t.$$namedParameters(n,r);Object.assign(i,c)}var f=e(2),l=e(3),p=e(4),d=e(7),v=e(10),h=e(9);t.exports=function(){var t=function(){};t.extend=r,t.use=h.use;var n=t.extend();return e(18)(n),n}},e[0]=function(e,t,n){t.exports=e(1)()};var t=function(n){if(t.cache[n])return t.cache[n];var r={exports:{}},o=e[n];if(!o)throw new Error("Could not find module "+n);return o(t,r,r.exports),t.cache[n]=r.exports,r.exports};t.cache=[],"undefined"!=typeof module?module.exports=t(0):"undefined"!=typeof window&&(window.Jpex=t(0))}(); |
@@ -6,2 +6,6 @@ config | ||
prototype configuration option has been replaced with methods | ||
properties configuration option allows you to predefine instance properties, getters, setters, and watchers. | ||
bindToInstance | ||
@@ -8,0 +12,0 @@ can accept deeply nested value i.e. x.y.z will bind dependencies to instance.x.y.z |
{ | ||
"name": "jpex", | ||
"version": "2.0.0-alpha.1", | ||
"version": "2.0.0-alpha.2", | ||
"description": "Javascript Prototype Extension", | ||
@@ -5,0 +5,0 @@ "main": "src/index.js", |
@@ -0,1 +1,2 @@ | ||
var hasOwn = require('../hasOwn'); | ||
var constants = require('../constants'); | ||
@@ -45,4 +46,5 @@ var resolver = require('../resolver'); | ||
constructor : (typeof options === 'function') ? options : null, | ||
invokeParent : !(typeof options === 'function' || options && Object.hasOwnProperty.call(options, 'constructor') && options.constructor), | ||
prototype : null, | ||
invokeParent : !(typeof options === 'function' || options && hasOwn(options, 'constructor') && options.constructor), | ||
methods : null, | ||
properties : null, | ||
static : null, | ||
@@ -76,2 +78,7 @@ config : null, | ||
// Set properties | ||
if (options.properties){ | ||
options.properties = [].concat(options.properties); | ||
} | ||
// MERGE OPTIONS HOOK | ||
@@ -135,2 +142,8 @@ if (Parent.$trigger){ | ||
// Properties | ||
if (options.properties){ | ||
var properties = createProperties(options.properties); | ||
Object.defineProperties(this, properties); | ||
} | ||
// Invoke constructor | ||
@@ -177,4 +190,4 @@ if (typeof options.constructor === 'function'){ | ||
// Add new prototype methods | ||
if (options.prototype){ | ||
Object.assign(prototype, options.prototype); | ||
if (options.methods){ | ||
Object.assign(prototype, options.methods); | ||
} | ||
@@ -188,2 +201,67 @@ | ||
function createProperties(options) { | ||
var properties = {}; | ||
options.forEach(function (option) { | ||
if (typeof option === 'string'){ | ||
properties[option] = { | ||
configurable : true, | ||
enumerable : true, | ||
writable : true, | ||
value : undefined | ||
}; | ||
}else{ | ||
Object.keys(option).forEach(function (key) { | ||
var def = option[key]; | ||
var property = {}; | ||
switch (typeof def){ | ||
case 'object': | ||
break; | ||
case 'function': | ||
def = { watch : def }; | ||
break; | ||
default: | ||
def = { value : def }; | ||
break; | ||
} | ||
var hasValue = hasOwn(def, 'value'), | ||
hasGet = hasOwn(def, 'get') && typeof def.get === 'function', | ||
hasSet = hasOwn(def, 'set') && typeof def.set === 'function', | ||
hasWatch = hasOwn(def, 'watch') && typeof def.watch === 'function', | ||
hasDefault = hasOwn(def, 'default') && typeof def.default === 'function'; | ||
if (hasValue || hasDefault || hasGet || hasSet || hasWatch){ | ||
var value = hasValue ? def.value : (hasDefault ? def.default() : undefined); | ||
property.get = function () { | ||
return hasGet ? def.get.call(this, value) : value; | ||
}; | ||
if (!hasOwn(def, 'writable') || def.writable){ | ||
property.set = function (v) { | ||
var newValue = hasSet ? def.set.call(this, v, value) : v; | ||
if (hasWatch && newValue !== value){ | ||
def.watch.call(this, newValue, value); | ||
} | ||
value = newValue; | ||
}; | ||
} | ||
property.configurable = hasOwn(def, 'configurable') ? def.configurable : true; | ||
property.enumerable = hasOwn(def, 'enumerable') ? def.enumerable : true; | ||
}else{ | ||
property.configurable = true; | ||
property.enumerable = true; | ||
property.writable = true; | ||
property.value = def; | ||
} | ||
properties[key] = property; | ||
}); | ||
} | ||
}); | ||
return properties; | ||
} | ||
function bindToInstance(instance, Class, args, namedParameters, option) { | ||
@@ -190,0 +268,0 @@ var bindTo = instance; |
var isNode = require('../isNode'); | ||
var hasOwn = require('../hasOwn'); | ||
var triggerHook = require('../plugins').trigger; | ||
@@ -136,3 +137,3 @@ var resolver = require('../resolver'); | ||
} | ||
if (def && Object.hasOwnProperty.call(def, 'value')){ | ||
if (def && hasOwn(def, 'value')){ | ||
def = def.value; | ||
@@ -139,0 +140,0 @@ } |
@@ -0,1 +1,3 @@ | ||
var hasOwn = require('../hasOwn'); | ||
module.exports = function (name, fn) { | ||
@@ -8,3 +10,3 @@ var factory = this.$$factories[name]; | ||
// so copy the factory onto the current class... | ||
if (!Object.hasOwnProperty.call(this.$$factories, name)){ | ||
if (!hasOwn(this.$$factories, name)){ | ||
factory = Object.assign({}, this.$$factories[name]); | ||
@@ -11,0 +13,0 @@ this.$$factories[name] = factory; |
@@ -0,1 +1,3 @@ | ||
var checkOptional = require('../resolver').checkOptional; | ||
// Jpex As A Service | ||
@@ -13,7 +15,9 @@ module.exports = function (name, dependencies, Fn) { | ||
var i = 1; | ||
dependencies.forEach(function (key) { | ||
dependencies.slice(1).forEach(function (key) { | ||
if (typeof key === 'object'){ | ||
Object.keys(key).forEach(function (key2) { | ||
var val = args[i++]; | ||
if (val !== undefined){ | ||
key2 = checkOptional(key2) || key2; | ||
params[key2] = val; | ||
@@ -25,2 +29,3 @@ } | ||
if (val !== undefined){ | ||
key = checkOptional(key) || key; | ||
params[key] = val; | ||
@@ -27,0 +32,0 @@ } |
@@ -0,1 +1,3 @@ | ||
var hasOwn = require('../hasOwn'); | ||
exports.use = function (plugin, config) { | ||
@@ -69,3 +71,3 @@ var Jpex = this; | ||
} | ||
if (!Object.hasOwnProperty.call(hooks, name)){ | ||
if (!hasOwn(hooks, name)){ | ||
hooks[name] = Object.create(Class.$$parent.$$hooks[name] || null); | ||
@@ -72,0 +74,0 @@ } |
@@ -0,1 +1,2 @@ | ||
var hasOwn = require('../hasOwn'); | ||
var factoryService = require('./factories'); | ||
@@ -82,3 +83,3 @@ var jpexError = require('../jpexError'); | ||
// Optional dependency | ||
var optional = checkOptional(name); | ||
var optional = exports.checkOptional(name); | ||
if (optional){ | ||
@@ -90,3 +91,3 @@ name = optional; | ||
// Check named Parameters | ||
if (Object.hasOwnProperty.call(namedParameters, name)){ | ||
if (hasOwn(namedParameters, name)){ | ||
return namedParameters[name]; | ||
@@ -149,13 +150,8 @@ } | ||
function checkOptional(name) { | ||
if (name[0] === '_'){ | ||
var arr = name.split('_'); | ||
if (arr[arr.length-1] === ''){ | ||
arr.shift(); | ||
arr.pop(); | ||
name = arr.join('_'); | ||
return name; | ||
} | ||
exports.checkOptional = function (name) { | ||
if (name[0] === '_' && name[name.length-1] === '_'){ | ||
return name.substring(1, name.length-1); | ||
}else{ | ||
return false; | ||
} | ||
return false; | ||
} | ||
}; |
Major refactor
Supply chain riskPackage has recently undergone a major refactor. It may be unstable or indicate significant internal changes. Use caution when updating to versions that include significant changes.
Found 1 instance in 1 package
68269
25
1729
3