@onetype/framework 2.0.45 → 2.0.46

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 (30) hide show
  1. package/addons/core/assets/back/functions/import.js +3 -3
  2. package/addons/core/commands/front/directives/run.js +1 -1
  3. package/addons/core/commands/front/directives/submit.js +1 -1
  4. package/addons/render/directives/front/items/self/100-if.js +25 -22
  5. package/addons/render/directives/front/items/self/1000-render.js +36 -33
  6. package/addons/render/directives/front/items/self/110-show.js +23 -20
  7. package/addons/render/directives/front/items/self/160-slot.js +33 -30
  8. package/addons/render/directives/front/items/self/200-for.js +71 -68
  9. package/addons/render/directives/front/items/self/2000-base.js +36 -33
  10. package/addons/render/directives/front/items/self/500-click-outside.js +37 -34
  11. package/addons/render/directives/front/items/self/500-events.js +1 -1
  12. package/addons/render/directives/front/items/self/500-mouse-enter.js +1 -1
  13. package/addons/render/directives/front/items/self/500-mouse-leave.js +1 -1
  14. package/addons/render/directives/front/items/self/650-fetch.js +150 -149
  15. package/addons/render/directives/front/items/self/660-form.js +217 -219
  16. package/addons/render/directives/front/items/self/700-text.js +42 -39
  17. package/addons/render/directives/front/items/self/750-html.js +38 -35
  18. package/addons/render/directives/front/items/self/750-node.js +1 -1
  19. package/addons/render/elements/front/items/directives/element.js +2 -2
  20. package/addons/render/pages/front/items/directives/change.js +1 -1
  21. package/addons/render/transforms/js/items/self/transform.js +1 -1
  22. package/lib/boot/load.js +105 -0
  23. package/lib/load.js +2 -1
  24. package/lib/src/classes/addon/classes/item/mixins/get.js +12 -1
  25. package/lib/src/classes/addon/classes/item/mixins/set.js +24 -2
  26. package/lib/src/classes/addon/mixins/items.js +48 -4
  27. package/lib/src/mixins/addons.js +27 -29
  28. package/lib/src/mixins/dependencies.js +24 -17
  29. package/package.json +1 -1
  30. package/lib/events.js +0 -106
