vasille 3.0.2 → 3.2.0

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 (105) hide show
  1. package/README.md +10 -10
  2. package/lib/core/core.js +40 -24
  3. package/lib/core/ivalue.js +1 -2
  4. package/lib/index.js +20 -22
  5. package/lib/node/app.js +7 -7
  6. package/lib/node/node.js +47 -360
  7. package/lib/node/watch.js +5 -6
  8. package/lib/{binding → runner/web/binding}/attribute.js +1 -1
  9. package/lib/{binding → runner/web/binding}/binding.js +1 -1
  10. package/lib/{binding → runner/web/binding}/class.js +3 -1
  11. package/lib/{binding → runner/web/binding}/style.js +2 -1
  12. package/lib/runner/web/runner.js +165 -0
  13. package/lib/tsconfig.tsbuildinfo +1 -1
  14. package/lib/value/expression.js +3 -2
  15. package/lib/value/pointer.js +8 -12
  16. package/lib/value/reference.js +2 -2
  17. package/lib/views/array-view.js +1 -1
  18. package/lib/views/base-view.js +3 -3
  19. package/lib/views/map-view.js +1 -1
  20. package/lib/views/repeat-node.js +5 -6
  21. package/lib/views/set-view.js +3 -3
  22. package/package.json +31 -25
  23. package/types/core/core.d.ts +14 -13
  24. package/types/index.d.ts +22 -24
  25. package/types/node/app.d.ts +8 -7
  26. package/types/node/node.d.ts +49 -144
  27. package/types/node/runner.d.ts +10 -0
  28. package/types/node/watch.d.ts +7 -6
  29. package/types/{binding → runner/web/binding}/attribute.d.ts +4 -4
  30. package/types/{binding → runner/web/binding}/binding.d.ts +2 -2
  31. package/types/runner/web/binding/class.d.ts +11 -0
  32. package/types/{binding → runner/web/binding}/style.d.ts +4 -4
  33. package/types/runner/web/runner.d.ts +42 -0
  34. package/types/tsconfig-types.tsbuildinfo +1 -1
  35. package/types/value/expression.d.ts +2 -2
  36. package/types/value/pointer.d.ts +1 -1
  37. package/types/value/reference.d.ts +1 -1
  38. package/types/views/array-view.d.ts +5 -5
  39. package/types/views/base-view.d.ts +7 -6
  40. package/types/views/map-view.d.ts +3 -3
  41. package/types/views/repeat-node.d.ts +8 -7
  42. package/types/views/set-view.d.ts +5 -4
  43. package/lib/core/config.js +0 -3
  44. package/lib/models/array-model.js +0 -147
  45. package/lib/models/listener.js +0 -66
  46. package/lib/models/map-model.js +0 -59
  47. package/lib/models/model.js +0 -1
  48. package/lib/models/object-model.js +0 -78
  49. package/lib/models/set-model.js +0 -55
  50. package/lib/spec/html.js +0 -1
  51. package/lib/spec/react.js +0 -1
  52. package/lib/spec/svg.js +0 -1
  53. package/lib/tsconfig-build.tsbuildinfo +0 -1
  54. package/lib/value/mirror.js +0 -42
  55. package/lib/views/object-view.js +0 -17
  56. package/lib-node/binding/attribute.js +0 -34
  57. package/lib-node/binding/binding.js +0 -32
  58. package/lib-node/binding/class.js +0 -46
  59. package/lib-node/binding/style.js +0 -36
  60. package/lib-node/core/config.js +0 -6
  61. package/lib-node/core/core.js +0 -101
  62. package/lib-node/core/destroyable.js +0 -14
  63. package/lib-node/core/errors.js +0 -22
  64. package/lib-node/core/ivalue.js +0 -19
  65. package/lib-node/functional/options.js +0 -2
  66. package/lib-node/functional/safety.js +0 -12
  67. package/lib-node/index.js +0 -51
  68. package/lib-node/models/array-model.js +0 -152
  69. package/lib-node/models/listener.js +0 -70
  70. package/lib-node/models/map-model.js +0 -63
  71. package/lib-node/models/model.js +0 -2
  72. package/lib-node/models/object-model.js +0 -82
  73. package/lib-node/models/set-model.js +0 -59
  74. package/lib-node/node/app.js +0 -34
  75. package/lib-node/node/node.js +0 -656
  76. package/lib-node/node/watch.js +0 -26
  77. package/lib-node/spec/html.js +0 -2
  78. package/lib-node/spec/react.js +0 -2
  79. package/lib-node/spec/svg.js +0 -2
  80. package/lib-node/tsconfig-build-node.tsbuildinfo +0 -1
  81. package/lib-node/value/expression.js +0 -65
  82. package/lib-node/value/mirror.js +0 -46
  83. package/lib-node/value/pointer.js +0 -79
  84. package/lib-node/value/reference.js +0 -50
  85. package/lib-node/views/array-view.js +0 -21
  86. package/lib-node/views/base-view.js +0 -31
  87. package/lib-node/views/map-view.js +0 -18
  88. package/lib-node/views/object-view.js +0 -21
  89. package/lib-node/views/repeat-node.js +0 -53
  90. package/lib-node/views/set-view.js +0 -22
  91. package/types/binding/class.d.ts +0 -11
  92. package/types/core/config.d.ts +0 -3
  93. package/types/functional/options.d.ts +0 -10
  94. package/types/models/array-model.d.ts +0 -55
  95. package/types/models/listener.d.ts +0 -48
  96. package/types/models/map-model.d.ts +0 -34
  97. package/types/models/model.d.ts +0 -14
  98. package/types/models/object-model.d.ts +0 -38
  99. package/types/models/set-model.d.ts +0 -33
  100. package/types/spec/html.d.ts +0 -975
  101. package/types/spec/react.d.ts +0 -4
  102. package/types/spec/svg.d.ts +0 -314
  103. package/types/value/mirror.d.ts +0 -33
  104. package/types/views/object-view.d.ts +0 -10
  105. /package/lib/{functional/options.js → node/runner.js} +0 -0
