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.
Files changed (58) hide show
  1. package/DOM/domNodeConfig.js +2 -1
  2. package/DOM/elements.js +1 -0
  3. package/DOM/index.js +17 -6
  4. package/DOM/svgElements.js +1 -0
  5. package/DOM/utils.js +1 -0
  6. package/DOM/window.js +1 -0
  7. package/Node/boundNode.js +1 -0
  8. package/Node/boundNode.types.d.ts +2 -2
  9. package/Node/component.d.ts +1 -1
  10. package/Node/component.js +13 -7
  11. package/Node/componentNode.js +8 -7
  12. package/Node/componentNode.types.d.ts +2 -2
  13. package/Node/elementNode.js +7 -6
  14. package/Node/elementNode.types.d.ts +2 -2
  15. package/Node/nodeConfig.js +1 -0
  16. package/Node/nodeRef.js +1 -0
  17. package/Node/nodeRef.types.d.ts +1 -1
  18. package/Store/Diff/diffAsync.js +3 -1
  19. package/Store/Diff/diffSync.js +3 -1
  20. package/Store/Diff/diffTree.d.ts +1 -1
  21. package/Store/Diff/diffTree.js +3 -1
  22. package/Store/Diff/diffWorker.js +1 -0
  23. package/Store/Diff/workerQueue.js +3 -0
  24. package/Store/Store/store.js +9 -9
  25. package/Store/Store/storeAsync.d.ts +1 -1
  26. package/Store/Store/storeAsync.js +7 -5
  27. package/Store/Store/storeAsyncWriter.d.ts +4 -5
  28. package/Store/Store/storeAsyncWriter.js +13 -13
  29. package/Store/Store/storeSync.js +10 -10
  30. package/Store/Store/storeSyncWriter.d.ts +4 -5
  31. package/Store/Store/storeSyncWriter.js +12 -14
  32. package/Store/Store/storeWriter.d.ts +4 -5
  33. package/Store/Store/storeWriter.js +13 -14
  34. package/Store/Tree/observableScope.js +8 -5
  35. package/Store/Tree/observableTree.d.ts +21 -12
  36. package/Store/Tree/observableTree.js +194 -67
  37. package/Store/index.js +5 -4
  38. package/Utils/animation.js +22 -12
  39. package/Utils/asyncQueue.js +3 -4
  40. package/Utils/decorators.d.ts +1 -1
  41. package/Utils/decorators.js +1 -0
  42. package/Utils/emitter.d.ts +2 -2
  43. package/Utils/emitter.js +1 -0
  44. package/Utils/index.js +16 -5
  45. package/Utils/injector.js +3 -0
  46. package/Utils/list.js +1 -0
  47. package/Utils/router.js +13 -9
  48. package/Utils/thread.d.ts +1 -1
  49. package/Utils/thread.js +1 -0
  50. package/index.js +2 -1
  51. package/jTemplates.js +521 -735
  52. package/jTemplates.js.map +1 -1
  53. package/package.json +1 -1
  54. package/web.export.js +21 -9
  55. package/Store/Tree/observableNode.d.ts +0 -32
  56. package/Store/Tree/observableNode.js +0 -148
  57. package/Store/Tree/observableProxy.d.ts +0 -17
  58. package/Store/Tree/observableProxy.js +0 -119