@@ -1,4 +1,4 @@
1
- onetype.AddonReady('directives', function()
1
+ onetype.AddonReady('directives', function(directives)
2
2
  {
3
3
  directives.ItemAdd({
4
4
  id: 'ot-node',
@@ -1,4 +1,4 @@
1
- onetype.AddonReady('directives', (directives) =>
1
+ onetype.AddonReady('directives', function(directives)
2
2
  {
3
3
  directives.ItemAdd({
4
4
  id: 'ot-element',
@@ -6,7 +6,7 @@ onetype.AddonReady('directives', (directives) =>
6
6
  name: 'Element Load',
7
7
  description: 'Load and render elements using custom tag syntax. Automatically detects <e-{name}> tags and renders corresponding elements.',
8
8
  trigger: 'node',
9
- order: 1100,
9
+ order: 2500,
10
10
  strict: false,
11
11
  type: '1',
12
12
  code: function(data, item, compile, node, identifier)
@@ -1,4 +1,4 @@
1
- onetype.AddonReady('directives', function()
1
+ onetype.AddonReady('directives', function(directives)
2
2
  {
3
3
  directives.ItemAdd({
4
4
  id: 'ot-page',
@@ -1,4 +1,4 @@
1
- onetype.AddonReady('directives', function()
1
+ onetype.AddonReady('directives', function(directives)
2
2
  {
3
3
  directives.ItemAdd({
4
4
  id: 'ot-transform',
@@ -0,0 +1,105 @@
1
+ const otboot =
2
+ {
3
+ ready: () =>
4
+ {
5
+ window.onetype.Emit('@document.ready');
6
+ },
7
+
8
+ load: () =>
9
+ {
10
+ window.onetype.Emit('@document.load');
11
+ },
12
+
13
+ resize: () =>
14
+ {
15
+ window.onetype.Emit('@window.resize', {
16
+ width: window.innerWidth,
17
+ height: window.innerHeight
18
+ });
19
+ },
20
+
21
+ scroll: () =>
22
+ {
23
+ window.onetype.Emit('@window.scroll', {
24
+ x: window.scrollX,
25
+ y: window.scrollY
26
+ });
27
+ },
28
+
29
+ visibility: () =>
30
+ {
31
+ window.onetype.Emit('@document.visibility', {
32
+ hidden: document.hidden,
33
+ state: document.visibilityState
34
+ });
35
+ },
36
+
37
+ beforeunload: () =>
38
+ {
39
+ window.onetype.Emit('@window.beforeunload');
40
+ },
41
+
42
+ focus: () =>
43
+ {
44
+ window.onetype.Emit('@window.focus');
45
+ },
46
+
47
+ blur: () =>
48
+ {
49
+ window.onetype.Emit('@window.blur');
50
+ },
51
+
52
+ orientation: () =>
53
+ {
54
+ window.onetype.Emit('@window.orientation', {
55
+ angle: screen.orientation?.angle || window.orientation,
56
+ type: screen.orientation?.type || 'unknown'
57
+ });
58
+ },
59
+
60
+ online: () =>
61
+ {
62
+ window.onetype.Emit('@navigator.online');
63
+ },
64
+
65
+ offline: () =>
66
+ {
67
+ window.onetype.Emit('@navigator.offline');
68
+ },
69
+
70
+ popstate: (event) =>
71
+ {
72
+ window.onetype.Emit('@history.popstate', {
73
+ state: event.state,
74
+ pathname: window.location.pathname
75
+ });
76
+ }
77
+ };
78
+
79
+ document.addEventListener('visibilitychange', otboot.visibility);
80
+
81
+ window.addEventListener('resize', otboot.resize);
82
+ window.addEventListener('scroll', otboot.scroll);
83
+ window.addEventListener('beforeunload', otboot.beforeunload);
84
+ window.addEventListener('focus', otboot.focus);
85
+ window.addEventListener('blur', otboot.blur);
86
+ window.addEventListener('orientationchange', otboot.orientation);
87
+ window.addEventListener('online', otboot.online);
88
+ window.addEventListener('offline', otboot.offline);
89
+ window.addEventListener('popstate', otboot.popstate);
90
+
91
+ if(document.readyState === 'loading')
92
+ {
93
+ document.addEventListener('DOMContentLoaded', otboot.ready);
94
+ window.addEventListener('load', otboot.load);
95
+ }
96
+ else if(document.readyState === 'interactive')
97
+ {
98
+ otboot.ready();
99
+ window.addEventListener('load', otboot.load);
100
+ }
101
+ else
102
+ {
103
+ otboot.ready();
104
+ otboot.load();
105
+ }
package/lib/load.js CHANGED
@@ -3,7 +3,8 @@ import OneType from './src/onetype.js';
3
3
  const onetype = new OneType();
4
4
 
5
5
  /* Framework */
6
- onetype.Assets('framework', import.meta.url, { js: { path: '.', exclude: ['load.js', 'styles'] } });
6
+ onetype.Assets('framework', import.meta.url, { js: { path: '.', exclude: ['load.js', 'styles', 'boot'] } });
7
+ onetype.Assets('boot', import.meta.url, { js: 'boot' });
7
8
  onetype.Assets('styles', import.meta.url, { css: 'styles' });
8
9
 
9
10
  /* Core */
@@ -53,7 +53,18 @@ const AddonItemGet =
53
53
 
54
54
  if(callback)
55
55
  {
56
- this.addon.items.callbacks.get.forEach(callback => callback(this, key, value));
56
+ this.addon.items.callbacks.get.forEach(callback =>
57
+ {
58
+ try
59
+ {
60
+ callback(this, key, value);
61
+ }
62
+ catch(error)
63
+ {
64
+ this.addon.onetype.Error(500, 'Error in item get callback.');
65
+ }
66
+ });
67
+
57
68
  this.addon.onetype.Emit('@addon.item.get', this, key, value);
58
69
  }
59
70
 
@@ -40,7 +40,18 @@ const AddonItemSet =
40
40
 
41
41
  if(callback)
42
42
  {
43
- this.addon.items.callbacks.modify.forEach(callback => callback(this, key, value, prevValue));
43
+ this.addon.items.callbacks.modify.forEach(callback =>
44
+ {
45
+ try
46
+ {
47
+ callback(this, key, value, prevValue);
48
+ }
49
+ catch(error)
50
+ {
51
+ this.addon.onetype.Error(500, 'Error in item modify callback.');
52
+ }
53
+ });
54
+
44
55
  this.addon.onetype.Emit('@addon.item.modify', this, key, value, prevValue);
45
56
  }
46
57
 
@@ -48,7 +59,18 @@ const AddonItemSet =
48
59
 
49
60
  if(callback)
50
61
  {
51
- this.addon.items.callbacks.modified.forEach(callback => callback(this, key, value, prevValue));
62
+ this.addon.items.callbacks.modified.forEach(callback =>
63
+ {
64
+ try
65
+ {
66
+ callback(this, key, value, prevValue);
67
+ }
68
+ catch(error)
69
+ {
70
+ this.addon.onetype.Error(500, 'Error in item modified callback.');
71
+ }
72
+ });
73
+
52
74
  this.addon.onetype.Emit('@addon.item.modified', this, key, value, prevValue);
53
75
  }
54
76
  },
@@ -79,7 +79,18 @@ const AddonItems =
79
79
 
80
80
  if(callback)
81
81
  {
82
- this.items.callbacks.add.forEach(callback => callback(item));
82
+ this.items.callbacks.add.forEach(callback =>
83
+ {
84
+ try
85
+ {
86
+ callback(item);
87
+ }
88
+ catch(error)
89
+ {
90
+ this.onetype.Error(500, 'Error in item add callback.');
91
+ }
92
+ });
93
+
83
94
  this.onetype.Emit('@addon.item.add', item);
84
95
  }
85
96
 
@@ -92,7 +103,18 @@ const AddonItems =
92
103
 
93
104
  if(callback)
94
105
  {
95
- this.items.callbacks.added.forEach(callback => callback(item));
106
+ this.items.callbacks.added.forEach(callback =>
107
+ {
108
+ try
109
+ {
110
+ callback(item);
111
+ }
112
+ catch(error)
113
+ {
114
+ this.onetype.Error(500, 'Error in item added callback.');
115
+ }
116
+ });
117
+
96
118
  this.onetype.Emit('@addon.item.added', item);
97
119
  }
98
120
 
@@ -132,7 +154,18 @@ const AddonItems =
132
154
 
133
155
  if(callback)
134
156
  {
135
- this.items.callbacks.remove.forEach(callback => callback(item));
157
+ this.items.callbacks.remove.forEach(callback =>
158
+ {
159
+ try
160
+ {
161
+ callback(item);
162
+ }
163
+ catch(error)
164
+ {
165
+ this.onetype.Error(500, 'Error in item remove callback.');
166
+ }
167
+ });
168
+
136
169
  this.onetype.Emit('@addon.item.remove', item);
137
170
  }
138
171
 
@@ -140,7 +173,18 @@ const AddonItems =
140
173
 
141
174
  if(callback)
142
175
  {
143
- this.items.callbacks.removed.forEach(callback => callback(item));
176
+ this.items.callbacks.removed.forEach(callback =>
177
+ {
178
+ try
179
+ {
180
+ callback(item);
181
+ }
182
+ catch(error)
183
+ {
184
+ this.onetype.Error(500, 'Error in item removed callback.');
185
+ }
186
+ });
187
+
144
188
  this.onetype.Emit('@addon.item.removed', item);
145
189
  }
146
190
  },
@@ -26,15 +26,19 @@ const OneTypeAddons =
26
26
 
27
27
  if(callback)
28
28
  {
29
- try
29
+ this.addons.callbacks.add.forEach(callback =>
30
30
  {
31
- this.addons.callbacks.add.forEach(callback => callback(addon));
32
- this.Emit('@addon.add', addon);
33
- }
34
- catch(error)
35
- {
36
- this.Error(500, 'Error while performing addon add callback.', {addon: name});
37
- }
31
+ try
32
+ {
33
+ callback(addon);
34
+ }
35
+ catch(error)
36
+ {
37
+ this.Error(500, 'Error while performing addon add callback.', {addon: name});
38
+ }
39
+ });
40
+
41
+ this.Emit('@addon.add', addon);
38
42
  }
39
43
 
40
44
  return this.AddonGet(name);
@@ -70,15 +74,19 @@ const OneTypeAddons =
70
74
 
71
75
  if(callback)
72
76
  {
73
- try
77
+ this.addons.callbacks.remove.forEach(callback =>
74
78
  {
75
- this.addons.callbacks.remove.forEach(callback => callback(addon));
76
- this.Emit('@addon.remove', addon);
77
- }
78
- catch(error)
79
- {
80
- this.Error(500, 'Error while performing addon remove callback.', {addon: name});
81
- }
79
+ try
80
+ {
81
+ callback(addon);
82
+ }
83
+ catch(error)
84
+ {
85
+ this.Error(500, 'Error while performing addon remove callback.', {addon: name});
86
+ }
87
+ });
88
+
89
+ this.Emit('@addon.remove', addon);
82
90
  }
83
91
 
84
92
  addon.ItemsRemove(callback);
@@ -103,30 +111,20 @@ const OneTypeAddons =
103
111
  this.addons.callbacks[name].push(callback);
104
112
  },
105
113
 
106
- AddonReady(name, callback, instant = false)
114
+ AddonReady(name, callback)
107
115
  {
108
116
  const addon = this.AddonGet(name);
109
117
 
110
118
  if(addon)
111
119
  {
112
- if(instant)
113
- {
114
- return callback(addon);
115
- }
116
-
117
- return setTimeout(() => callback(addon));
120
+ return callback(addon);
118
121
  }
119
122
 
120
123
  this.AddonOn('add', (addon) =>
121
124
  {
122
125
  if(addon.GetName() === name)
123
126
  {
124
- if(instant)
125
- {
126
- return callback(addon);
127
- }
128
-
129
- return setTimeout(() => callback(addon));
127
+ callback(addon);
130
128
  }
131
129
  })
132
130
  }
@@ -36,18 +36,21 @@ const OneTypeDependencies =
36
36
 
37
37
  if(callback)
38
38
  {
39
- try
39
+ this.dependencies.callbacks.add.forEach(callback =>
40
40
  {
41
- this.dependencies.callbacks.add.forEach(callback => callback(dependency));
42
- this.Emit('@dependency.add', dependency);
43
- }
44
- catch(error)
45
- {
46
- this.Error(500, 'Error while performing dependency add callback.', {name});
47
- }
41
+ try
42
+ {
43
+ callback(dependency);
44
+ }
45
+ catch(error)
46
+ {
47
+ this.Error(500, 'Error while performing dependency add callback.', {name});
48
+ }
49
+ });
50
+
51
+ this.Emit('@dependency.add', dependency);
48
52
  }
49
53
 
50
-
51
54
  return this;
52
55
  },
53
56
 
@@ -67,15 +70,19 @@ const OneTypeDependencies =
67
70
 
68
71
  if(callback)
69
72
  {
70
- try
73
+ this.dependencies.callbacks.remove.forEach(callback =>
71
74
  {
72
- this.dependencies.callbacks.remove.forEach(callback => callback(dependency));
73
- this.Emit('@dependency.remove', dependency);
74
- }
75
- catch(error)
76
- {
77
- this.Error(500, 'Error while performing dependency remove callback.', {name});
78
- }
75
+ try
76
+ {
77
+ callback(dependency);
78
+ }
79
+ catch(error)
80
+ {
81
+ this.Error(500, 'Error while performing dependency remove callback.', {name});
82
+ }
83
+ });
84
+
85
+ this.Emit('@dependency.remove', dependency);
79
86
  }
80
87
 
81
88
  delete this.dependencies.items[name];
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@onetype/framework",
3
- "version": "2.0.45",
3
+ "version": "2.0.46",
4
4
  "description": "OneType Framework — Full-stack isomorphic JavaScript framework built from scratch. One addon abstraction powers databases, servers, commands, pages, directives, queues, and more.",
5
5
  "type": "module",
6
6
  "main": "lib/load.js",
package/lib/events.js DELETED
@@ -1,106 +0,0 @@
1
- const handleReady = () =>
2
- {
3
- window.onetype.Emit('@document.ready');
4
- };
5
-
6
- const handleLoad = () =>
7
- {
8
- window.onetype.Emit('@document.load');
9
- };
10
-
11
- const handleResize = () =>
12
- {
13
- window.onetype.Emit('@window.resize',
14
- {
15
- width: window.innerWidth,
16
- height: window.innerHeight
17
- });
18
- };
19
-
20
- const handleScroll = () =>
21
- {
22
- window.onetype.Emit('@window.scroll',
23
- {
24
- x: window.scrollX,
25
- y: window.scrollY
26
- });
27
- };
28
-
29
- const handleVisibility = () =>
30
- {
31
- window.onetype.Emit('@document.visibility',
32
- {
33
- hidden: document.hidden,
34
- state: document.visibilityState
35
- });
36
- };
37
-
38
- const handleBeforeUnload = () =>
39
- {
40
- window.onetype.Emit('@window.beforeunload');
41
- };
42
-
43
- const handleFocus = () =>
44
- {
45
- window.onetype.Emit('@window.focus');
46
- };
47
-
48
- const handleBlur = () =>
49
- {
50
- window.onetype.Emit('@window.blur');
51
- };
52
-
53
- const handleOrientation = () =>
54
- {
55
- window.onetype.Emit('@window.orientation',
56
- {
57
- angle: screen.orientation?.angle || window.orientation,
58
- type: screen.orientation?.type || 'unknown'
59
- });
60
- };
61
-
62
- const handleOnline = () =>
63
- {
64
- window.onetype.Emit('@navigator.online');
65
- };
66
-
67
- const handleOffline = () =>
68
- {
69
- window.onetype.Emit('@navigator.offline');
70
- };
71
-
72
- const handlePopstate = (event) =>
73
- {
74
- window.onetype.Emit('@history.popstate',
75
- {
76
- state: event.state,
77
- pathname: window.location.pathname
78
- });
79
- };
80
-
81
- if (document.readyState === 'loading')
82
- {
83
- document.addEventListener('DOMContentLoaded', handleReady);
84
- window.addEventListener('load', handleLoad);
85
- }
86
- else if (document.readyState === 'interactive')
87
- {
88
- handleReady();
89
- window.addEventListener('load', handleLoad);
90
- }
91
- else
92
- {
93
- handleReady();
94
- handleLoad();
95
- }
96
-
97
- window.addEventListener('resize', handleResize);
98
- window.addEventListener('scroll', handleScroll);
99
- document.addEventListener('visibilitychange', handleVisibility);
100
- window.addEventListener('beforeunload', handleBeforeUnload);
101
- window.addEventListener('focus', handleFocus);
102
- window.addEventListener('blur', handleBlur);
103
- window.addEventListener('orientationchange', handleOrientation);
104
- window.addEventListener('online', handleOnline);
105
- window.addEventListener('offline', handleOffline);
106
- window.addEventListener('popstate', handlePopstate);