@@ -1,101 +0,0 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.Reactive = void 0;
4
- const destroyable_js_1 = require("./destroyable.js");
5
- const expression_1 = require("../value/expression");
6
- const reference_1 = require("../value/reference");
7
- const pointer_1 = require("../value/pointer");
8
- /**
9
- * A reactive object
10
- * @class Reactive
11
- * @extends Destroyable
12
- */
13
- class Reactive extends destroyable_js_1.Destroyable {
14
- constructor(input) {
15
- super();
16
- /**
17
- * A list of user-defined values
18
- * @type {Set}
19
- */
20
- this._watch = new Set();
21
- /**
22
- * A list of user-defined bindings
23
- * @type {Set}
24
- */
25
- this.bindings = new Set();
26
- this.input = input;
27
- }
28
- /**
29
- * Create a reference
30
- * @param value {*} value to reference
31
- */
32
- ref(value) {
33
- const ref = new reference_1.Reference(value);
34
- this._watch.add(ref);
35
- return ref;
36
- }
37
- /**
38
- * Create a forward-only pointer
39
- * @param value {IValue} value to point
40
- */
41
- forward(value) {
42
- const mirror = new pointer_1.Pointer(value);
43
- this._watch.add(mirror);
44
- return mirror;
45
- }
46
- /**
47
- * Creates a pointer
48
- * @param value {*} default value to point
49
- */
50
- own(value) {
51
- const pointer = new pointer_1.OwningPointer(value);
52
- this._watch.add(pointer);
53
- return pointer;
54
- }
55
- /**
56
- * Register a model/dependency
57
- */
58
- register(data) {
59
- this.bindings.add(data);
60
- return data;
61
- }
62
- release(data) {
63
- this.bindings.delete(data);
64
- }
65
- /**
66
- * Creates a watcher
67
- * @param func {function} function to run on any argument change
68
- * @param values
69
- */
70
- watch(func, ...values) {
71
- this._watch.add(new expression_1.Expression(func, ...values));
72
- }
73
- /**
74
- * Creates a computed value
75
- * @param func {function} function to run on any argument change
76
- * @param values
77
- * @return {IValue} the created ivalue
78
- */
79
- expr(func, ...values) {
80
- const res = new expression_1.Expression(func, ...values);
81
- this._watch.add(res);
82
- return res;
83
- }
84
- runOnDestroy(func) {
85
- if (this.onDestroy) {
86
- console.warn(new Error("You rewrite onDestroy existing handler"));
87
- console.log(this.onDestroy);
88
- }
89
- this.onDestroy = func;
90
- }
91
- destroy() {
92
- var _a;
93
- super.destroy();
94
- this._watch.forEach(value => value.destroy());
95
- this._watch.clear();
96
- this.bindings.forEach(binding => binding.destroy());
97
- this.bindings.clear();
98
- (_a = this.onDestroy) === null || _a === void 0 ? void 0 : _a.call(this);
99
- }
100
- }
101
- exports.Reactive = Reactive;
@@ -1,14 +0,0 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.Destroyable = void 0;
4
- /**
5
- * Mark an object which can be destroyed
6
- * @class Destroyable
7
- */
8
- class Destroyable {
9
- /**
10
- * Garbage collector method
11
- */
12
- destroy() { }
13
- }
14
- exports.Destroyable = Destroyable;
@@ -1,22 +0,0 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.notOverwritten = notOverwritten;
4
- exports.internalError = internalError;
5
- exports.userError = userError;
6
- exports.wrongBinding = wrongBinding;
7
- const reportIt = "Report it here: https://gitlab.com/vasille-js/vasille-js/-/issues";
8
- function notOverwritten() {
9
- console.error("Vasille-SFP: Internal error", "Must be overwritten", reportIt);
10
- return "not-overwritten";
11
- }
12
- function internalError(msg) {
13
- console.error("Vasille-SFP: Internal error", msg, reportIt);
14
- return "internal-error";
15
- }
16
- function userError(msg, err) {
17
- console.error("Vasille-SFP: User error", msg);
18
- return err;
19
- }
20
- function wrongBinding(msg) {
21
- return userError(msg, "wrong-binding");
22
- }
@@ -1,19 +0,0 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.IValue = void 0;
4
- const destroyable_js_1 = require("./destroyable.js");
5
- /**
6
- * Interface which describes a value
7
- * @class IValue
8
- * @extends Destroyable
9
- */
10
- class IValue extends destroyable_js_1.Destroyable {
11
- toJSON() {
12
- return this.$;
13
- }
14
- toString() {
15
- var _a, _b;
16
- return (_b = (_a = this.$) === null || _a === void 0 ? void 0 : _a.toString()) !== null && _b !== void 0 ? _b : "iValue<void>";
17
- }
18
- }
19
- exports.IValue = IValue;
@@ -1,2 +0,0 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
@@ -1,12 +0,0 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.reportError = void 0;
4
- exports.setErrorHandler = setErrorHandler;
5
- let reportError = (e) => {
6
- console.error(e);
7
- console.log("Docs Link /");
8
- };
9
- exports.reportError = reportError;
10
- function setErrorHandler(handler) {
11
- exports.reportError = handler;
12
- }
package/lib-node/index.js DELETED
@@ -1,51 +0,0 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.reportError = exports.setErrorHandler = exports.config = exports.userError = exports.Watch = exports.Reactive = exports.Binding = exports.Expression = exports.Portal = exports.App = exports.Extension = exports.Tag = exports.INode = exports.Fragment = exports.SetView = exports.MapView = exports.ArrayView = exports.Listener = exports.BaseView = exports.SetModel = exports.MapModel = exports.proxyArrayModel = exports.ArrayModel = exports.Pointer = exports.Reference = exports.IValue = exports.Destroyable = void 0;
4
- const config_1 = require("./core/config");
5
- Object.defineProperty(exports, "config", { enumerable: true, get: function () { return config_1.config; } });
6
- const destroyable_1 = require("./core/destroyable");
7
- Object.defineProperty(exports, "Destroyable", { enumerable: true, get: function () { return destroyable_1.Destroyable; } });
8
- const core_1 = require("./core/core");
9
- Object.defineProperty(exports, "Reactive", { enumerable: true, get: function () { return core_1.Reactive; } });
10
- const ivalue_1 = require("./core/ivalue");
11
- Object.defineProperty(exports, "IValue", { enumerable: true, get: function () { return ivalue_1.IValue; } });
12
- const safety_1 = require("./functional/safety");
13
- Object.defineProperty(exports, "reportError", { enumerable: true, get: function () { return safety_1.reportError; } });
14
- Object.defineProperty(exports, "setErrorHandler", { enumerable: true, get: function () { return safety_1.setErrorHandler; } });
15
- const array_model_1 = require("./models/array-model");
16
- Object.defineProperty(exports, "ArrayModel", { enumerable: true, get: function () { return array_model_1.ArrayModel; } });
17
- Object.defineProperty(exports, "proxyArrayModel", { enumerable: true, get: function () { return array_model_1.proxyArrayModel; } });
18
- const listener_1 = require("./models/listener");
19
- Object.defineProperty(exports, "Listener", { enumerable: true, get: function () { return listener_1.Listener; } });
20
- const map_model_1 = require("./models/map-model");
21
- Object.defineProperty(exports, "MapModel", { enumerable: true, get: function () { return map_model_1.MapModel; } });
22
- const set_model_1 = require("./models/set-model");
23
- Object.defineProperty(exports, "SetModel", { enumerable: true, get: function () { return set_model_1.SetModel; } });
24
- const app_1 = require("./node/app");
25
- Object.defineProperty(exports, "App", { enumerable: true, get: function () { return app_1.App; } });
26
- Object.defineProperty(exports, "Portal", { enumerable: true, get: function () { return app_1.Portal; } });
27
- const node_1 = require("./node/node");
28
- Object.defineProperty(exports, "Extension", { enumerable: true, get: function () { return node_1.Extension; } });
29
- Object.defineProperty(exports, "Fragment", { enumerable: true, get: function () { return node_1.Fragment; } });
30
- Object.defineProperty(exports, "INode", { enumerable: true, get: function () { return node_1.INode; } });
31
- Object.defineProperty(exports, "Tag", { enumerable: true, get: function () { return node_1.Tag; } });
32
- const expression_1 = require("./value/expression");
33
- Object.defineProperty(exports, "Expression", { enumerable: true, get: function () { return expression_1.Expression; } });
34
- const pointer_1 = require("./value/pointer");
35
- Object.defineProperty(exports, "Pointer", { enumerable: true, get: function () { return pointer_1.Pointer; } });
36
- const reference_1 = require("./value/reference");
37
- Object.defineProperty(exports, "Reference", { enumerable: true, get: function () { return reference_1.Reference; } });
38
- const array_view_1 = require("./views/array-view");
39
- Object.defineProperty(exports, "ArrayView", { enumerable: true, get: function () { return array_view_1.ArrayView; } });
40
- const base_view_1 = require("./views/base-view");
41
- Object.defineProperty(exports, "BaseView", { enumerable: true, get: function () { return base_view_1.BaseView; } });
42
- const map_view_1 = require("./views/map-view");
43
- Object.defineProperty(exports, "MapView", { enumerable: true, get: function () { return map_view_1.MapView; } });
44
- const set_view_1 = require("./views/set-view");
45
- Object.defineProperty(exports, "SetView", { enumerable: true, get: function () { return set_view_1.SetView; } });
46
- const binding_1 = require("./binding/binding");
47
- Object.defineProperty(exports, "Binding", { enumerable: true, get: function () { return binding_1.Binding; } });
48
- const errors_1 = require("./core/errors");
49
- Object.defineProperty(exports, "userError", { enumerable: true, get: function () { return errors_1.userError; } });
50
- const watch_1 = require("./node/watch");
51
- Object.defineProperty(exports, "Watch", { enumerable: true, get: function () { return watch_1.Watch; } });
@@ -1,152 +0,0 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.ArrayModel = void 0;
4
- exports.proxyArrayModel = proxyArrayModel;
5
- const listener_1 = require("./listener");
6
- /**
7
- * Model based on Array class
8
- * @extends Array
9
- * @implements IModel
10
- */
11
- class ArrayModel extends Array {
12
- /**
13
- * @param data {Array} input data
14
- */
15
- constructor(data) {
16
- super();
17
- this.passive = false;
18
- this.listener = new listener_1.Listener();
19
- if (data instanceof Array) {
20
- for (let i = 0; i < data.length; i++) {
21
- super.push(data[i]);
22
- }
23
- }
24
- }
25
- /* Array members */
26
- /**
27
- * Calls Array.fill and notify about changes
28
- * @param value {*} value to fill with
29
- * @param start {?number} begin index
30
- * @param end {?number} end index
31
- */
32
- fill(value, start, end) {
33
- this.passive = true;
34
- if (!start) {
35
- start = 0;
36
- }
37
- if (!end) {
38
- end = this.length;
39
- }
40
- for (let i = start; i < end; i++) {
41
- this.listener.emitRemoved(this[i], this[i]);
42
- this[i] = value;
43
- this.listener.emitAdded(value, value);
44
- }
45
- this.passive = false;
46
- return this;
47
- }
48
- /**
49
- * Calls Array.pop and notify about changes
50
- * @return {*} removed value
51
- */
52
- pop() {
53
- this.passive = true;
54
- const v = super.pop();
55
- if (v !== undefined) {
56
- this.listener.emitRemoved(v, v);
57
- }
58
- this.passive = false;
59
- return v;
60
- }
61
- /**
62
- * Calls Array.push and notify about changes
63
- * @param items {...*} values to push
64
- * @return {number} new length of array
65
- */
66
- push(...items) {
67
- this.passive = true;
68
- items.forEach(item => {
69
- this.listener.emitAdded(item, item);
70
- super.push(item);
71
- });
72
- this.passive = false;
73
- return this.length;
74
- }
75
- /**
76
- * Calls Array.shift and notify about changed
77
- * @return {*} the shifted value
78
- */
79
- shift() {
80
- this.passive = true;
81
- const v = super.shift();
82
- if (v !== undefined) {
83
- this.listener.emitRemoved(v, v);
84
- }
85
- this.passive = false;
86
- return v;
87
- }
88
- /**
89
- * Calls Array.splice and notify about changed
90
- * @param start {number} start index
91
- * @param deleteCount {?number} delete count
92
- * @param items {...*}
93
- * @return {ArrayModel} a pointer to this
94
- */
95
- splice(start, deleteCount, ...items) {
96
- this.passive = true;
97
- start = Math.min(start, this.length);
98
- deleteCount = typeof deleteCount === "number" ? deleteCount : this.length - start;
99
- const before = this[start + deleteCount];
100
- for (let i = 0; i < deleteCount; i++) {
101
- const index = start + deleteCount - i - 1;
102
- if (this[index] !== undefined) {
103
- this.listener.emitRemoved(this[index], this[index]);
104
- }
105
- }
106
- for (let i = 0; i < items.length; i++) {
107
- this.listener.emitAdded(before, items[i]);
108
- }
109
- this.passive = false;
110
- return new ArrayModel(super.splice(start, deleteCount, ...items));
111
- }
112
- /**
113
- * Calls Array.unshift and notify about changed
114
- * @param items {...*} values to insert
115
- * @return {number} the length after prepend
116
- */
117
- unshift(...items) {
118
- this.passive = true;
119
- for (let i = 0; i < items.length; i++) {
120
- this.listener.emitAdded(this[i], items[i]);
121
- }
122
- const r = super.unshift(...items);
123
- this.passive = false;
124
- return r;
125
- }
126
- replace(at, with_) {
127
- this.passive = true;
128
- this.listener.emitAdded(this[at], with_);
129
- this.listener.emitRemoved(this[at], this[at]);
130
- this[at] = with_;
131
- this.passive = false;
132
- return this;
133
- }
134
- destroy() {
135
- this.splice(0);
136
- }
137
- }
138
- exports.ArrayModel = ArrayModel;
139
- function proxyArrayModel(arr) {
140
- return new Proxy(arr, {
141
- set(target, p, newValue, receiver) {
142
- if (!arr.passive && typeof p === "string") {
143
- const index = parseInt(p);
144
- if (Number.isFinite(index)) {
145
- arr.replace(index, newValue);
146
- return true;
147
- }
148
- }
149
- return Reflect.set(target, p, newValue, receiver);
150
- },
151
- });
152
- }
@@ -1,70 +0,0 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.Listener = void 0;
4
- /**
5
- * Represent a listener for a model
6
- * @class Listener
7
- */
8
- class Listener {
9
- constructor() {
10
- /**
11
- * Functions to run on adding new items
12
- * @type Set
13
- */
14
- this.onAdded = new Set();
15
- /**
16
- * Functions to run on item removing
17
- * @type Set
18
- */
19
- this.onRemoved = new Set();
20
- }
21
- /**
22
- * Emits added event to listeners
23
- * @param index {*} index of value
24
- * @param value {*} value of added item
25
- */
26
- emitAdded(index, value) {
27
- this.onAdded.forEach(handler => {
28
- handler(index, value);
29
- });
30
- }
31
- /**
32
- * Emits removed event to listeners
33
- * @param index {*} index of removed value
34
- * @param value {*} value of removed item
35
- */
36
- emitRemoved(index, value) {
37
- this.onRemoved.forEach(handler => {
38
- handler(index, value);
39
- });
40
- }
41
- /**
42
- * Adds a handler to added event
43
- * @param handler {function} function to run on event emitting
44
- */
45
- onAdd(handler) {
46
- this.onAdded.add(handler);
47
- }
48
- /**
49
- * Adds a handler to removed event
50
- * @param handler {function} function to run on event emitting
51
- */
52
- onRemove(handler) {
53
- this.onRemoved.add(handler);
54
- }
55
- /**
56
- * Removes an handler from added event
57
- * @param handler {function} handler to remove
58
- */
59
- offAdd(handler) {
60
- this.onAdded.delete(handler);
61
- }
62
- /**
63
- * Removes an handler form removed event
64
- * @param handler {function} handler to remove
65
- */
66
- offRemove(handler) {
67
- this.onRemoved.delete(handler);
68
- }
69
- }
70
- exports.Listener = Listener;
@@ -1,63 +0,0 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.MapModel = void 0;
4
- const listener_1 = require("./listener");
5
- /**
6
- * A Map based memory
7
- * @class MapModel
8
- * @extends Map
9
- * @implements IModel
10
- */
11
- class MapModel extends Map {
12
- /**
13
- * Constructs a map model
14
- * @param map {[*, *][]} input data
15
- */
16
- constructor(map) {
17
- super();
18
- this.listener = new listener_1.Listener();
19
- map === null || map === void 0 ? void 0 : map.forEach(([key, value]) => {
20
- super.set(key, value);
21
- });
22
- }
23
- /**
24
- * Calls Map.clear and notify about changes
25
- */
26
- clear() {
27
- this.forEach((value, key) => {
28
- this.listener.emitRemoved(key, value);
29
- });
30
- super.clear();
31
- }
32
- /**
33
- * Calls Map.delete and notify abut changes
34
- * @param key {*} key
35
- * @return {boolean} true if removed something, otherwise false
36
- */
37
- delete(key) {
38
- const tmp = super.get(key);
39
- if (tmp) {
40
- this.listener.emitRemoved(key, tmp);
41
- }
42
- return super.delete(key);
43
- }
44
- /**
45
- * Calls Map.set and notify abut changes
46
- * @param key {*} key
47
- * @param value {*} value
48
- * @return {MapModel} a pointer to this
49
- */
50
- set(key, value) {
51
- const tmp = super.get(key);
52
- if (tmp) {
53
- this.listener.emitRemoved(key, tmp);
54
- }
55
- super.set(key, value);
56
- this.listener.emitAdded(key, value);
57
- return this;
58
- }
59
- destroy() {
60
- this.clear();
61
- }
62
- }
63
- exports.MapModel = MapModel;
@@ -1,2 +0,0 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
@@ -1,82 +0,0 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.ObjectModel = void 0;
4
- const listener_1 = require("./listener");
5
- /**
6
- * Object based model
7
- * @extends Object
8
- */
9
- class ObjectModel extends Object {
10
- /**
11
- * Constructs a object model
12
- * @param obj {Object} input data
13
- */
14
- constructor(obj = {}) {
15
- super();
16
- this.container = Object.create(null);
17
- Object.defineProperty(this, "listener", {
18
- value: new listener_1.Listener(),
19
- writable: false,
20
- configurable: false,
21
- });
22
- for (const i in obj) {
23
- Object.defineProperty(this.container, i, {
24
- value: obj[i],
25
- configurable: true,
26
- writable: true,
27
- enumerable: true,
28
- });
29
- this.listener.emitAdded(i, obj[i]);
30
- }
31
- }
32
- /**
33
- * Gets a value of a field
34
- * @param key {string}
35
- * @return {*}
36
- */
37
- get(key) {
38
- return this.container[key];
39
- }
40
- /**
41
- * Sets an object property value
42
- * @param key {string} property name
43
- * @param v {*} property value
44
- * @return {ObjectModel} a pointer to this
45
- */
46
- set(key, v) {
47
- if (key in this.container) {
48
- this.listener.emitRemoved(key, this.container[key]);
49
- this.container[key] = v;
50
- }
51
- else {
52
- Object.defineProperty(this.container, key, {
53
- value: v,
54
- configurable: true,
55
- writable: true,
56
- enumerable: true,
57
- });
58
- }
59
- this.listener.emitAdded(key, this.container[key]);
60
- return this;
61
- }
62
- get values() {
63
- return this.container;
64
- }
65
- /**
66
- * Deletes an object property
67
- * @param key {string} property name
68
- */
69
- delete(key) {
70
- if (this.container[key]) {
71
- this.listener.emitRemoved(key, this.container[key]);
72
- delete this.container[key];
73
- }
74
- }
75
- enableReactivity() {
76
- this.listener.enableReactivity();
77
- }
78
- disableReactivity() {
79
- this.listener.disableReactivity();
80
- }
81
- }
82
- exports.ObjectModel = ObjectModel;
@@ -1,59 +0,0 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.SetModel = void 0;
4
- const listener_1 = require("./listener");
5
- /**
6
- * A Set based model
7
- * @class SetModel
8
- * @extends Set
9
- * @implements IModel
10
- */
11
- class SetModel extends Set {
12
- /**
13
- * Constructs a set model based on a set
14
- * @param set {Set} input data
15
- */
16
- constructor(set) {
17
- super();
18
- this.listener = new listener_1.Listener();
19
- set === null || set === void 0 ? void 0 : set.forEach(item => {
20
- super.add(item);
21
- });
22
- }
23
- /**
24
- * Calls Set.add and notify abut changes
25
- * @param value {*} value
26
- * @return {this} a pointer to this
27
- */
28
- add(value) {
29
- if (!super.has(value)) {
30
- this.listener.emitAdded(value, value);
31
- super.add(value);
32
- }
33
- return this;
34
- }
35
- /**
36
- * Calls Set.clear and notify abut changes
37
- */
38
- clear() {
39
- this.forEach(item => {
40
- this.listener.emitRemoved(item, item);
41
- });
42
- super.clear();
43
- }
44
- /**
45
- * Calls Set.delete and notify abut changes
46
- * @param value {*}
47
- * @return {boolean} true if a value was deleted, otherwise false
48
- */
49
- delete(value) {
50
- if (super.has(value)) {
51
- this.listener.emitRemoved(value, value);
52
- }
53
- return super.delete(value);
54
- }
55
- destroy() {
56
- this.clear();
57
- }
58
- }
59
- exports.SetModel = SetModel;