diff --git a/README.md b/README.md index 4447ece..fde6589 100644 --- a/README.md +++ b/README.md @@ -420,22 +420,15 @@ Param | Type | Details Used to register a service factory function. Works exactly like `factory` except the factory arguments will be injected instead of receiving the `container`. This is useful when implementing the Module Pattern or adding dependencies to your Higher Order Functions. ```js -function createApiActions(axios) { +function packageKeg(Barrel, Beer, Love) { + Barrel.add(Beer, Love); return { - createUser: function(user) { - return axios.post('/users', user); + tap : function() { + return Barrel.dispense(); } }; } - -var bottle = new Bottle(); - -bottle.serviceFactory('api', createApiActions, 'axios'); -bottle.factory('axios', function() { - return axios.create({baseURL: 'http://api.mydomain'}); -}); - -bottle.container.api.createUser({name: "BottleJS"}); +bottle.serviceFactory('Keg', packageKeg, 'Barrel', 'Beer', 'Love'); ``` If `Bottle.config.strict` is set to `true`, this method will throw an error if an injected dependency is `undefined`. @@ -444,7 +437,7 @@ Param | Type | Details :--------------------------------|:-----------|:-------- **name** | *String* | The name of the service. Must be unique to each Bottle instance. **serviceFactory** | *Function* | A function that will be invoked to create the service object/value. -**dependency**
*(optional)* | *String* | An optional name for a dependency to be passed to the service function. A dependency will be passed to the service function for each name passed to `Bottle#serviceFn` in the order they are listed. +**dependency**
*(optional)* | *String* | An optional name for a dependency to be passed to the service function. A dependency will be passed to the service function for each name passed to `Bottle#serviceFactory` in the order they are listed. #### value(name, val) diff --git a/bower.json b/bower.json index b6b754e..15b7edb 100644 --- a/bower.json +++ b/bower.json @@ -1,6 +1,6 @@ { "name": "bottlejs", - "version": "1.6.3", + "version": "1.7.0", "description": "A powerful dependency injection micro container", "main": "dist/bottle.min.js", "license": "MIT", diff --git a/dist/bottle.js b/dist/bottle.js index 39ffd14..fb5e8e9 100644 --- a/dist/bottle.js +++ b/dist/bottle.js @@ -1,12 +1,20 @@ ;(function(undefined) { 'use strict'; /** - * BottleJS v1.6.3 - 2017-12-06 + * BottleJS v1.7.0 - 2018-01-29 * A powerful dependency injection micro container * - * Copyright (c) 2017 Stephen Young + * Copyright (c) 2018 Stephen Young * Licensed MIT */ + /** + * String constants + */ + var DELIMITER = '.'; + var FUNCTION_TYPE = 'function'; + var STRING_TYPE = 'string'; + var GLOBAL_NAME = '__global__'; + var PROVIDER_SUFFIX = 'Provider'; /** * Unique id counter; @@ -66,7 +74,7 @@ * @return Service */ var getNestedService = function getNestedService(fullname) { - return fullname.split('.').reduce(getNested, this); + return fullname.split(DELIMITER).reduce(getNested, this); }; /** @@ -77,7 +85,7 @@ * @return Bottle */ var constant = function constant(name, value) { - var parts = name.split('.'); + var parts = name.split(DELIMITER); name = parts.pop(); defineConstant.call(parts.reduce(setValueObject, this.container), name, value); return this; @@ -101,15 +109,15 @@ */ var decorator = function decorator(fullname, func) { var parts, name; - if (typeof fullname === 'function') { + if (typeof fullname === FUNCTION_TYPE) { func = fullname; - fullname = '__global__'; + fullname = GLOBAL_NAME; } - parts = fullname.split('.'); + parts = fullname.split(DELIMITER); name = parts.shift(); if (parts.length) { - getNestedBottle.call(this, name).decorator(parts.join('.'), func); + getNestedBottle.call(this, name).decorator(parts.join(DELIMITER), func); } else { if (!this.decorators[name]) { this.decorators[name] = []; @@ -234,15 +242,15 @@ */ var middleware = function middleware(fullname, func) { var parts, name; - if (typeof fullname === 'function') { + if (typeof fullname === FUNCTION_TYPE) { func = fullname; - fullname = '__global__'; + fullname = GLOBAL_NAME; } - parts = fullname.split('.'); + parts = fullname.split(DELIMITER); name = parts.shift(); if (parts.length) { - getNestedBottle.call(this, name).middleware(parts.join('.'), func); + getNestedBottle.call(this, name).middleware(parts.join(DELIMITER), func); } else { if (!this.middlewares[name]) { this.middlewares[name] = []; @@ -270,7 +278,7 @@ */ var pop = function pop(name) { var instance; - if (typeof name === 'string') { + if (typeof name === STRING_TYPE) { instance = bottles[name]; if (!instance) { bottles[name] = instance = new Bottle(); @@ -285,7 +293,7 @@ * Clear all named bottles. */ var clear = function clear(name) { - if (typeof name === 'string') { + if (typeof name === STRING_TYPE) { delete bottles[name]; } else { bottles = {}; @@ -312,8 +320,8 @@ */ var provider = function provider(fullname, Provider) { var parts, name; - parts = fullname.split('.'); - if (this.providerMap[fullname] && parts.length === 1 && !this.container[fullname + 'Provider']) { + parts = fullname.split(DELIMITER); + if (this.providerMap[fullname] && parts.length === 1 && !this.container[fullname + PROVIDER_SUFFIX]) { return console.error(fullname + ' provider already instantiated.'); } this.originalProviders[fullname] = Provider; @@ -322,7 +330,7 @@ name = parts.shift(); if (parts.length) { - getNestedBottle.call(this, name).provider(parts.join('.'), Provider); + getNestedBottle.call(this, name).provider(parts.join(DELIMITER), Provider); return this; } return createProvider.call(this, name, Provider); @@ -351,7 +359,7 @@ container = this.container; decorators = this.decorators; middlewares = this.middlewares; - providerName = name + 'Provider'; + providerName = name + PROVIDER_SUFFIX; properties = Object.create(null); properties[providerName] = { @@ -416,7 +424,7 @@ var removeProviderMap = function resetProvider(name) { delete this.providerMap[name]; delete this.container[name]; - delete this.container[name + 'Provider']; + delete this.container[name + PROVIDER_SUFFIX]; }; /** @@ -427,7 +435,7 @@ var resetProviders = function resetProviders() { var providers = this.originalProviders; Object.keys(this.originalProviders).forEach(function resetPrvider(provider) { - var parts = provider.split('.'); + var parts = provider.split(DELIMITER); if (parts.length > 1) { parts.forEach(removeProviderMap, getNestedBottle.call(this, parts[0])); } @@ -452,23 +460,41 @@ }; /** - * Register a service inside a generic factory. + * Register a function service + */ + var serviceFactory = function serviceFactory(name, factoryService) { + return createService.apply(this, [name, factoryService, false].concat(slice.call(arguments, 2))); + }; + + /** + * Register a class service * * @param String name * @param Function Service * @return Bottle */ var service = function service(name, Service) { - var deps = arguments.length > 2 ? slice.call(arguments, 2) : null; + return createService.apply(this, [name, Service, true].concat(slice.call(arguments, 2))); + }; + + /** + * Private helper for creating service and service factories. + * + * @param String name + * @param Function Service + * @return Bottle + */ + var createService = function createService(name, Service, isClass) { + var deps = arguments.length > 3 ? slice.call(arguments, 3) : []; var bottle = this; return factory.call(this, name, function GenericFactory() { - var ServiceCopy = Service; - if (deps) { - var args = deps.map(getNestedService, bottle.container); - args.unshift(Service); - ServiceCopy = Service.bind.apply(Service, args); + var serviceFactory = Service; // alias for jshint + var args = deps.map(getNestedService, bottle.container); + + if (!isClass) { + return serviceFactory.apply(null, args); } - return new ServiceCopy(); + return new (Service.bind.apply(Service, [null].concat(args)))(); }); }; @@ -481,7 +507,7 @@ */ var value = function value(name, val) { var parts; - parts = name.split('.'); + parts = name.split(DELIMITER); name = parts.pop(); defineValue.call(parts.reduce(setValueObject, this.container), name, val); return this; @@ -562,6 +588,7 @@ register : register, resolve : resolve, service : service, + serviceFactory : serviceFactory, value : value }; @@ -631,7 +658,7 @@ /** * Export */ - if (typeof define === 'function' && typeof define.amd === 'object' && define.amd) { + if (typeof define === FUNCTION_TYPE && typeof define.amd === 'object' && define.amd) { root.Bottle = Bottle; define(function() { return Bottle; }); } else if (freeExports && freeModule) { diff --git a/dist/bottle.min.js b/dist/bottle.min.js index 8e36ce9..84b8959 100644 --- a/dist/bottle.min.js +++ b/dist/bottle.min.js @@ -1,10 +1,10 @@ /** - * BottleJS v1.6.3 - 2017-12-06 + * BottleJS v1.7.0 - 2018-01-29 * A powerful dependency injection micro container * - * Copyright (c) 2017 Stephen Young + * Copyright (c) 2018 Stephen Young * Licensed MIT */ -(function(a){"use strict";var b=0,c=Array.prototype.slice,d=function(b,c){var d=b[c];if(d===a&&H.strict)throw new Error("Bottle was unable to resolve a service. `"+c+"` is undefined.");return d},e=function(a){var b;return this.nested[a]||(b=G.pop(),this.nested[a]=b,this.factory(a,function(){return b.container})),this.nested[a]},f=function(a){return a.split(".").reduce(d,this)},g=function(a,b){var c=a.split(".");return a=c.pop(),h.call(c.reduce(E,this.container),a,b),this},h=function(a,b){Object.defineProperty(this,a,{configurable:!1,enumerable:!0,value:b,writable:!1})},i=function(a,b){var c,d;return"function"==typeof a&&(b=a,a="__global__"),c=a.split("."),d=c.shift(),c.length?e.call(this,d).decorator(c.join("."),b):(this.decorators[d]||(this.decorators[d]=[]),this.decorators[d].push(b)),this},j=function(a){return this.deferred.push(a),this},k=function(a){return(a||[]).map(f,this.container)},l=function(a,b){return v.call(this,a,function(){this.$get=b})},m=function(a,b){return l.call(this,a,function(a){return{instance:b.bind(b,a)}})},n=function(a){return!/^\$(?:decorator|register|list)$|Provider$/.test(a)},o=function(a){return Object.keys(a||this.container||{}).filter(n)},p=function(a,b,c,d){var e={configurable:!0,enumerable:!0};return a.length?e.get=function(){var b=0,d=function(e){if(e)throw e;a[b]&&a[b++](c,d)};return d(),c}:(e.value=c,e.writable=!0),Object.defineProperty(d,b,e),d[b]},q=function(a,b){var c,d;return"function"==typeof a&&(b=a,a="__global__"),c=a.split("."),d=c.shift(),c.length?e.call(this,d).middleware(c.join("."),b):(this.middlewares[d]||(this.middlewares[d]=[]),this.middlewares[d].push(b)),this},r={},s=function(a){var b;return"string"==typeof a?(b=r[a],b||(r[a]=b=new G,b.constant("BOTTLE_NAME",a)),b):new G},t=function(a){"string"==typeof a?delete r[a]:r={}},u=function(a,b){return b(a)},v=function(a,b){var c,d;if(c=a.split("."),!this.providerMap[a]||1!==c.length||this.container[a+"Provider"])return this.originalProviders[a]=b,this.providerMap[a]=!0,d=c.shift(),c.length?(e.call(this,d).provider(c.join("."),b),this):x.call(this,d,b)},w=function(a,b){return(a[b]||[]).concat(a.__global__||[])},x=function(b,c){var d,e,f,g,h;return this.id,f=this.container,g=this.decorators,h=this.middlewares,d=b+"Provider",e=Object.create(null),e[d]={configurable:!0,enumerable:!0,get:function(){var a=new c;return delete f[d],f[d]=a,a}},e[b]={configurable:!0,enumerable:!0,get:function(){var c,e=f[d];return e&&(c=w(g,b).reduce(u,e.$get(f)),delete f[d],delete f[b]),c===a?c:p(w(h,b),b,c,f)}},Object.defineProperties(f,e),this},y=function(b){var c=b.$value===a?b:b.$value;return this[b.$type||"service"].apply(this,[b.$name,c].concat(b.$inject||[]))},z=function(a){delete this.providerMap[a],delete this.container[a],delete this.container[a+"Provider"]},A=function(){var a=this.originalProviders;Object.keys(this.originalProviders).forEach(function(b){var c=b.split(".");c.length>1&&c.forEach(z,e.call(this,c[0])),z.call(this,b),this.provider(b,a[b])},this)},B=function(a){return this.deferred.forEach(function(b){b(a)}),this},C=function(a,b){var d=arguments.length>2?c.call(arguments,2):null,e=this;return l.call(this,a,function(){var a=b;if(d){var c=d.map(f,e.container);c.unshift(b),a=b.bind.apply(b,c)}return new a})},D=function(a,b){var c;return c=a.split("."),a=c.pop(),F.call(c.reduce(E,this.container),a,b),this},E=function(a,b){var c=a[b];return c||(c={},F.call(a,b,c)),c},F=function(a,b){Object.defineProperty(this,a,{configurable:!0,enumerable:!0,value:b,writable:!0})},G=function a(c){if(!(this instanceof a))return a.pop(c);this.id=b++,this.decorators={},this.middlewares={},this.nested={},this.providerMap={},this.originalProviders={},this.deferred=[],this.container={$decorator:i.bind(this),$register:y.bind(this),$list:o.bind(this)}};G.prototype={constant:g,decorator:i,defer:j,digest:k,factory:l,instanceFactory:m,list:o,middleware:q,provider:v,resetProviders:A,register:y,resolve:B,service:C,value:D},G.pop=s,G.clear=t,G.list=o;var H=G.config={strict:!1},I={function:!0,object:!0};!function(a){var b=I[typeof exports]&&exports&&!exports.nodeType&&exports,c=I[typeof module]&&module&&!module.nodeType&&module,d=c&&c.exports===b&&b,e=I[typeof global]&&global;!e||e.global!==e&&e.window!==e||(a=e),"function"==typeof define&&"object"==typeof define.amd&&define.amd?(a.Bottle=G,define(function(){return G})):b&&c?d?(c.exports=G).Bottle=G:b.Bottle=G:a.Bottle=G}(I[typeof window]&&window||this)}).call(this); +(function(a){"use strict";var b=".",c="function",d="string",e="__global__",f="Provider",g=0,h=Array.prototype.slice,i=function(b,c){var d=b[c];if(d===a&&O.strict)throw new Error("Bottle was unable to resolve a service. `"+c+"` is undefined.");return d},j=function(a){var b;return this.nested[a]||(b=N.pop(),this.nested[a]=b,this.factory(a,function(){return b.container})),this.nested[a]},k=function(a){return a.split(b).reduce(i,this)},l=function(a,c){var d=a.split(b);return a=d.pop(),m.call(d.reduce(L,this.container),a,c),this},m=function(a,b){Object.defineProperty(this,a,{configurable:!1,enumerable:!0,value:b,writable:!1})},n=function(a,d){var f,g;return typeof a===c&&(d=a,a=e),f=a.split(b),g=f.shift(),f.length?j.call(this,g).decorator(f.join(b),d):(this.decorators[g]||(this.decorators[g]=[]),this.decorators[g].push(d)),this},o=function(a){return this.deferred.push(a),this},p=function(a){return(a||[]).map(k,this.container)},q=function(a,b){return A.call(this,a,function(){this.$get=b})},r=function(a,b){return q.call(this,a,function(a){return{instance:b.bind(b,a)}})},s=function(a){return!/^\$(?:decorator|register|list)$|Provider$/.test(a)},t=function(a){return Object.keys(a||this.container||{}).filter(s)},u=function(a,b,c,d){var e={configurable:!0,enumerable:!0};return a.length?e.get=function(){var b=0,d=function(e){if(e)throw e;a[b]&&a[b++](c,d)};return d(),c}:(e.value=c,e.writable=!0),Object.defineProperty(d,b,e),d[b]},v=function(a,d){var f,g;return typeof a===c&&(d=a,a=e),f=a.split(b),g=f.shift(),f.length?j.call(this,g).middleware(f.join(b),d):(this.middlewares[g]||(this.middlewares[g]=[]),this.middlewares[g].push(d)),this},w={},x=function(a){var b;return typeof a===d?(b=w[a],b||(w[a]=b=new N,b.constant("BOTTLE_NAME",a)),b):new N},y=function(a){typeof a===d?delete w[a]:w={}},z=function(a,b){return b(a)},A=function(a,c){var d,e;if(d=a.split(b),!this.providerMap[a]||1!==d.length||this.container[a+f])return this.originalProviders[a]=c,this.providerMap[a]=!0,e=d.shift(),d.length?(j.call(this,e).provider(d.join(b),c),this):C.call(this,e,c)},B=function(a,b){return(a[b]||[]).concat(a.__global__||[])},C=function(b,c){var d,e,g,h,i;return this.id,g=this.container,h=this.decorators,i=this.middlewares,d=b+f,e=Object.create(null),e[d]={configurable:!0,enumerable:!0,get:function(){var a=new c;return delete g[d],g[d]=a,a}},e[b]={configurable:!0,enumerable:!0,get:function(){var c,e=g[d];return e&&(c=B(h,b).reduce(z,e.$get(g)),delete g[d],delete g[b]),c===a?c:u(B(i,b),b,c,g)}},Object.defineProperties(g,e),this},D=function(b){var c=b.$value===a?b:b.$value;return this[b.$type||"service"].apply(this,[b.$name,c].concat(b.$inject||[]))},E=function(a){delete this.providerMap[a],delete this.container[a],delete this.container[a+f]},F=function(){var a=this.originalProviders;Object.keys(this.originalProviders).forEach(function(c){var d=c.split(b);d.length>1&&d.forEach(E,j.call(this,d[0])),E.call(this,c),this.provider(c,a[c])},this)},G=function(a){return this.deferred.forEach(function(b){b(a)}),this},H=function(a,b){return J.apply(this,[a,b,!1].concat(h.call(arguments,2)))},I=function(a,b){return J.apply(this,[a,b,!0].concat(h.call(arguments,2)))},J=function(a,b,c){var d=arguments.length>3?h.call(arguments,3):[],e=this;return q.call(this,a,function(){var a=b,f=d.map(k,e.container);return c?new(b.bind.apply(b,[null].concat(f))):a.apply(null,f)})},K=function(a,c){var d;return d=a.split(b),a=d.pop(),M.call(d.reduce(L,this.container),a,c),this},L=function(a,b){var c=a[b];return c||(c={},M.call(a,b,c)),c},M=function(a,b){Object.defineProperty(this,a,{configurable:!0,enumerable:!0,value:b,writable:!0})},N=function a(b){if(!(this instanceof a))return a.pop(b);this.id=g++,this.decorators={},this.middlewares={},this.nested={},this.providerMap={},this.originalProviders={},this.deferred=[],this.container={$decorator:n.bind(this),$register:D.bind(this),$list:t.bind(this)}};N.prototype={constant:l,decorator:n,defer:o,digest:p,factory:q,instanceFactory:r,list:t,middleware:v,provider:A,resetProviders:F,register:D,resolve:G,service:I,serviceFactory:H,value:K},N.pop=x,N.clear=y,N.list=t;var O=N.config={strict:!1},P={function:!0,object:!0};!function(a){var b=P[typeof exports]&&exports&&!exports.nodeType&&exports,d=P[typeof module]&&module&&!module.nodeType&&module,e=d&&d.exports===b&&b,f=P[typeof global]&&global;!f||f.global!==f&&f.window!==f||(a=f),typeof define===c&&"object"==typeof define.amd&&define.amd?(a.Bottle=N,define(function(){return N})):b&&d?e?(d.exports=N).Bottle=N:b.Bottle=N:a.Bottle=N}(P[typeof window]&&window||this)}).call(this); //# sourceMappingURL=bottle.min.js.map \ No newline at end of file diff --git a/dist/bottle.min.js.map b/dist/bottle.min.js.map index 86a5fbf..5035047 100644 --- a/dist/bottle.min.js.map +++ b/dist/bottle.min.js.map @@ -1 +1 @@ -{"version":3,"sources":["bottle.js"],"names":["undefined","id","slice","Array","prototype","getNested","obj","prop","service","globalConfig","strict","Error","getNestedBottle","name","bottle","this","nested","Bottle","pop","factory","container","getNestedService","fullname","split","reduce","constant","value","parts","defineConstant","call","setValueObject","Object","defineProperty","configurable","enumerable","writable","decorator","func","shift","length","join","decorators","push","defer","deferred","digest","services","map","Factory","provider","$get","instanceFactory","instance","bind","byMethod","test","list","keys","filter","applyMiddleware","middleware","descriptor","get","index","next","err","middlewares","bottles","clear","reducer","Provider","providerMap","originalProviders","createProvider","getWithGlobal","collection","concat","__global__","providerName","properties","create","defineProperties","register","Obj","$value","$type","apply","$name","$inject","removeProviderMap","resetProviders","providers","forEach","resolve","data","Service","deps","arguments","ServiceCopy","args","unshift","val","defineValue","nestedContainer","$decorator","$register","$list","config","objectTypes","function","object","root","freeExports","exports","nodeType","freeModule","module","moduleExports","freeGlobal","global","window","define","amd"],"mappings":"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","file":"bottle.min.js"} \ No newline at end of file +{"version":3,"sources":["bottle.js"],"names":["undefined","DELIMITER","FUNCTION_TYPE","STRING_TYPE","GLOBAL_NAME","PROVIDER_SUFFIX","id","slice","Array","prototype","getNested","obj","prop","service","globalConfig","strict","Error","getNestedBottle","name","bottle","this","nested","Bottle","pop","factory","container","getNestedService","fullname","split","reduce","constant","value","parts","defineConstant","call","setValueObject","Object","defineProperty","configurable","enumerable","writable","decorator","func","shift","length","join","decorators","push","defer","deferred","digest","services","map","Factory","provider","$get","instanceFactory","instance","bind","byMethod","test","list","keys","filter","applyMiddleware","middleware","descriptor","get","index","next","err","middlewares","bottles","clear","reducer","Provider","providerMap","originalProviders","createProvider","getWithGlobal","collection","concat","__global__","providerName","properties","create","defineProperties","register","Obj","$value","$type","apply","$name","$inject","removeProviderMap","resetProviders","providers","forEach","resolve","data","serviceFactory","factoryService","createService","arguments","Service","isClass","deps","args","val","defineValue","nestedContainer","$decorator","$register","$list","config","objectTypes","function","object","root","freeExports","exports","nodeType","freeModule","module","moduleExports","freeGlobal","global","window","define","amd"],"mappings":"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","file":"bottle.min.js"} \ No newline at end of file diff --git a/grunt/tasks/bump.js b/grunt/tasks/bump.js index 501aaa1..453ce14 100644 --- a/grunt/tasks/bump.js +++ b/grunt/tasks/bump.js @@ -5,6 +5,14 @@ module.exports = function(grunt) { grunt.fatal('Must provide `tag` param.'); return false; } + + /** + * Normalizing 'v' part of tag so I don't have to remember the format. + */ + if (tag[0] === 'v') { + tag = tag.slice(1); + } + ['bower.json', 'package.json'].forEach(function(filename) { var data = grunt.file.readJSON(filename); data.version = tag; diff --git a/package.json b/package.json index 534c101..265bcbb 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "bottlejs", - "version": "1.6.3", + "version": "1.7.0", "description": "A powerful dependency injection micro container", "main": "dist/bottle.js", "typings": "dist/bottle.d.ts",