vasille 3.0.2 → 3.1.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 (102) hide show
  1. package/README.md +5 -6
  2. package/lib/core/core.js +35 -13
  3. package/lib/core/ivalue.js +1 -2
  4. package/lib/index.js +20 -22
  5. package/lib/models/array-model.js +1 -1
  6. package/lib/models/map-model.js +2 -2
  7. package/lib/models/set-model.js +2 -2
  8. package/lib/node/app.js +7 -7
  9. package/lib/node/node.js +45 -360
  10. package/lib/node/watch.js +5 -6
  11. package/lib/{binding → runner/web/binding}/attribute.js +1 -1
  12. package/lib/{binding → runner/web/binding}/binding.js +1 -1
  13. package/lib/{binding → runner/web/binding}/class.js +1 -1
  14. package/lib/{binding → runner/web/binding}/style.js +1 -1
  15. package/lib/runner/web/runner.js +162 -0
  16. package/lib/tsconfig.tsbuildinfo +1 -1
  17. package/lib/value/expression.js +2 -2
  18. package/lib/value/pointer.js +7 -12
  19. package/lib/value/reference.js +2 -2
  20. package/lib/views/array-view.js +1 -1
  21. package/lib/views/base-view.js +3 -3
  22. package/lib/views/map-view.js +1 -1
  23. package/lib/views/repeat-node.js +5 -6
  24. package/lib/views/set-view.js +3 -3
  25. package/package.json +31 -25
  26. package/types/core/core.d.ts +14 -8
  27. package/types/index.d.ts +22 -24
  28. package/types/models/array-model.d.ts +2 -2
  29. package/types/models/map-model.d.ts +2 -2
  30. package/types/models/model.d.ts +2 -2
  31. package/types/models/set-model.d.ts +2 -2
  32. package/types/node/app.d.ts +8 -7
  33. package/types/node/node.d.ts +49 -144
  34. package/types/node/runner.d.ts +10 -0
  35. package/types/node/watch.d.ts +7 -6
  36. package/types/{binding → runner/web/binding}/attribute.d.ts +4 -4
  37. package/types/{binding → runner/web/binding}/binding.d.ts +2 -2
  38. package/types/runner/web/binding/class.d.ts +11 -0
  39. package/types/{binding → runner/web/binding}/style.d.ts +4 -4
  40. package/types/runner/web/runner.d.ts +42 -0
  41. package/types/tsconfig-types.tsbuildinfo +1 -1
  42. package/types/value/expression.d.ts +2 -2
  43. package/types/value/pointer.d.ts +1 -1
  44. package/types/value/reference.d.ts +1 -1
  45. package/types/views/array-view.d.ts +5 -5
  46. package/types/views/base-view.d.ts +7 -6
  47. package/types/views/map-view.d.ts +3 -3
  48. package/types/views/repeat-node.d.ts +8 -7
  49. package/types/views/set-view.d.ts +5 -4
  50. package/lib/core/config.js +0 -3
  51. package/lib/models/object-model.js +0 -78
  52. package/lib/spec/html.js +0 -1
  53. package/lib/spec/react.js +0 -1
  54. package/lib/spec/svg.js +0 -1
  55. package/lib/tsconfig-build.tsbuildinfo +0 -1
  56. package/lib/value/mirror.js +0 -42
  57. package/lib/views/object-view.js +0 -17
  58. package/lib-node/binding/attribute.js +0 -34
  59. package/lib-node/binding/binding.js +0 -32
  60. package/lib-node/binding/class.js +0 -46
  61. package/lib-node/binding/style.js +0 -36
  62. package/lib-node/core/config.js +0 -6
  63. package/lib-node/core/core.js +0 -101
  64. package/lib-node/core/destroyable.js +0 -14
  65. package/lib-node/core/errors.js +0 -22
  66. package/lib-node/core/ivalue.js +0 -19
  67. package/lib-node/functional/options.js +0 -2
  68. package/lib-node/functional/safety.js +0 -12
  69. package/lib-node/index.js +0 -51
  70. package/lib-node/models/array-model.js +0 -152
  71. package/lib-node/models/listener.js +0 -70
  72. package/lib-node/models/map-model.js +0 -63
  73. package/lib-node/models/model.js +0 -2
  74. package/lib-node/models/object-model.js +0 -82
  75. package/lib-node/models/set-model.js +0 -59
  76. package/lib-node/node/app.js +0 -34
  77. package/lib-node/node/node.js +0 -656
  78. package/lib-node/node/watch.js +0 -26
  79. package/lib-node/spec/html.js +0 -2
  80. package/lib-node/spec/react.js +0 -2
  81. package/lib-node/spec/svg.js +0 -2
  82. package/lib-node/tsconfig-build-node.tsbuildinfo +0 -1
  83. package/lib-node/value/expression.js +0 -65
  84. package/lib-node/value/mirror.js +0 -46
  85. package/lib-node/value/pointer.js +0 -79
  86. package/lib-node/value/reference.js +0 -50
  87. package/lib-node/views/array-view.js +0 -21
  88. package/lib-node/views/base-view.js +0 -31
  89. package/lib-node/views/map-view.js +0 -18
  90. package/lib-node/views/object-view.js +0 -21
  91. package/lib-node/views/repeat-node.js +0 -53
  92. package/lib-node/views/set-view.js +0 -22
  93. package/types/binding/class.d.ts +0 -11
  94. package/types/core/config.d.ts +0 -3
  95. package/types/functional/options.d.ts +0 -10
  96. package/types/models/object-model.d.ts +0 -38
  97. package/types/spec/html.d.ts +0 -975
  98. package/types/spec/react.d.ts +0 -4
  99. package/types/spec/svg.d.ts +0 -314
  100. package/types/value/mirror.d.ts +0 -33
  101. package/types/views/object-view.d.ts +0 -10
  102. /package/lib/{functional/options.js → node/runner.js} +0 -0
@@ -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;
@@ -1,34 +0,0 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.Portal = exports.App = void 0;
4
- const node_1 = require("./node");
5
- /**
6
- * Represents a Vasille.js application
7
- * @class App
8
- * @extends AppNode
9
- */
10
- class App extends node_1.Root {
11
- /**
12
- * Constructs an app node
13
- * @param node {Element} The root of application
14
- * @param input
15
- */
16
- constructor(node, input) {
17
- super(input);
18
- this.node = node;
19
- }
20
- appendNode(node) {
21
- this.node.appendChild(node);
22
- }
23
- }
24
- exports.App = App;
25
- class Portal extends node_1.Fragment {
26
- constructor(input) {
27
- super(input, ":portal");
28
- this.node = input.node;
29
- }
30
- appendNode(node) {
31
- this.node.appendChild(node);
32
- }
33
- }
34
- exports.Portal = Portal;