Comparing version 1.0.0 to 1.1.0
@@ -20,2 +20,4 @@ 'use strict'; | ||
var _ref$Q = _ref.Q; | ||
var Q = _ref$Q === undefined ? Promise : _ref$Q; | ||
var _ref$dependencies = _ref.dependencies; | ||
@@ -34,3 +36,3 @@ var dependencies = _ref$dependencies === undefined ? [] : _ref$dependencies; | ||
return Object.assign(this, { dependencies: dependencies, factory: factory, promise: promise, value: value, dependants: [] }); | ||
return Object.assign(this, { Q: Q, dependencies: dependencies, factory: factory, promise: promise, value: value, dependants: [] }); | ||
} | ||
@@ -44,7 +46,7 @@ | ||
if (this.value !== undefined) { | ||
return Promise.resolve(this.value); | ||
return this.Q.resolve(this.value); | ||
} else if (this.promise !== undefined) { | ||
return this.promise; | ||
} else { | ||
this.promise = Promise.all(this.dependencies.map(function (dependency) { | ||
this.promise = this.Q.all(this.dependencies.map(function (dependency) { | ||
return dependency.resolve(); | ||
@@ -51,0 +53,0 @@ })).then(this.factory).then(function (value) { |
{ | ||
"name": "geheugen", | ||
"version": "1.0.0", | ||
"version": "1.1.0", | ||
"description": "A memoisation toolkit", | ||
@@ -17,4 +17,6 @@ "main": "lib/index.js", | ||
"memo", | ||
"memoise", "memoize", | ||
"memoisation", "memoization" | ||
"memoise", | ||
"memoize", | ||
"memoisation", | ||
"memoization" | ||
], | ||
@@ -21,0 +23,0 @@ "author": "Karl Juri Ots <kjots@kjots.org>", |
# geheugen | ||
[![Build Status](https://travis-ci.org/kjots/geheugen.svg?branch=master)](https://travis-ci.org/kjots/geheugen) | ||
[![npm version](https://badge.fury.io/js/geheugen.svg)](https://www.npmjs.com/package/geheugen) | ||
@@ -32,4 +33,16 @@ > A memoisation toolkit. | ||
##### new Memo({ dependencies, factory, promise, value }) | ||
##### new Memo({ Q, dependencies, factory, promise, value }) | ||
###### Q | ||
Type: `Class` | ||
Default: `Promise` | ||
The promise implementation. | ||
The promise implementation should at a minimum implement the following methods: | ||
* `Promise.resolve()` | ||
* `Promise.all()` | ||
###### dependencies | ||
@@ -91,2 +104,7 @@ Type: `Array<Memo>` | ||
###### Q | ||
Type: `Class` | ||
The promise implementation. | ||
#### dependencies | ||
@@ -93,0 +111,0 @@ Type: `Array<Memo>` |
@@ -5,2 +5,3 @@ import 'promise.prototype.finally'; | ||
constructor({ | ||
Q = Promise, | ||
dependencies = [], | ||
@@ -15,3 +16,3 @@ factory = () => {}, | ||
return Object.assign(this, { dependencies, factory, promise, value, dependants: [] }); | ||
return Object.assign(this, { Q, dependencies, factory, promise, value, dependants: [] }); | ||
} | ||
@@ -21,3 +22,3 @@ | ||
if (this.value !== undefined) { | ||
return Promise.resolve(this.value); | ||
return this.Q.resolve(this.value); | ||
} | ||
@@ -28,3 +29,3 @@ else if (this.promise !== undefined) { | ||
else { | ||
this.promise = Promise.all(this.dependencies.map(dependency => dependency.resolve())) | ||
this.promise = this.Q.all(this.dependencies.map(dependency => dependency.resolve())) | ||
.then(this.factory) | ||
@@ -31,0 +32,0 @@ .then(value => { |
@@ -9,2 +9,3 @@ import sinon from 'sinon'; | ||
// Given | ||
let Q = {}; | ||
let dependencies = []; | ||
@@ -16,5 +17,6 @@ let factory = () => {}; | ||
// When | ||
let memo = new Memo({ dependencies, factory, promise, value }); | ||
let memo = new Memo({ Q, dependencies, factory, promise, value }); | ||
// Then | ||
expect(memo.Q).to.equal(Q); | ||
expect(memo.dependencies).to.equal(dependencies); | ||
@@ -21,0 +23,0 @@ expect(memo.factory).to.equal(factory); |
Sorry, the diff of this file is not supported yet
26771
283
132