From d49f5670fe488cac01cba4cbdfb73a82c4623f90 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?G=C3=A9ry=20Debongnie?= Date: Thu, 11 Apr 2019 13:00:56 +0200 Subject: [PATCH] ref: better store internal organization --- src/store.ts | 26 +++++++++++++++++--------- 1 file changed, 17 insertions(+), 9 deletions(-) diff --git a/src/store.ts b/src/store.ts index dfc893b4..77ff6ebf 100644 --- a/src/store.ts +++ b/src/store.ts @@ -2,6 +2,10 @@ import { EventBus } from "./event_bus"; import { Component } from "./component"; import { shallowEqual } from "./utils"; +//------------------------------------------------------------------------------ +// Store Definition +//------------------------------------------------------------------------------ + interface StoreConfig { env?: any; state?: any; @@ -91,6 +95,9 @@ export class Store extends EventBus { } } +//------------------------------------------------------------------------------ +// Connect function +//------------------------------------------------------------------------------ export function connect(mapStateToProps) { return function(Comp) { return class extends Comp { @@ -137,12 +144,12 @@ export function connect(mapStateToProps) { }; } -function _magifyArray({ raw, key, parent, magic, onDirty }) { - Object.defineProperty(magic, "length", { - get() { - return magic.raw.length; - } - }); +//------------------------------------------------------------------------------ +// Magic Stuff +//------------------------------------------------------------------------------ + +function _magifyArray({ raw, key, parent, onDirty }) { + let magic = { raw, key, parent, magic: true }; Object.assign(magic, { push: function(item) { onDirty(); @@ -184,6 +191,7 @@ function _magifyArray({ raw, key, parent, magic, onDirty }) { } }); }); + return magic; } function magify({ raw, key, parent, onDirty }) { @@ -200,10 +208,10 @@ function magify({ raw, key, parent, onDirty }) { if (typeof raw !== "object") { return raw; } - let magic = { raw, key, parent, magic: true }; if (Array.isArray(raw)) { - _magifyArray({ raw, key, parent, magic, onDirty }); + return _magifyArray({ raw, key, parent, onDirty }); } else { + let magic = { raw, key, parent, magic: true }; Object.keys(raw).forEach(propKey => { let prop = magify({ raw: raw[propKey], @@ -223,6 +231,6 @@ function magify({ raw, key, parent, onDirty }) { } }); }); + return magic; } - return magic; }