Skip to content

Commit 53fa5e2

Browse files
committed
fix
1 parent 607811c commit 53fa5e2

File tree

6 files changed

+35
-59
lines changed

6 files changed

+35
-59
lines changed

.npmignore

+2-1
Original file line numberDiff line numberDiff line change
@@ -1 +1,2 @@
1-
website
1+
website
2+
examples

.vscode/terminals.json

+20
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,20 @@
1+
{
2+
"autorun": false,
3+
"terminals": [
4+
{
5+
"name": "compile packagfe",
6+
"description": "This is a description",
7+
"command": "tsc --watch index.ts"
8+
},
9+
{
10+
"name": "local website",
11+
"description": "This is a description",
12+
"command": "cd website; npm start -- --port 4000"
13+
},
14+
{
15+
"name": "deploy website",
16+
"description": "This is a description",
17+
"command": "cd website; echo npm run build"
18+
}
19+
]
20+
}

README.md

+8-4
Original file line numberDiff line numberDiff line change
@@ -2,23 +2,27 @@
22

33
Please see the full working demo app: https://github.com/Aminadav/globx/tree/master/examples/todo
44

5+
See the website: https://globx.js.org
6+
57
Link to the first Reddit post about it: https://www.reddit.com/r/reactjs/comments/m27hqm/globux_a_global_state_manager_that_let_you_read/
68

9+
## Installation
10+
11+
npm i globx
12+
713
Demo:
814

915
```js
1016
// First you should creating the store.
1117
// Usually you will create one store for each app and share this variable.
1218
// Usually you will put this in separate file.
13-
import {NewStore} from "globx"
19+
import {newStore} from "globx"
1420

15-
const store = NewStore({
21+
const store = newStore({
1622
key1:0,
1723
key2:0,
1824
})
1925

20-
21-
2226
function App(){
2327
// This component will automatically re-render when store.key1 will change.
2428
store.useRerenderIfChange(()=>[store.key1])

index.js

+3-30
Original file line numberDiff line numberDiff line change
@@ -1,47 +1,20 @@
11
"use strict";
2-
var __assign = (this && this.__assign) || function () {
3-
__assign = Object.assign || function(t) {
4-
for (var s, i = 1, n = arguments.length; i < n; i++) {
5-
s = arguments[i];
6-
for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p))
7-
t[p] = s[p];
8-
}
9-
return t;
10-
};
11-
return __assign.apply(this, arguments);
12-
};
132
exports.__esModule = true;
14-
exports.NewStore = void 0;
3+
exports.newStore = void 0;
154
//@ts-check
165
var react_1 = require("react");
176
var isEqual = require("lodash.isequal");
187
var cloneDeep = require("lodash.clonedeep");
19-
function NewStore(state, persistentProvider) {
8+
function newStore(state) {
209
//@ts-ignore
2110
var Store = state;
22-
var prevPersistented = __assign({}, ((Store === null || Store === void 0 ? void 0 : Store.persistent) || {}));
2311
var callbacks = {};
2412
var callbacksNextAvailableKey = 0;
2513
function updateStoreNow() {
2614
scheduled = false;
2715
for (var i in callbacks) {
2816
callbacks[i]();
2917
}
30-
if (Store.persistent) {
31-
if (!persistentProvider) {
32-
throw new Error('cannot use persistent without persistent provider');
33-
}
34-
for (var _i = 0, _a = Object.keys(Store.persistent); _i < _a.length; _i++) {
35-
var key = _a[_i];
36-
var val = Store.persistent[key];
37-
// console.log({key,val:JSON.stringify(val),prev:prevPersistented[key]})
38-
if (JSON.stringify(val) != prevPersistented[key]) {
39-
persistentProvider.setKey(key, val);
40-
prevPersistented[key] = JSON.stringify(val);
41-
// console.log({prevPersistented})
42-
}
43-
}
44-
}
4518
}
4619
var scheduled = false;
4720
function Schedule() {
@@ -81,4 +54,4 @@ function NewStore(state, persistentProvider) {
8154
};
8255
return Store;
8356
}
84-
exports.NewStore = NewStore;
57+
exports.newStore = newStore;

index.ts

+1-23
Original file line numberDiff line numberDiff line change
@@ -6,17 +6,10 @@ import cloneDeep = require("lodash.clonedeep")
66
interface a{
77
updateStore:()=>void
88
useRerenderIfChange:(callback)=>void
9-
persistent:{[key:string]:any}
10-
isReady?:Promise<void>
119
}
12-
interface PersistentProvider {
13-
setKey:(key:string,value:any)=>Promise<void>
14-
getKey:(key:string)=>Promise<any>
15-
}
16-
export function NewStore<T>(state:(T & {persistent:{[key:string]:any}}),persistentProvider?:PersistentProvider):(a & T) {
10+
export function newStore<T>(state:T):(a & T) {
1711
//@ts-ignore
1812
var Store:(a & T)=state
19-
var prevPersistented = {... (Store?.persistent || {})}
2013
var callbacks = {}
2114
var callbacksNextAvailableKey = 0
2215

@@ -25,21 +18,6 @@ export function NewStore<T>(state:(T & {persistent:{[key:string]:any}}),persiste
2518
for (var i in callbacks) {
2619
callbacks[i]()
2720
}
28-
if(Store.persistent) {
29-
if(!persistentProvider) {
30-
throw new Error('cannot use persistent without persistent provider')
31-
}
32-
for(let key of Object.keys(Store.persistent)) {
33-
var val=Store.persistent[key]
34-
// console.log({key,val:JSON.stringify(val),prev:prevPersistented[key]})
35-
36-
if(JSON.stringify(val)!=prevPersistented[key]) {
37-
persistentProvider.setKey(key,val)
38-
prevPersistented[key]=JSON.stringify(val)
39-
// console.log({prevPersistented})
40-
}
41-
}
42-
}
4321
}
4422
var scheduled=false
4523
function Schedule(){

website/docusaurus.config.js

+1-1
Original file line numberDiff line numberDiff line change
@@ -86,7 +86,7 @@ module.exports = {
8686
],
8787
},
8888
],
89-
copyright: `Copyright © ${new Date().getFullYear()} Aminadav Glickshtein and the Redux documentation authors.`,
89+
copyright: `Copyright © ${new Date().getFullYear()} Aminadav Glickshtein and the GlobX documentation authors.`,
9090
},
9191
},
9292
presets: [

0 commit comments

Comments
 (0)