Comparing version 1.2.0 to 1.3.0
@@ -24,2 +24,4 @@ (function(f){if(typeof exports==="object"&&typeof module!=="undefined"){module.exports=f()}else if(typeof define==="function"&&define.amd){define([],f)}else{var g;if(typeof window!=="undefined"){g=window}else if(typeof global!=="undefined"){g=global}else if(typeof self!=="undefined"){g=self}else{g=this}g.geheugen = f()}})(function(){var define,module,exports;return (function e(t,n,r){function s(o,u){if(!n[o]){if(!t[o]){var a=typeof require=="function"&&require;if(!u&&a)return a(o,!0);if(i)return i(o,!0);var f=new Error("Cannot find module '"+o+"'");throw f.code="MODULE_NOT_FOUND",f}var l=n[o]={exports:{}};t[o][0].call(l.exports,function(e){var n=t[o][1][e];return s(n?n:e)},l,l.exports,e,t,n,r)}return n[o].exports}var i=typeof require=="function"&&require;for(var o=0;o<r.length;o++)s(r[o]);return s})({1:[function(require,module,exports){ | ||
var dependencies = _ref$dependencies === undefined ? [] : _ref$dependencies; | ||
var _ref$onReset = _ref.onReset; | ||
var onReset = _ref$onReset === undefined ? function () {} : _ref$onReset; | ||
var _ref$factory = _ref.factory; | ||
@@ -36,3 +38,3 @@ var factory = _ref$factory === undefined ? function () {} : _ref$factory; | ||
return Object.assign(this, { Q: Q, singleton: singleton, dependencies: dependencies, factory: factory, promise: promise, value: value, dependants: [] }); | ||
return Object.assign(this, { Q: Q, singleton: singleton, dependencies: dependencies, onReset: onReset, factory: factory, promise: promise, value: value, dependants: [] }); | ||
} | ||
@@ -70,2 +72,4 @@ | ||
this.onReset(); | ||
delete this.value; | ||
@@ -72,0 +76,0 @@ } |
@@ -23,2 +23,4 @@ "use strict"; | ||
var dependencies = _ref$dependencies === undefined ? [] : _ref$dependencies; | ||
var _ref$onReset = _ref.onReset; | ||
var onReset = _ref$onReset === undefined ? function () {} : _ref$onReset; | ||
var _ref$factory = _ref.factory; | ||
@@ -35,3 +37,3 @@ var factory = _ref$factory === undefined ? function () {} : _ref$factory; | ||
return Object.assign(this, { Q: Q, singleton: singleton, dependencies: dependencies, factory: factory, promise: promise, value: value, dependants: [] }); | ||
return Object.assign(this, { Q: Q, singleton: singleton, dependencies: dependencies, onReset: onReset, factory: factory, promise: promise, value: value, dependants: [] }); | ||
} | ||
@@ -69,2 +71,4 @@ | ||
this.onReset(); | ||
delete this.value; | ||
@@ -71,0 +75,0 @@ } |
{ | ||
"name": "geheugen", | ||
"version": "1.2.0", | ||
"version": "1.3.0", | ||
"description": "A memoisation toolkit", | ||
@@ -40,5 +40,8 @@ "main": "lib/index.js", | ||
"gulp-babel": "^6.1.2", | ||
"gulp-jshint": "^2.0.0", | ||
"gulp-mocha": "^2.2.0", | ||
"gulp-sourcemaps": "^1.6.0", | ||
"gulp-util": "^3.0.7", | ||
"jshint": "^2.9.1", | ||
"jshint-stylish": "^2.1.0", | ||
"mocha-sinon": "^1.1.5", | ||
@@ -45,0 +48,0 @@ "promise.prototype.finally": "^1.0.1", |
@@ -71,3 +71,3 @@ # geheugen | ||
##### new Memo({ Q, singleton, dependencies, factory, promise, value }) | ||
##### new Memo({ Q, singleton, dependencies, onReset factory, promise, value }) | ||
@@ -103,2 +103,11 @@ ###### Q | ||
###### onReset | ||
Type: `Function` | ||
Default: `() => {}` | ||
The reset event handler. | ||
The reset event handler will be invoked when the `reset()` method is invoked. | ||
###### factory | ||
@@ -149,2 +158,4 @@ Type: `Function` | ||
The reset event handler will be invoked immediately before the value is removed. | ||
Any memo that has specified this memo as a dependency will also be reset. | ||
@@ -169,2 +180,7 @@ | ||
###### onReset | ||
Type: `Function` | ||
The reset event handler. | ||
##### factory | ||
@@ -171,0 +187,0 @@ Type: `Function` |
@@ -6,2 +6,3 @@ export class Memo { | ||
dependencies = [], | ||
onReset = () => {}, | ||
factory = () => {}, | ||
@@ -15,3 +16,3 @@ promise, | ||
return Object.assign(this, { Q, singleton, dependencies, factory, promise, value, dependants: [] }); | ||
return Object.assign(this, { Q, singleton, dependencies, onReset, factory, promise, value, dependants: [] }); | ||
} | ||
@@ -45,4 +46,6 @@ | ||
this.onReset(); | ||
delete this.value; | ||
} | ||
} |
@@ -12,2 +12,3 @@ import sinon from 'sinon'; | ||
let dependencies = []; | ||
let onReset = () => {}; | ||
let factory = () => {}; | ||
@@ -18,3 +19,3 @@ let promise = new Promise(() => {}); | ||
// When | ||
let memo = new Memo({ Q, singleton, dependencies, factory, promise, value }); | ||
let memo = new Memo({ Q, singleton, dependencies, onReset, factory, promise, value }); | ||
@@ -25,2 +26,3 @@ // Then | ||
expect(memo.dependencies).to.equal(dependencies); | ||
expect(memo.onReset).to.equal(onReset); | ||
expect(memo.factory).to.equal(factory); | ||
@@ -181,3 +183,3 @@ expect(memo.promise).to.equal(promise); | ||
describe('reset()', () => { | ||
describe('when the memo has dependant', () => { | ||
describe('when the memo has dependants', () => { | ||
it('should reset the dependants', () => { | ||
@@ -204,2 +206,15 @@ // Given | ||
it('should invoke the reset event handler', () => { | ||
// Given | ||
let memo = new Memo(); | ||
sinon.spy(memo, 'onReset'); | ||
// When | ||
memo.reset(); | ||
// Then | ||
expect(memo.onReset).to.have.been.called; | ||
}); | ||
it('should remove the value', () => { | ||
@@ -206,0 +221,0 @@ // Given |
Sorry, the diff of this file is not supported yet
Sorry, the diff of this file is not supported yet
35494
15
405
201
24