jpex-defaults
Advanced tools
Comparing version 2.0.0-alpha.0 to 2.0.0-alpha.1
(function(){ | ||
var __jpex_modules__ = []; | ||
__jpex_modules__[1] = function(require, module, exports){ | ||
// /src/$copy.js | ||
__jpex_modules__[1] = function(require, module, exports){ | ||
module.exports = function ($typeof) { | ||
@@ -63,2 +64,3 @@ var copier = function (from, to, recur) { | ||
// /src/$log.js | ||
__jpex_modules__[2] = function(require, module, exports){ | ||
@@ -87,2 +89,3 @@ module.exports = function () { | ||
// /src/$$promise.js | ||
__jpex_modules__[3] = function(require, module, exports){ | ||
@@ -95,2 +98,3 @@ module.exports = function () { | ||
// /src/$promise.js | ||
__jpex_modules__[4] = function(require, module, exports){ | ||
@@ -111,2 +115,3 @@ module.exports = function (Promise) { | ||
// /src/$timeout.js | ||
__jpex_modules__[5] = function(require, module, exports){ | ||
@@ -125,2 +130,3 @@ module.exports = function () { | ||
// /src/$interval.js | ||
__jpex_modules__[6] = function(require, module, exports){ | ||
@@ -139,2 +145,3 @@ module.exports = function(){ | ||
// /src/$immediate.js | ||
__jpex_modules__[7] = function(require, module, exports){ | ||
@@ -154,2 +161,3 @@ module.exports = function ($timeout) { | ||
// /src/$typeof.js | ||
__jpex_modules__[8] = function(require, module, exports){ | ||
@@ -167,6 +175,7 @@ module.exports = function () { | ||
// /src/index.js | ||
__jpex_modules__[0] = function(require, module, exports){ | ||
var $copy = require(1); | ||
var $log = require(2); | ||
var $promise = require(3); | ||
var $$promise = require(3); | ||
var $promise = require(4); | ||
@@ -178,2 +187,5 @@ var $timeout = require(5); | ||
exports.name = 'jpex-defaults'; | ||
exports.silent = true; | ||
exports.install = function (options) { | ||
@@ -186,5 +198,5 @@ var Jpex = options.Jpex; | ||
Jpex.register.factory('$promise', [], $promise).lifecycle.application(); | ||
Jpex.register.factory('$$promise', [], $$promise).lifecycle.application(); | ||
Jpex.register.factory('$promise', ['$promise'], $promise).lifecycle.application(); | ||
Jpex.register.factory('$promise', ['$$promise'], $promise).lifecycle.application(); | ||
@@ -191,0 +203,0 @@ Jpex.register.factory('$timeout', [], $timeout).lifecycle.application(); |
@@ -1,1 +0,1 @@ | ||
!function(){var e=[];e[1]=function(e,n,r){n.exports=function(e){var n=function(r,t,o){switch(e(r)){case"string":case"number":case"boolean":case"function":case"null":case"undefined":return r;case"date":return new Date(r);case"regexp":var c=[];return r.global&&c.push("g"),r.ignoreCase&&c.push("i"),new RegExp(r.source,c.join(""));case"array":return r.map(function(e){return o?n(e):e});case"object":return t=t||{},Object.keys(r).forEach(function(e){t[e]=o?n(r[e],t[e],o):r[e]}),t;default:throw new Error("Unexpected type: "+e(r))}},r=function(e){return r.shallow(e)};return r.shallow=function(e){return n(e)},r.deep=function(e){return n(e,null,!0)},r.extend=function(){var e=Array.prototype.slice.call(arguments),r=e.shift();return e.forEach(function(e){n(e,r,!0)}),r},r}},e[2]=function(e,n,r){n.exports=function(){var e=function(){return e.log.apply(null,arguments)};return e.log=function(){return console.log.apply(null,arguments)},e.info=function(){return console.info.apply(null,arguments)},e.warn=function(){return console.warn.apply(null,arguments)},e.error=function(){return console.error.apply(null,arguments)},e}},e[3]=function(e,n,r){n.exports=function(){return Promise}},e[4]=function(e,n,r){n.exports=function(e){var n=function(n){return new e(n)};return n.all=e.all.bind(e),n.race=e.race.bind(e),n.reject=e.reject.bind(e),n.resolve=e.resolve.bind(e),n}},e[5]=function(e,n,r){n.exports=function(){function e(e,n){return setTimeout(e,n)}return e.clear=function(e){return clearTimeout(e)},e}},e[6]=function(e,n,r){n.exports=function(){function e(e,n){return setInterval(e,n)}return e.clear=function(e){return clearInterval(e)},e}},e[7]=function(e,n,r){n.exports=function(e){function n(n){return r?setImmediate(n):e(n,0)}var r="function"==typeof setImmediate;return n.clear=function(n){return r?clearImmediate(n):e.clear(n)},n}},e[8]=function(e,n,r){n.exports=function(){var e=["number","boolean","string","array","function","date","regexp","null","undefined"];return function(n,r){var t=Object.prototype.toString.call(n).match(/\s([a-zA-Z]+)/)[1].toLowerCase();return!r&&e.indexOf(t)<0?"object":t}}},e[0]=function(e,n,r){var t=e(1),o=e(2),c=e(3),c=e(4),i=e(5),u=e(6),a=e(7),l=e(8);r.install=function(e){var n=e.Jpex;n.register.factory("$copy",["$typeof"],t).lifecycle.application(),n.register.factory("$log",[],o).lifecycle.application(),n.register.factory("$promise",[],c).lifecycle.application(),n.register.factory("$promise",["$promise"],c).lifecycle.application(),n.register.factory("$timeout",[],i).lifecycle.application(),n.register.factory("$interval",[],u).lifecycle.application(),n.register.factory("$immediate",["$timeout"],a).lifecycle.application(),n.register.factory("$typeof",[],l).lifecycle.application()},"undefined"!=typeof window&&window.Jpex&&"function"==typeof window.Jpex.use&&window.Jpex.use(r)};var n=function(r){if(n.cache[r])return n.cache[r];var t={exports:{}},o=e[r];if(!o)throw new Error("Could not find module "+r);return o(n,t,t.exports),n.cache[r]=t.exports,t.exports};n.cache=[],"undefined"!=typeof module?module.exports=n(0):"undefined"!=typeof window&&(window.jpexDefaults=n(0))}(); | ||
!function(){var e=[];e[1]=function(e,n,r){n.exports=function(e){var n=function(r,t,o){switch(e(r)){case"string":case"number":case"boolean":case"function":case"null":case"undefined":return r;case"date":return new Date(r);case"regexp":var c=[];return r.global&&c.push("g"),r.ignoreCase&&c.push("i"),new RegExp(r.source,c.join(""));case"array":return r.map(function(e){return o?n(e):e});case"object":return t=t||{},Object.keys(r).forEach(function(e){t[e]=o?n(r[e],t[e],o):r[e]}),t;default:throw new Error("Unexpected type: "+e(r))}},r=function(e){return r.shallow(e)};return r.shallow=function(e){return n(e)},r.deep=function(e){return n(e,null,!0)},r.extend=function(){var e=Array.prototype.slice.call(arguments),r=e.shift();return e.forEach(function(e){n(e,r,!0)}),r},r}},e[2]=function(e,n,r){n.exports=function(){var e=function(){return e.log.apply(null,arguments)};return e.log=function(){return console.log.apply(null,arguments)},e.info=function(){return console.info.apply(null,arguments)},e.warn=function(){return console.warn.apply(null,arguments)},e.error=function(){return console.error.apply(null,arguments)},e}},e[3]=function(e,n,r){n.exports=function(){return Promise}},e[4]=function(e,n,r){n.exports=function(e){var n=function(n){return new e(n)};return n.all=e.all.bind(e),n.race=e.race.bind(e),n.reject=e.reject.bind(e),n.resolve=e.resolve.bind(e),n}},e[5]=function(e,n,r){n.exports=function(){function e(e,n){return setTimeout(e,n)}return e.clear=function(e){return clearTimeout(e)},e}},e[6]=function(e,n,r){n.exports=function(){function e(e,n){return setInterval(e,n)}return e.clear=function(e){return clearInterval(e)},e}},e[7]=function(e,n,r){n.exports=function(e){function n(n){return r?setImmediate(n):e(n,0)}var r="function"==typeof setImmediate;return n.clear=function(n){return r?clearImmediate(n):e.clear(n)},n}},e[8]=function(e,n,r){n.exports=function(){var e=["number","boolean","string","array","function","date","regexp","null","undefined"];return function(n,r){var t=Object.prototype.toString.call(n).match(/\s([a-zA-Z]+)/)[1].toLowerCase();return!r&&e.indexOf(t)<0?"object":t}}},e[0]=function(e,n,r){var t=e(1),o=e(2),c=e(3),i=e(4),u=e(5),a=e(6),l=e(7),f=e(8);r.name="jpex-defaults",r.silent=!0,r.install=function(e){var n=e.Jpex;n.register.factory("$copy",["$typeof"],t).lifecycle.application(),n.register.factory("$log",[],o).lifecycle.application(),n.register.factory("$$promise",[],c).lifecycle.application(),n.register.factory("$promise",["$$promise"],i).lifecycle.application(),n.register.factory("$timeout",[],u).lifecycle.application(),n.register.factory("$interval",[],a).lifecycle.application(),n.register.factory("$immediate",["$timeout"],l).lifecycle.application(),n.register.factory("$typeof",[],f).lifecycle.application()},"undefined"!=typeof window&&window.Jpex&&"function"==typeof window.Jpex.use&&window.Jpex.use(r)};var n=function(r){if(n.cache[r])return n.cache[r];var t={exports:{}},o=e[r];if(!o)throw new Error("Could not find module "+r);return o(n,t,t.exports),n.cache[r]=t.exports,t.exports};n.cache=[],"undefined"!=typeof module?module.exports=n(0):"undefined"!=typeof window&&(window.jpexDefaults=n(0))}(); |
{ | ||
"name": "jpex-defaults", | ||
"version": "2.0.0-alpha.0", | ||
"version": "2.0.0-alpha.1", | ||
"description": "Core factories for Jpex", | ||
@@ -14,3 +14,3 @@ "main": "src/index.js", | ||
"prepublish": "publish-please guard", | ||
"travis-prepublish" : "node node_modules/jpex-build-tools/travis-prepublish" | ||
"travis-prepublish": "node node_modules/jpex-build-tools/travis-prepublish" | ||
}, | ||
@@ -30,3 +30,3 @@ "repository": { | ||
"jasmine": "^2.5.3", | ||
"jpex": "^2.0.0-alpha.0", | ||
"jpex": "^2.0.0-alpha.1", | ||
"jpex-build-tools": "git+https://github.com/jackmellis/jpex-build-tools.git", | ||
@@ -36,5 +36,5 @@ "nyc": "^10.1.2", | ||
}, | ||
"peerDependencies" : { | ||
"jpex" : "^2.0.0" | ||
"peerDependencies": { | ||
"jpex": "^2.0.0" | ||
} | ||
} |
174
README.md
@@ -1,2 +0,174 @@ | ||
# jpex-defaults-core | ||
# jpex-defaults | ||
Core factories for Jpex | ||
This package contains a number of injectable factories for *Jpex*. | ||
## Installation | ||
Install via npm | ||
``` | ||
npm install jpex-defaults --save | ||
``` | ||
## Usage | ||
Node: | ||
```javascript | ||
const Jpex = require('jpex'); | ||
const defaults = require('jpex-defaults'); | ||
Jpex.use(defaults); | ||
// Default factories are now available | ||
const t = Jpex.$resolve('$timeout'); | ||
``` | ||
Webpack/Browserify: | ||
```javascript | ||
var Jpex = require('jpex'); | ||
var defaults = require('jpex-defaults'); | ||
Jpex.use(defaults); | ||
``` | ||
or... | ||
```javascript | ||
var Jpex = require('jpex'); | ||
var defaults = require('jpex-defaults/dist/jpex-defaults'); | ||
Jpex.use(defaults); | ||
``` | ||
HTML/Javascript | ||
```html | ||
<script src="node_modules/jpex/dist/jpex.js"></script> | ||
<script src="node_modules/jpex-defaults/dist/jpex-defaults.js"></script> | ||
<script> | ||
// jpex-defaults is automatically registered when imported via script tags | ||
var t = Jpex.$resolve('$timeout'); | ||
</script> | ||
``` | ||
## API | ||
### $timeout | ||
`$timeout(callback, delay)` | ||
`$timeout` is the equivalent of the `setTimeout` function. The callback function is called after the value of *delay* has passed. The callback function is only called once. | ||
### $interval | ||
`$interval(callback, delay)` | ||
`$interval` is the equivalent of the `setInterval` function. `$interval` will be called repeatedly at the interval set by *delay*. | ||
### $immediate | ||
`$immediate(callback)` | ||
`$immediate` calls the callback function on the next available event loop. This is the equivalent of `setImmediate` in *NodeJs* or `setTimeout(fn, 0)` in a browser. | ||
### $log | ||
`$log(message, [message2, message3...])` | ||
This is a wrapper for the console functions | ||
```javascript | ||
$log('I am console.log'); | ||
``` | ||
#### $log.log | ||
```javascript | ||
$log.log('I am also console.log'); | ||
``` | ||
#### $log.warn | ||
```javascript | ||
$log.warn('I am console.warn'); | ||
``` | ||
#### $log.error | ||
```javascript | ||
$log.error('I am console.error'); | ||
``` | ||
### $promise | ||
`$promise(callback)` | ||
This wraps up the native `Promise` class, without the need for the `new` keyword. If using $promise in a browser that doesn't support the *Promise* object, a polyfill must be attached to the *window* object. The plugin *jpex-web* (which also includes this package) automatically sets a polyfill if needed. | ||
Calling $promise will create a new Promise with the provided constructor function. | ||
The function takes two parameters: resolve and reject. | ||
```javascript | ||
return $promise(function(resolve, reject){ | ||
resolve(123); | ||
}); | ||
``` | ||
#### $promise.resolve | ||
Returns a resolved promise. | ||
```javascript | ||
return $promise.resolve(123); | ||
``` | ||
#### $promise.reject | ||
Returns a rejected promise. | ||
```javascript | ||
return $promise.reject().catch(...); | ||
``` | ||
#### $promise.all | ||
Accepts an array of promises and resolves once all promises have been resolved. If any of the promises is rejected, `$promise.all` will be rejected. | ||
```javascript | ||
$promise.all([$promise(...), $promise.resolve(), 123]); | ||
``` | ||
#### $promise.race | ||
Accepts an array of promises and resolves when any of the promises has been resolved. If any of the promises is rejected, `$promise.all` will be rejected. | ||
```javascript | ||
$promise.race([$promise(...), $promise.resolve(), 123]); | ||
``` | ||
### $typeof | ||
`$typeof(any)` | ||
`$typeof` provides a function that returns the type of any object. The possible return values are: | ||
- string | ||
- number | ||
- boolean | ||
- function | ||
- array | ||
- object | ||
- date | ||
- regexp | ||
- null | ||
- undefined | ||
```javascript | ||
var t = $typeof(/a/); // 'regexp' | ||
``` | ||
### $copy | ||
`$copy(object)` | ||
The $copy factory allows you to create a copy any object. It can be used as a function, or as an object which contains shallow and deep copy functions. | ||
The shallow copy will copy an object but will not create copies of its properties. So if an object has a property `x` which is an object itself, the copied object will have the exact same instance of x. | ||
```javascript | ||
var obj = { x : [1, 2, 3] }; | ||
var shallow = $copy(obj); | ||
``` | ||
#### $copy.shallow | ||
`$copy.shallow(object)` | ||
```javascript | ||
var obj = { x : [1, 2, 3] }; | ||
var shallow = $copy.shallow(obj); | ||
``` | ||
#### $copy.deep | ||
`$copy.deep(object)` | ||
The deep copy will copy an object and then copy all of that object's properties. | ||
```javascript | ||
var obj = { x : [1, 2, 3] }; | ||
var deep = $copy.deep(obj); | ||
``` | ||
#### $copy.extend | ||
`$copy.extend(target, [obj1, obj2...])` | ||
The extend method takes any number of arguments and will deep copy the properties of the last arguments onto the first argument. i.e. `$copy.extend(a, b, c)` will copy the properties of `b` onto `a` and then `c` onto `a`. If `b` and `c` have the same property, `c`'s property wins. | ||
There are a couple of rules to keep in mind: | ||
If two objects have the same property, and the type of that property is an *object*, its properties will be combined. i.e. if `b.x.foo` is set and `c.x.bah` is set, then `a.x` will get both properties `foo` and `bah`. | ||
If two objects have the same property, and the type of that property is an *array*, its elements will be overwritten. i.e. if `b.x = [1, 2, 3]` and `c.x = [4, 5]` then `a.x` will be `[4,5]`. | ||
```javascript | ||
var obj = { x : [1, 2, 3] }; | ||
var extended = $copy.extend(0, 1); // 1 | ||
extended = $copy.extend({}, obj); // { x : [1,2,3] } | ||
extended = $copy.extend({}, obj, {y : 'why'}); // { x : [1,2,3], y : 'why' } | ||
extended = $copy.extend({}, {x : 'first'}, {x : 'second'}); // { x : 'second' } | ||
extended = $copy.extend({}, {x : [1, 2, 3]}, {x : [4, 5, 6]}); // { x : [1, 2, 3, 4, 5, 6]} | ||
``` |
@@ -10,2 +10,5 @@ var $copy = require('./$copy'); | ||
exports.name = 'jpex-defaults'; | ||
exports.silent = true; | ||
exports.install = function (options) { | ||
@@ -12,0 +15,0 @@ var Jpex = options.Jpex; |
21242
331
175