bouzuya.hatenablog.com

ぼうずやのにっき

bouzuya/fake-history-fns をつくった

bouzuya/fake-history-fns をつくった。

fake-history-fns は bouzuya/fake-history (2017-04-01) の class を使わない版。 fake-historyHistory interface を備えた fake object である 。特徴というか利点は次のとおり。

  • 関数単位での import ができる
  • JSON.stringify / JSON.parse で serialize / deserialize できる
  • (個人的に) OOP は難しいので FP (?)

README にある例。

import * as assert from 'assert';
import {
  back,
  create,
  current,
  currentState,
  length,
  next,
  nextState,
  previous,
  previousState,
  pushState,
  state
} from 'fake-history-fns';

const p0 = create();
const p1 = pushState(p0, 1, '1', '/1');
const p2 = pushState(p1, 2, '2', '/2');
const p3 = pushState(p2, 3, '3', '/3');
const b1 = back(p0);

assert(length(b1) === 3);
assert(state(b1) === 2);

assert(current(b1) === '/2');
assert(currentState(b1) === 2);
assert(next(b1) === '/3');
assert(nextState(b1) === 3);
assert(previous(b1) === '/1');
assert(previousState(b1) === 1);

bouzuya/mr-jums には fake-history でなく fake-history-fns を採用した。実際には関数単位での import なんてしないし、 History を永続化する意味はまったくないので、趣味の問題だ。