j-templates 5.0.37 → 5.0.39
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/DOM/domNodeConfig.js +2 -1
- package/DOM/elements.js +1 -0
- package/DOM/index.js +17 -6
- package/DOM/svgElements.js +1 -0
- package/DOM/utils.js +1 -0
- package/DOM/window.js +1 -0
- package/Node/boundNode.js +1 -0
- package/Node/boundNode.types.d.ts +2 -2
- package/Node/component.d.ts +1 -1
- package/Node/component.js +13 -7
- package/Node/componentNode.js +8 -7
- package/Node/componentNode.types.d.ts +2 -2
- package/Node/elementNode.js +7 -6
- package/Node/elementNode.types.d.ts +2 -2
- package/Node/nodeConfig.js +1 -0
- package/Node/nodeRef.js +1 -0
- package/Node/nodeRef.types.d.ts +1 -1
- package/Store/Diff/diffAsync.js +3 -1
- package/Store/Diff/diffSync.js +3 -1
- package/Store/Diff/diffTree.d.ts +1 -1
- package/Store/Diff/diffTree.js +3 -1
- package/Store/Diff/diffWorker.js +1 -0
- package/Store/Diff/workerQueue.js +3 -0
- package/Store/Store/store.js +9 -9
- package/Store/Store/storeAsync.d.ts +1 -1
- package/Store/Store/storeAsync.js +7 -5
- package/Store/Store/storeAsyncWriter.d.ts +4 -5
- package/Store/Store/storeAsyncWriter.js +13 -13
- package/Store/Store/storeSync.js +10 -10
- package/Store/Store/storeSyncWriter.d.ts +4 -5
- package/Store/Store/storeSyncWriter.js +12 -14
- package/Store/Store/storeWriter.d.ts +4 -5
- package/Store/Store/storeWriter.js +13 -14
- package/Store/Tree/observableScope.js +8 -5
- package/Store/Tree/observableTree.d.ts +21 -12
- package/Store/Tree/observableTree.js +194 -67
- package/Store/index.js +5 -4
- package/Utils/animation.js +22 -12
- package/Utils/asyncQueue.js +3 -4
- package/Utils/decorators.d.ts +1 -1
- package/Utils/decorators.js +1 -0
- package/Utils/emitter.d.ts +2 -2
- package/Utils/emitter.js +1 -0
- package/Utils/index.js +16 -5
- package/Utils/injector.js +3 -0
- package/Utils/list.js +1 -0
- package/Utils/router.js +13 -9
- package/Utils/thread.d.ts +1 -1
- package/Utils/thread.js +1 -0
- package/index.js +2 -1
- package/jTemplates.js +521 -735
- package/jTemplates.js.map +1 -1
- package/package.json +1 -1
- package/web.export.js +21 -9
- package/Store/Tree/observableNode.d.ts +0 -32
- package/Store/Tree/observableNode.js +0 -148
- package/Store/Tree/observableProxy.d.ts +0 -17
- package/Store/Tree/observableProxy.js +0 -119
package/DOM/domNodeConfig.js
CHANGED
|
@@ -1,5 +1,6 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.DOMNodeConfig = void 0;
|
|
3
4
|
const window_1 = require("./window");
|
|
4
5
|
const list_1 = require("../Utils/list");
|
|
5
6
|
const utils_1 = require("./utils");
|
|
@@ -10,7 +11,7 @@ function processUpdates() {
|
|
|
10
11
|
list_1.List.Add(pendingUpdates, null);
|
|
11
12
|
var callback;
|
|
12
13
|
while ((callback = list_1.List.Pop(pendingUpdates)))
|
|
13
|
-
thread_1.Synch(callback);
|
|
14
|
+
(0, thread_1.Synch)(callback);
|
|
14
15
|
if (pendingUpdates.size === 0)
|
|
15
16
|
updateScheduled = false;
|
|
16
17
|
else
|
package/DOM/elements.js
CHANGED
|
@@ -1,5 +1,6 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.td = exports.tr = exports.th = exports.table = exports.button = exports.style = exports.p = exports.h3 = exports.h2 = exports.h1 = exports.option = exports.select = exports.input = exports.source = exports.video = exports.img = exports.span = exports.b = exports.br = exports.li = exports.ul = exports.a = exports.div = void 0;
|
|
3
4
|
const elementNode_1 = require("../Node/elementNode");
|
|
4
5
|
function div(nodeDef, children) {
|
|
5
6
|
return elementNode_1.ElementNode.Create("div", null, nodeDef, children);
|
package/DOM/index.js
CHANGED
|
@@ -1,8 +1,19 @@
|
|
|
1
1
|
"use strict";
|
|
2
|
-
function
|
|
3
|
-
|
|
4
|
-
|
|
2
|
+
var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
|
|
3
|
+
if (k2 === undefined) k2 = k;
|
|
4
|
+
var desc = Object.getOwnPropertyDescriptor(m, k);
|
|
5
|
+
if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
|
|
6
|
+
desc = { enumerable: true, get: function() { return m[k]; } };
|
|
7
|
+
}
|
|
8
|
+
Object.defineProperty(o, k2, desc);
|
|
9
|
+
}) : (function(o, m, k, k2) {
|
|
10
|
+
if (k2 === undefined) k2 = k;
|
|
11
|
+
o[k2] = m[k];
|
|
12
|
+
}));
|
|
13
|
+
var __exportStar = (this && this.__exportStar) || function(m, exports) {
|
|
14
|
+
for (var p in m) if (p !== "default" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);
|
|
15
|
+
};
|
|
5
16
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
17
|
+
__exportStar(require("./elements"), exports);
|
|
18
|
+
__exportStar(require("./svgElements"), exports);
|
|
19
|
+
__exportStar(require("./utils"), exports);
|
package/DOM/svgElements.js
CHANGED
package/DOM/utils.js
CHANGED
package/DOM/window.js
CHANGED
package/Node/boundNode.js
CHANGED
|
@@ -1,9 +1,9 @@
|
|
|
1
1
|
import { NodeRefType } from "./nodeRef";
|
|
2
2
|
import { INodeRefBase } from "./nodeRef.types";
|
|
3
|
-
export
|
|
3
|
+
export type FunctionOr<T> = {
|
|
4
4
|
(...args: Array<any>): T | Promise<T>;
|
|
5
5
|
} | T;
|
|
6
|
-
export
|
|
6
|
+
export type NodeRefEvents = {
|
|
7
7
|
[name: string]: {
|
|
8
8
|
(...args: Array<any>): void;
|
|
9
9
|
};
|
package/Node/component.d.ts
CHANGED
|
@@ -27,7 +27,7 @@ export declare namespace Component {
|
|
|
27
27
|
function Register<D = void, T = void, E = void>(name: string, constructor: ComponentConstructor<D, T, E>): void;
|
|
28
28
|
function Attach(node: Node, nodeRef: NodeRefTypes): void;
|
|
29
29
|
}
|
|
30
|
-
export
|
|
30
|
+
export type ComponentConstructor<D, T, E> = {
|
|
31
31
|
new (data: {
|
|
32
32
|
(): D | Promise<D>;
|
|
33
33
|
}, templates: T, nodeRef: INodeRefBase, componentEvents: ComponentNodeEvents<E>): Component<D, T, E>;
|
package/Node/component.js
CHANGED
|
@@ -1,17 +1,16 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.Component = void 0;
|
|
3
4
|
const nodeRef_1 = require("./nodeRef");
|
|
4
5
|
const componentNode_1 = require("./componentNode");
|
|
5
6
|
const decorators_1 = require("../Utils/decorators");
|
|
6
7
|
const observableScope_1 = require("../Store/Tree/observableScope");
|
|
7
8
|
class Component {
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
this.decoratorMap = new Map();
|
|
14
|
-
}
|
|
9
|
+
nodeRef;
|
|
10
|
+
componentEvents;
|
|
11
|
+
scope;
|
|
12
|
+
templates;
|
|
13
|
+
decoratorMap;
|
|
15
14
|
get Injector() {
|
|
16
15
|
return this.nodeRef.injector;
|
|
17
16
|
}
|
|
@@ -33,6 +32,13 @@ class Component {
|
|
|
33
32
|
get Templates() {
|
|
34
33
|
return this.templates;
|
|
35
34
|
}
|
|
35
|
+
constructor(data, templates, nodeRef, componentEvents) {
|
|
36
|
+
this.nodeRef = nodeRef;
|
|
37
|
+
this.componentEvents = componentEvents;
|
|
38
|
+
this.scope = new observableScope_1.ObservableScope(data);
|
|
39
|
+
this.templates = templates || {};
|
|
40
|
+
this.decoratorMap = new Map();
|
|
41
|
+
}
|
|
36
42
|
Template() {
|
|
37
43
|
return [];
|
|
38
44
|
}
|
package/Node/componentNode.js
CHANGED
|
@@ -1,5 +1,6 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.ComponentNode = void 0;
|
|
3
4
|
const boundNode_1 = require("./boundNode");
|
|
4
5
|
const nodeRef_1 = require("./nodeRef");
|
|
5
6
|
const nodeConfig_1 = require("./nodeConfig");
|
|
@@ -49,15 +50,15 @@ function SetChildren(node) {
|
|
|
49
50
|
}
|
|
50
51
|
function AddPreReqTemplate(node) {
|
|
51
52
|
return new Promise(resolve => {
|
|
52
|
-
thread_1.Thread(function () {
|
|
53
|
+
(0, thread_1.Thread)(function () {
|
|
53
54
|
var preNodes;
|
|
54
55
|
injector_1.Injector.Scope(node.injector, () => preNodes = decorators_1.PreReqTemplate.Get(node.component));
|
|
55
|
-
thread_1.Schedule(function () {
|
|
56
|
+
(0, thread_1.Schedule)(function () {
|
|
56
57
|
if (node.destroyed)
|
|
57
58
|
return;
|
|
58
59
|
nodeRef_1.NodeRef.InitAll(preNodes);
|
|
59
60
|
});
|
|
60
|
-
thread_1.Thread(function () {
|
|
61
|
+
(0, thread_1.Thread)(function () {
|
|
61
62
|
if (node.destroyed)
|
|
62
63
|
return;
|
|
63
64
|
for (var x = 0; x < preNodes.length; x++)
|
|
@@ -80,7 +81,7 @@ function AddPreReqTemplate(node) {
|
|
|
80
81
|
});
|
|
81
82
|
}
|
|
82
83
|
function AddTemplate(node, init) {
|
|
83
|
-
thread_1.Thread(function () {
|
|
84
|
+
(0, thread_1.Thread)(function () {
|
|
84
85
|
if (node.destroyed)
|
|
85
86
|
return;
|
|
86
87
|
var nodes;
|
|
@@ -89,10 +90,10 @@ function AddTemplate(node, init) {
|
|
|
89
90
|
});
|
|
90
91
|
if (!Array.isArray(nodes))
|
|
91
92
|
nodes = [nodes];
|
|
92
|
-
thread_1.Schedule(function () {
|
|
93
|
+
(0, thread_1.Schedule)(function () {
|
|
93
94
|
nodeRef_1.NodeRef.InitAll(nodes);
|
|
94
95
|
});
|
|
95
|
-
thread_1.Thread(function () {
|
|
96
|
+
(0, thread_1.Thread)(function () {
|
|
96
97
|
if (node.destroyed)
|
|
97
98
|
return;
|
|
98
99
|
if (init)
|
|
@@ -107,7 +108,7 @@ function AddTemplate(node, init) {
|
|
|
107
108
|
});
|
|
108
109
|
});
|
|
109
110
|
if (node.component.Bound !== component_1.Component.prototype.Bound)
|
|
110
|
-
thread_1.After(function () {
|
|
111
|
+
(0, thread_1.After)(function () {
|
|
111
112
|
nodeConfig_1.NodeConfig.scheduleUpdate(() => setTimeout(() => node.component.Bound(), 0));
|
|
112
113
|
});
|
|
113
114
|
});
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
import { BoundNodeFunctionParam, IBoundNodeBase, NodeDefinition } from "./boundNode.types";
|
|
2
2
|
import { Component, ComponentConstructor } from "./component";
|
|
3
3
|
import { NodeRefType } from "./nodeRef";
|
|
4
|
-
export
|
|
4
|
+
export type ComponentNodeEvents<E = void> = {
|
|
5
5
|
[P in keyof E]: {
|
|
6
6
|
(data?: E[P]): void;
|
|
7
7
|
};
|
|
@@ -18,7 +18,7 @@ export interface ComponentNodeFunctionParam<D = void, E = void> extends BoundNod
|
|
|
18
18
|
(): D | Promise<D>;
|
|
19
19
|
};
|
|
20
20
|
}
|
|
21
|
-
export
|
|
21
|
+
export type ComponentNodeFunction<D = void, T = void, E = void> = (nodeDef: ComponentNodeFunctionParam<D, E>, templates?: T) => IComponentNode<D, T, E>;
|
|
22
22
|
export interface IComponentNodeBase<D, T, E> extends IBoundNodeBase {
|
|
23
23
|
nodeDef: ComponentNodeFunctionParam<D, E>;
|
|
24
24
|
constructor: ComponentConstructor<D, T, E>;
|
package/Node/elementNode.js
CHANGED
|
@@ -1,5 +1,6 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.ElementNode = void 0;
|
|
3
4
|
const boundNode_1 = require("./boundNode");
|
|
4
5
|
const nodeConfig_1 = require("./nodeConfig");
|
|
5
6
|
const injector_1 = require("../Utils/injector");
|
|
@@ -59,18 +60,18 @@ function ScheduleSetData(node, scope) {
|
|
|
59
60
|
});
|
|
60
61
|
}
|
|
61
62
|
function SetDefaultData(node) {
|
|
62
|
-
thread_1.Synch(function () {
|
|
63
|
+
(0, thread_1.Synch)(function () {
|
|
63
64
|
var nodes;
|
|
64
65
|
injector_1.Injector.Scope(node.injector, function () {
|
|
65
66
|
nodes = CreateNodeArray(node.childrenFunc, true);
|
|
66
67
|
});
|
|
67
68
|
if (nodes.length > 0) {
|
|
68
|
-
thread_1.Schedule(function () {
|
|
69
|
+
(0, thread_1.Schedule)(function () {
|
|
69
70
|
if (node.destroyed)
|
|
70
71
|
return;
|
|
71
72
|
nodeRef_1.NodeRef.InitAll(nodes);
|
|
72
73
|
});
|
|
73
|
-
thread_1.Thread(function () {
|
|
74
|
+
(0, thread_1.Thread)(function () {
|
|
74
75
|
if (node.destroyed)
|
|
75
76
|
return;
|
|
76
77
|
DetachAndAddNodes(node, [], [nodes]);
|
|
@@ -79,7 +80,7 @@ function SetDefaultData(node) {
|
|
|
79
80
|
});
|
|
80
81
|
}
|
|
81
82
|
function SetData(node, value, init = false) {
|
|
82
|
-
thread_1.Synch(function () {
|
|
83
|
+
(0, thread_1.Synch)(function () {
|
|
83
84
|
var newNodesMap = new Map();
|
|
84
85
|
var values = value || valueDefault;
|
|
85
86
|
if (!Array.isArray(values))
|
|
@@ -99,7 +100,7 @@ function SetData(node, value, init = false) {
|
|
|
99
100
|
injector_1.Injector.Scope(node.injector, function () {
|
|
100
101
|
nodes = CreateNodeArray(node.childrenFunc, value);
|
|
101
102
|
});
|
|
102
|
-
thread_1.Schedule(function () {
|
|
103
|
+
(0, thread_1.Schedule)(function () {
|
|
103
104
|
if (node.destroyed || newNodesMap.size === 0)
|
|
104
105
|
return;
|
|
105
106
|
nodeRef_1.NodeRef.InitAll(nodes);
|
|
@@ -117,7 +118,7 @@ function SetData(node, value, init = false) {
|
|
|
117
118
|
node.nodesMap.clear();
|
|
118
119
|
}
|
|
119
120
|
node.nodesMap = newNodesMap;
|
|
120
|
-
thread_1.Thread(function () {
|
|
121
|
+
(0, thread_1.Thread)(function () {
|
|
121
122
|
if (node.destroyed)
|
|
122
123
|
return;
|
|
123
124
|
if (init)
|
|
@@ -15,10 +15,10 @@ export interface ElementNodeFunctionParam<T> extends BoundNodeFunctionParam {
|
|
|
15
15
|
(): T | Array<T> | Promise<Array<T>> | Promise<T>;
|
|
16
16
|
};
|
|
17
17
|
}
|
|
18
|
-
export
|
|
18
|
+
export type ElementChildrenFunction<T> = {
|
|
19
19
|
(data?: T): string | NodeRefTypes | NodeRefTypes[];
|
|
20
20
|
};
|
|
21
|
-
export
|
|
21
|
+
export type ElementNodeFunction<T> = {
|
|
22
22
|
(nodeDef: ElementNodeFunctionParam<T>, children?: ElementChildrenFunction<T>): INodeRefBase;
|
|
23
23
|
};
|
|
24
24
|
export interface IElementNodeBase<T> extends IBoundNodeBase {
|
package/Node/nodeConfig.js
CHANGED
package/Node/nodeRef.js
CHANGED
|
@@ -1,5 +1,6 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.NodeRef = exports.NodeRefType = void 0;
|
|
3
4
|
const nodeConfig_1 = require("./nodeConfig");
|
|
4
5
|
const injector_1 = require("../Utils/injector");
|
|
5
6
|
const boundNode_1 = require("./boundNode");
|
package/Node/nodeRef.types.d.ts
CHANGED
|
@@ -18,4 +18,4 @@ export interface INodeRefBase {
|
|
|
18
18
|
export interface INodeRef extends INodeRefBase {
|
|
19
19
|
type: NodeRefType.NodeRef;
|
|
20
20
|
}
|
|
21
|
-
export
|
|
21
|
+
export type NodeRefTypes = INodeRef | IBoundNode | IElementNode<any> | IComponentNode<any, any, any>;
|
package/Store/Diff/diffAsync.js
CHANGED
|
@@ -1,10 +1,12 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.DiffAsync = void 0;
|
|
3
4
|
const diffTree_1 = require("./diffTree");
|
|
4
5
|
const workerQueue_1 = require("./workerQueue");
|
|
5
6
|
const diffWorker_1 = require("./diffWorker");
|
|
6
|
-
const diffCnstr = diffTree_1.DiffTreeScope();
|
|
7
|
+
const diffCnstr = (0, diffTree_1.DiffTreeScope)();
|
|
7
8
|
class DiffAsync {
|
|
9
|
+
workerQueue;
|
|
8
10
|
constructor(keyFunc) {
|
|
9
11
|
this.workerQueue = new workerQueue_1.WorkerQueue(diffWorker_1.DiffWorker.Create());
|
|
10
12
|
this.workerQueue.Push({ method: "create", arguments: [keyFunc.toString()] });
|
package/Store/Diff/diffSync.js
CHANGED
|
@@ -1,8 +1,10 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.DiffSync = void 0;
|
|
3
4
|
const diffTree_1 = require("./diffTree");
|
|
4
|
-
const diffCnstr = diffTree_1.DiffTreeScope();
|
|
5
|
+
const diffCnstr = (0, diffTree_1.DiffTreeScope)();
|
|
5
6
|
class DiffSync {
|
|
7
|
+
diffTree;
|
|
6
8
|
constructor(keyFunc) {
|
|
7
9
|
this.diffTree = new diffCnstr(keyFunc);
|
|
8
10
|
}
|
package/Store/Diff/diffTree.d.ts
CHANGED
package/Store/Diff/diffTree.js
CHANGED
|
@@ -1,5 +1,6 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.DiffTreeScope = void 0;
|
|
3
4
|
function DiffTreeScope(worker) {
|
|
4
5
|
const ctx = this;
|
|
5
6
|
if (ctx && worker) {
|
|
@@ -38,9 +39,10 @@ function DiffTreeScope(worker) {
|
|
|
38
39
|
return !(jsonConstructor === value.constructor || Array.isArray(value));
|
|
39
40
|
}
|
|
40
41
|
class DiffTree {
|
|
42
|
+
keyFunc;
|
|
43
|
+
rootStateMap = new Map();
|
|
41
44
|
constructor(keyFunc) {
|
|
42
45
|
this.keyFunc = keyFunc;
|
|
43
|
-
this.rootStateMap = new Map();
|
|
44
46
|
}
|
|
45
47
|
static GetKeyRef(key) {
|
|
46
48
|
return `___DiffTreeKeyRef.${key}`;
|
package/Store/Diff/diffWorker.js
CHANGED
|
@@ -1,7 +1,10 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.WorkerQueue = void 0;
|
|
3
4
|
const list_1 = require("../../Utils/list");
|
|
4
5
|
class WorkerQueue {
|
|
6
|
+
callbacks;
|
|
7
|
+
worker;
|
|
5
8
|
constructor(worker) {
|
|
6
9
|
this.worker = worker;
|
|
7
10
|
this.callbacks = list_1.List.Create();
|
package/Store/Store/store.js
CHANGED
|
@@ -1,21 +1,22 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.Store = void 0;
|
|
3
4
|
const observableTree_1 = require("../Tree/observableTree");
|
|
4
5
|
const storeWriter_1 = require("./storeWriter");
|
|
5
6
|
class Store {
|
|
7
|
+
observableTree = new observableTree_1.ObservableTree();
|
|
8
|
+
storeWriter = new storeWriter_1.StoreWriter(this.observableTree);
|
|
9
|
+
rootScope = this.observableTree.Scope("ROOT", root => root);
|
|
10
|
+
get Root() {
|
|
11
|
+
return this.rootScope;
|
|
12
|
+
}
|
|
6
13
|
constructor(init) {
|
|
7
|
-
this.observableTree = new observableTree_1.ObservableTree();
|
|
8
|
-
this.storeWriter = new storeWriter_1.StoreWriter(this.observableTree);
|
|
9
|
-
this.rootScope = this.observableTree.Scope("ROOT", root => root);
|
|
10
14
|
if (init)
|
|
11
15
|
this.Write(init);
|
|
12
16
|
}
|
|
13
|
-
get Root() {
|
|
14
|
-
return this.rootScope;
|
|
15
|
-
}
|
|
16
17
|
Action(action) {
|
|
17
|
-
var
|
|
18
|
-
action(
|
|
18
|
+
var proxy = this.observableTree.Get("ROOT");
|
|
19
|
+
action(proxy, this.storeWriter);
|
|
19
20
|
}
|
|
20
21
|
Write(data) {
|
|
21
22
|
this.Action((root, writer) => writer.Write(root, data));
|
|
@@ -25,7 +26,6 @@ class Store {
|
|
|
25
26
|
}
|
|
26
27
|
Destroy() {
|
|
27
28
|
this.rootScope.Destroy();
|
|
28
|
-
this.observableTree.Destroy();
|
|
29
29
|
}
|
|
30
30
|
}
|
|
31
31
|
exports.Store = Store;
|
|
@@ -10,7 +10,7 @@ export declare class StoreAsync {
|
|
|
10
10
|
}, init?: any);
|
|
11
11
|
Scope<T, R>(id: string, func: {
|
|
12
12
|
(val: T): R;
|
|
13
|
-
}): import("..").ObservableScope<R>;
|
|
13
|
+
}): import("..").ObservableScope<T | R>;
|
|
14
14
|
Action<T>(id: string, action: {
|
|
15
15
|
(val: T, writer: StoreAsyncWriter): Promise<void>;
|
|
16
16
|
}): Promise<void>;
|
|
@@ -1,10 +1,16 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.StoreAsync = void 0;
|
|
3
4
|
const observableTree_1 = require("../Tree/observableTree");
|
|
4
5
|
const diffAsync_1 = require("../Diff/diffAsync");
|
|
5
6
|
const storeAsyncWriter_1 = require("./storeAsyncWriter");
|
|
6
7
|
const asyncQueue_1 = require("../../Utils/asyncQueue");
|
|
7
8
|
class StoreAsync {
|
|
9
|
+
idFunc;
|
|
10
|
+
diffAsync;
|
|
11
|
+
observableTree;
|
|
12
|
+
asyncWriter;
|
|
13
|
+
asyncQueue;
|
|
8
14
|
constructor(idFunc, init) {
|
|
9
15
|
this.idFunc = idFunc;
|
|
10
16
|
this.diffAsync = new diffAsync_1.DiffAsync(this.idFunc);
|
|
@@ -22,10 +28,7 @@ class StoreAsync {
|
|
|
22
28
|
}
|
|
23
29
|
async Action(id, action) {
|
|
24
30
|
await this.asyncQueue.Next(async () => {
|
|
25
|
-
|
|
26
|
-
if (id)
|
|
27
|
-
node = this.observableTree.GetNode(id);
|
|
28
|
-
await action(node && node.Proxy, this.asyncWriter);
|
|
31
|
+
await action(id && this.observableTree.Get(id), this.asyncWriter);
|
|
29
32
|
});
|
|
30
33
|
}
|
|
31
34
|
async Write(data) {
|
|
@@ -41,7 +44,6 @@ class StoreAsync {
|
|
|
41
44
|
Destroy() {
|
|
42
45
|
this.asyncQueue.Stop();
|
|
43
46
|
this.diffAsync.Destroy();
|
|
44
|
-
this.observableTree.Destroy();
|
|
45
47
|
}
|
|
46
48
|
}
|
|
47
49
|
exports.StoreAsync = StoreAsync;
|
|
@@ -1,6 +1,5 @@
|
|
|
1
1
|
import { DiffAsync } from "../Diff/diffAsync";
|
|
2
2
|
import { ObservableTree } from "../Tree/observableTree";
|
|
3
|
-
import { ObservableProxy } from "../Tree/observableProxy";
|
|
4
3
|
export declare class StoreAsyncWriter {
|
|
5
4
|
private idFunc;
|
|
6
5
|
private diffAsync;
|
|
@@ -8,9 +7,9 @@ export declare class StoreAsyncWriter {
|
|
|
8
7
|
constructor(idFunc: {
|
|
9
8
|
(val: any): string;
|
|
10
9
|
}, diffAsync: DiffAsync, observableTree: ObservableTree);
|
|
11
|
-
Write<T>(source: T
|
|
12
|
-
Merge<T>(source: T
|
|
13
|
-
Push<T>(source: Array<T
|
|
14
|
-
Splice<T>(source: Array<T
|
|
10
|
+
Write<T>(source: T, data: any): Promise<void>;
|
|
11
|
+
Merge<T>(source: T, data: Partial<T>): Promise<void>;
|
|
12
|
+
Push<T>(source: Array<T>, data: T): Promise<void>;
|
|
13
|
+
Splice<T>(source: Array<T>, start: number, deleteCount?: number, ...items: Array<T>): Promise<void>;
|
|
15
14
|
private ApplyChanges;
|
|
16
15
|
}
|
|
@@ -1,44 +1,44 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.StoreAsyncWriter = void 0;
|
|
3
4
|
class StoreAsyncWriter {
|
|
5
|
+
idFunc;
|
|
6
|
+
diffAsync;
|
|
7
|
+
observableTree;
|
|
4
8
|
constructor(idFunc, diffAsync, observableTree) {
|
|
5
9
|
this.idFunc = idFunc;
|
|
6
10
|
this.diffAsync = diffAsync;
|
|
7
11
|
this.observableTree = observableTree;
|
|
8
12
|
}
|
|
9
13
|
async Write(source, data) {
|
|
10
|
-
|
|
14
|
+
let path;
|
|
11
15
|
if (source) {
|
|
12
|
-
|
|
13
|
-
path = proxy.___node.Path;
|
|
16
|
+
path = this.observableTree.GetPathOf(source);
|
|
14
17
|
}
|
|
15
18
|
else {
|
|
16
19
|
path = this.idFunc(data);
|
|
17
20
|
if (!path)
|
|
18
21
|
throw new Error("data must have an id");
|
|
19
22
|
}
|
|
20
|
-
|
|
23
|
+
let diff = await this.diffAsync.DiffPath(path, data);
|
|
21
24
|
this.ApplyChanges(diff);
|
|
22
25
|
}
|
|
23
26
|
async Merge(source, data) {
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
var diff = await this.diffAsync.DiffBatch(message);
|
|
27
|
+
const rootPath = this.observableTree.GetPathOf(source);
|
|
28
|
+
const keys = Object.keys(data);
|
|
29
|
+
const message = keys.map(key => ({ path: `${rootPath}.${key}`, value: data[key] }));
|
|
30
|
+
const diff = await this.diffAsync.DiffBatch(message);
|
|
29
31
|
this.ApplyChanges(diff);
|
|
30
32
|
}
|
|
31
33
|
async Push(source, data) {
|
|
32
|
-
|
|
33
|
-
var rootPath = proxy.___node.Path;
|
|
34
|
+
const rootPath = this.observableTree.GetPathOf(source);
|
|
34
35
|
var lengthPath = `${rootPath}.length`;
|
|
35
36
|
var length = await this.diffAsync.GetPath(lengthPath);
|
|
36
37
|
var diff = await this.diffAsync.DiffPath(`${rootPath}.${length}`, data);
|
|
37
38
|
this.ApplyChanges(diff);
|
|
38
39
|
}
|
|
39
40
|
async Splice(source, start, deleteCount, ...items) {
|
|
40
|
-
var
|
|
41
|
-
var rootPath = proxy.___node.Path;
|
|
41
|
+
var rootPath = this.observableTree.GetPathOf(source);
|
|
42
42
|
var array = await this.diffAsync.GetPath(rootPath);
|
|
43
43
|
array = array.slice();
|
|
44
44
|
array.splice(start, deleteCount, ...items);
|
package/Store/Store/storeSync.js
CHANGED
|
@@ -1,23 +1,24 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.StoreSync = void 0;
|
|
3
4
|
const diffSync_1 = require("../Diff/diffSync");
|
|
4
5
|
const observableTree_1 = require("../Tree/observableTree");
|
|
5
6
|
const storeSyncWriter_1 = require("./storeSyncWriter");
|
|
6
7
|
class StoreSync {
|
|
8
|
+
diffSync = new diffSync_1.DiffSync();
|
|
9
|
+
observableTree = new observableTree_1.ObservableTree();
|
|
10
|
+
storeWriter = new storeSyncWriter_1.StoreSyncWriter(this.diffSync, this.observableTree);
|
|
11
|
+
rootScope = this.observableTree.Scope("ROOT", root => root);
|
|
12
|
+
get Root() {
|
|
13
|
+
return this.rootScope;
|
|
14
|
+
}
|
|
7
15
|
constructor(init) {
|
|
8
|
-
this.diffSync = new diffSync_1.DiffSync();
|
|
9
|
-
this.observableTree = new observableTree_1.ObservableTree();
|
|
10
|
-
this.storeWriter = new storeSyncWriter_1.StoreSyncWriter(this.diffSync, this.observableTree);
|
|
11
|
-
this.rootScope = this.observableTree.Scope("ROOT", root => root);
|
|
12
16
|
if (init)
|
|
13
17
|
this.Write(init);
|
|
14
18
|
}
|
|
15
|
-
get Root() {
|
|
16
|
-
return this.rootScope;
|
|
17
|
-
}
|
|
18
19
|
Action(action) {
|
|
19
|
-
var
|
|
20
|
-
action(
|
|
20
|
+
var proxy = this.observableTree.Get("ROOT");
|
|
21
|
+
action(proxy, this.storeWriter);
|
|
21
22
|
}
|
|
22
23
|
Write(data) {
|
|
23
24
|
this.Action((root, writer) => writer.Write(root, data));
|
|
@@ -27,7 +28,6 @@ class StoreSync {
|
|
|
27
28
|
}
|
|
28
29
|
Destroy() {
|
|
29
30
|
this.rootScope.Destroy();
|
|
30
|
-
this.observableTree.Destroy();
|
|
31
31
|
}
|
|
32
32
|
}
|
|
33
33
|
exports.StoreSync = StoreSync;
|
|
@@ -1,13 +1,12 @@
|
|
|
1
1
|
import { ObservableTree } from "../Tree/observableTree";
|
|
2
|
-
import { ObservableProxy } from "../Tree/observableProxy";
|
|
3
2
|
import { DiffSync } from "../Diff/diffSync";
|
|
4
3
|
export declare class StoreSyncWriter {
|
|
5
4
|
private diffSync;
|
|
6
5
|
private observableTree;
|
|
7
6
|
constructor(diffSync: DiffSync, observableTree: ObservableTree);
|
|
8
|
-
Write<T>(source: T
|
|
9
|
-
Merge<T>(source: T
|
|
10
|
-
Push<T>(source: Array<T
|
|
11
|
-
Splice<T>(source: Array<T
|
|
7
|
+
Write<T>(source: T, data: any): void;
|
|
8
|
+
Merge<T>(source: T, data: Partial<T>): void;
|
|
9
|
+
Push<T>(source: Array<T>, data: T): void;
|
|
10
|
+
Splice<T>(source: Array<T>, start: number, deleteCount?: number, ...items: Array<T>): void;
|
|
12
11
|
private ApplyChanges;
|
|
13
12
|
}
|