transmutable
Version:
immutable objects that pretend to be mutable
30 lines (25 loc) • 1.09 kB
JavaScript
;
// const WAS_WRITTEN = Symbol();
// const METHOD = Symbol();
// const MUTATION = 'MUTATION'
// const WAS_ACCESSED = 'WAS_ACCESSED'
// TODO all these should be symbols (now some of them are strings)
// TODO there are too many of them!
// WAS_WRITTEN, WAS_ACCESSED - probably they should be removed, but it has to be checked
// DRAFT - doesn't seem to be used
// SELECTOR TODO check
var WAS_WRITTEN = Symbol();
var METHOD = Symbol();
var MUTATION = Symbol('transmutable/mutation');
var WAS_ACCESSED = Symbol();
var DRAFT = Symbol();
var SELECTOR = Symbol();
// TODO change into Symbol (but Transmutable currently does not clone symbols...)
var AUTO = '@@auto'; //Symbol();
var symbols = {};
['ENTITY',
// inspired by Redux: https://redux.js.org/docs/recipes/reducers/NormalizingStateShape.html
'ENTITIES'].forEach(function (name) {
symbols[name] = '@@transmutable/' + name.toLowerCase();
});
module.exports = Object.assign({ WAS_ACCESSED: WAS_ACCESSED, WAS_WRITTEN: WAS_WRITTEN, METHOD: METHOD, MUTATION: MUTATION, DRAFT: DRAFT, SELECTOR: SELECTOR, AUTO: AUTO }, symbols);