Skip to content
This repository has been archived by the owner on Dec 23, 2019. It is now read-only.

Commit

Permalink
allow null maxAge for cached items (#37)
Browse files Browse the repository at this point in the history
  • Loading branch information
cvburgess authored Mar 23, 2018
1 parent e88e432 commit 8082243
Show file tree
Hide file tree
Showing 5 changed files with 20 additions and 12 deletions.
8 changes: 6 additions & 2 deletions CHANGELOG.md
Original file line number Diff line number Diff line change
@@ -1,12 +1,16 @@
# Changelog

## 0.14.0

- Allow `null` maxAge to never expire a key

## 0.13.2

- Convert number responses to objects with value property
- Convert Number responses to objects with value property

## 0.13.1

- Convert string responses to objects with value property
- Convert String responses to objects with value property

## 0.13.0

Expand Down
10 changes: 5 additions & 5 deletions lib/cache.js
Original file line number Diff line number Diff line change
Expand Up @@ -29,11 +29,11 @@ _store2.default.addPlugin([_expire2.default, _observe2.default]);

var defaultConfig = { maxAge: 1 };

var set = exports.set = function set(cacheKey, value) {
var maxAge = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : defaultConfig.maxAge;

var expiresAt = new Date().getTime() + maxAge * SECOND;
return Promise.resolve(_store2.default.set(cacheKey, value, expiresAt));
var set = exports.set = function set(cacheKey, value, maxAge) {
// Allow null to bypass default cache value and act as "never expire"
var userMaxAgeOrDefault = maxAge || defaultConfig.maxAge;
var expiresAt = new Date().getTime() + userMaxAgeOrDefault * SECOND;
return maxAge === null ? Promise.resolve(_store2.default.set(cacheKey, value)) : Promise.resolve(_store2.default.set(cacheKey, value, expiresAt));
};

var getSync = exports.getSync = function getSync(cacheKey, defaultValue) {
Expand Down
2 changes: 1 addition & 1 deletion package-lock.json

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

2 changes: 1 addition & 1 deletion package.json
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
{
"name": "perch-data",
"version": "0.13.2",
"version": "0.14.0",
"description": "Utilities for managing data. Inspired by react-apollo.",
"main": "lib/index.js",
"scripts": {
Expand Down
10 changes: 7 additions & 3 deletions src/cache.js
Original file line number Diff line number Diff line change
Expand Up @@ -8,9 +8,13 @@ store.addPlugin([expirePlugin, observePlugin]);

const defaultConfig = { maxAge: 1 };

export const set = (cacheKey, value, maxAge = defaultConfig.maxAge) => {
const expiresAt = new Date().getTime() + maxAge * SECOND;
return Promise.resolve(store.set(cacheKey, value, expiresAt));
export const set = (cacheKey, value, maxAge) => {
// Allow null to bypass default cache value and act as "never expire"
const userMaxAgeOrDefault = maxAge || defaultConfig.maxAge;
const expiresAt = new Date().getTime() + userMaxAgeOrDefault * SECOND;
return maxAge === null
? Promise.resolve(store.set(cacheKey, value))
: Promise.resolve(store.set(cacheKey, value, expiresAt));
};

export const getSync = (cacheKey, defaultValue) => {
Expand Down

0 comments on commit 8082243

Please sign in to comment.