@@ -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 __export(m) {
3
- for (var p in m) if (!exports.hasOwnProperty(p)) exports[p] = m[p];
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
- __export(require("./elements"));
7
- __export(require("./svgElements"));
8
- __export(require("./utils"));
17
+ __exportStar(require("./elements"), exports);
18
+ __exportStar(require("./svgElements"), exports);
19
+ __exportStar(require("./utils"), exports);
@@ -1,5 +1,6 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.circle = exports.g = exports.svg = void 0;
3
4
  const elementNode_1 = require("../Node/elementNode");
4
5
  const svgNs = "http://www.w3.org/2000/svg";
5
6
  function svg(nodeDef, children) {
package/DOM/utils.js CHANGED
@@ -1,5 +1,6 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.SetProperties = void 0;
3
4
  function SetValue(target, value) {
4
5
  switch (target.nodeName) {
5
6
  case "INPUT":
package/DOM/window.js CHANGED
@@ -1,3 +1,4 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.wndw = void 0;
3
4
  exports.wndw = typeof window !== "undefined" ? window : (new (require("jsdom").JSDOM("")).window);
package/Node/boundNode.js CHANGED
@@ -1,5 +1,6 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.BoundNode = void 0;
3
4
  const nodeConfig_1 = require("./nodeConfig");
4
5
  const observableScope_1 = require("../Store/Tree/observableScope");
5
6
  var BoundNode;
@@ -1,9 +1,9 @@
1
1
  import { NodeRefType } from "./nodeRef";
2
2
  import { INodeRefBase } from "./nodeRef.types";
3
- export declare type FunctionOr<T> = {
3
+ export type FunctionOr<T> = {
4
4
  (...args: Array<any>): T | Promise<T>;
5
5
  } | T;
6
- export declare type NodeRefEvents = {
6
+ export type NodeRefEvents = {
7
7
  [name: string]: {
8
8
  (...args: Array<any>): void;
9
9
  };
@@ -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 declare type ComponentConstructor<D, T, E> = {
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
- constructor(data, templates, nodeRef, componentEvents) {
9
- this.nodeRef = nodeRef;
10
- this.componentEvents = componentEvents;
11
- this.scope = new observableScope_1.ObservableScope(data);
12
- this.templates = templates || {};
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
  }
@@ -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 declare type ComponentNodeEvents<E = void> = {
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 declare type ComponentNodeFunction<D = void, T = void, E = void> = (nodeDef: ComponentNodeFunctionParam<D, E>, templates?: T) => IComponentNode<D, T, E>;
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>;
@@ -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 declare type ElementChildrenFunction<T> = {
18
+ export type ElementChildrenFunction<T> = {
19
19
  (data?: T): string | NodeRefTypes | NodeRefTypes[];
20
20
  };
21
- export declare type ElementNodeFunction<T> = {
21
+ export type ElementNodeFunction<T> = {
22
22
  (nodeDef: ElementNodeFunctionParam<T>, children?: ElementChildrenFunction<T>): INodeRefBase;
23
23
  };
24
24
  export interface IElementNodeBase<T> extends IBoundNodeBase {
@@ -1,4 +1,5 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.NodeConfig = void 0;
3
4
  const domNodeConfig_1 = require("../DOM/domNodeConfig");
4
5
  exports.NodeConfig = domNodeConfig_1.DOMNodeConfig;
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");
@@ -18,4 +18,4 @@ export interface INodeRefBase {
18
18
  export interface INodeRef extends INodeRefBase {
19
19
  type: NodeRefType.NodeRef;
20
20
  }
21
- export declare type NodeRefTypes = INodeRef | IBoundNode | IElementNode<any> | IComponentNode<any, any, any>;
21
+ export type NodeRefTypes = INodeRef | IBoundNode | IElementNode<any> | IComponentNode<any, any, any>;
@@ -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()] });
@@ -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
  }
@@ -2,7 +2,7 @@ export interface IDiffMethod {
2
2
  method: "create" | "diffpath" | "diffbatch" | "updatepath" | "getpath";
3
3
  arguments: Array<any>;
4
4
  }
5
- export declare type IDiffResponse = {
5
+ export type IDiffResponse = {
6
6
  path: string;
7
7
  value: any;
8
8
  }[];
@@ -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}`;
@@ -1,5 +1,6 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.DiffWorker = void 0;
3
4
  const diffTree_1 = require("./diffTree");
4
5
  var DiffWorker;
5
6
  (function (DiffWorker) {
@@ -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();
@@ -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 node = this.observableTree.GetNode("ROOT");
18
- action(node.Proxy, this.storeWriter);
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
- var node;
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 | ObservableProxy, data: any): Promise<void>;
12
- Merge<T>(source: T | ObservableProxy, data: Partial<T>): Promise<void>;
13
- Push<T>(source: Array<T> | ObservableProxy, data: T): Promise<void>;
14
- Splice<T>(source: Array<T> | ObservableProxy, start: number, deleteCount?: number, ...items: Array<T>): Promise<void>;
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
- var path;
14
+ let path;
11
15
  if (source) {
12
- var proxy = source;
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
- var diff = await this.diffAsync.DiffPath(path, data);
23
+ let diff = await this.diffAsync.DiffPath(path, data);
21
24
  this.ApplyChanges(diff);
22
25
  }
23
26
  async Merge(source, data) {
24
- var proxy = source;
25
- var rootPath = proxy.___node.Path;
26
- var keys = Object.keys(data);
27
- var message = keys.map(key => ({ path: `${rootPath}.${key}`, value: data[key] }));
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
- var proxy = source;
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 proxy = source;
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);
@@ -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 node = this.observableTree.GetNode("ROOT");
20
- action(node.Proxy, this.storeWriter);
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 | ObservableProxy, data: any): void;
9
- Merge<T>(source: T | ObservableProxy, data: Partial<T>): void;
10
- Push<T>(source: Array<T> | ObservableProxy, data: T): void;
11
- Splice<T>(source: Array<T> | ObservableProxy, start: number, deleteCount?: number, ...items: Array<T>): any[];
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
  }