total5 0.0.1-1

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 (57) hide show
  1. package/503.html +65 -0
  2. package/CONTRIBUTING.md +55 -0
  3. package/LICENSE +211 -0
  4. package/README.md +32 -0
  5. package/api.js +289 -0
  6. package/bin/total5 +984 -0
  7. package/builders.js +1435 -0
  8. package/bundles.js +457 -0
  9. package/cache.js +58 -0
  10. package/changelog.txt +3 -0
  11. package/cluster.js +320 -0
  12. package/cms.js +625 -0
  13. package/controller.js +1419 -0
  14. package/cron.js +99 -0
  15. package/debug.js +539 -0
  16. package/edit.js +469 -0
  17. package/error.html +49 -0
  18. package/filestorage.js +1088 -0
  19. package/flow-flowstream.js +3152 -0
  20. package/flow.js +209 -0
  21. package/flowstream.js +1991 -0
  22. package/global.js +125 -0
  23. package/helpers/index.js +32 -0
  24. package/htmlparser.js +650 -0
  25. package/http.js +81 -0
  26. package/image.js +773 -0
  27. package/images.js +747 -0
  28. package/index.js +2658 -0
  29. package/jsonschema.js +691 -0
  30. package/ldap.js +792 -0
  31. package/mail.js +936 -0
  32. package/minificators.js +858 -0
  33. package/nosql-builder.js +440 -0
  34. package/nosql-querybuilder.js +316 -0
  35. package/nosql-reader.js +353 -0
  36. package/nosql-stream.js +617 -0
  37. package/nosql.js +763 -0
  38. package/openclient.js +219 -0
  39. package/package.json +32 -0
  40. package/pause.html +67 -0
  41. package/querybuilder.js +1361 -0
  42. package/release.js +167 -0
  43. package/routing.js +905 -0
  44. package/sourcemap.js +160 -0
  45. package/tangular.js +409 -0
  46. package/templates.js +145 -0
  47. package/templates.json +74 -0
  48. package/tms.js +384 -0
  49. package/tmsclient.js +125 -0
  50. package/todo.txt +7 -0
  51. package/tools/beta.sh +6 -0
  52. package/tools/release.sh +6 -0
  53. package/uibuilder.js +206 -0
  54. package/utils.js +6374 -0
  55. package/viewengine.js +880 -0
  56. package/websocket.js +1939 -0
  57. package/workers.js +129 -0
package/uibuilder.js ADDED
@@ -0,0 +1,206 @@
1
+ // UIBuilder compiler | https://uibuilder.totaljs.com
2
+ // The MIT License
3
+ // Copyright 2023 (c) Peter Širka <petersirka@gmail.com>
4
+
5
+ const REG_END = /;|\n/;
6
+ const REG_STRING = /'|"/g;
7
+
8
+ exports.compile = async function(opt, callback) {
9
+
10
+ if (!callback)
11
+ return new Promise((resolve, reject) => exports.compile(opt, (err, response) => err ? reject(err) : resolve(response)));
12
+
13
+ if (typeof(opt.schema) === 'string')
14
+ opt.schema = opt.schema.parseJSON();
15
+
16
+ var schema = opt.schema;
17
+ var instances = getInstances(schema);
18
+ var used = {};
19
+ var response = {};
20
+
21
+ for (let instance of instances)
22
+ used[instance.component] = '#';
23
+
24
+ if (opt.local) {
25
+ response.components = used;
26
+ } else {
27
+ let components = await getComponents(schema, used, opt.download);
28
+ response.components = components;
29
+ }
30
+
31
+ for (let key in schema) {
32
+ if (key !== 'components')
33
+ response[key] = schema[key];
34
+ }
35
+
36
+ response.inputs = schema.inputs;
37
+ response.outputs = schema.outputs;
38
+ response.children = schema.children;
39
+ response.compiled = true;
40
+
41
+ if (response.cssoutput)
42
+ response.css = response.cssoutput;
43
+
44
+ delete response.editor;
45
+ delete response.cssoutput;
46
+ delete response.csseditor;
47
+ delete response.csspreview;
48
+
49
+ callback(null, response);
50
+ };
51
+
52
+ exports.download = async function(opt, callback) {
53
+
54
+ if (!callback)
55
+ return new Promise((resolve, reject) => exports.download(opt, (err, response) => err ? reject(err) : resolve(response)));
56
+
57
+ try {
58
+ let response = await getComponents2(opt.components, opt.origin);
59
+ callback(null, response);
60
+ } catch (e) {
61
+ callback(e);
62
+ }
63
+
64
+ };
65
+
66
+ function getInstances(schema) {
67
+ var response = [];
68
+ var browse = function(parent) {
69
+
70
+ for (let arr of parent.children) {
71
+ for (let child of arr) {
72
+ let cloned = F.TUtils.clone(child);
73
+ cloned.children = undefined;
74
+ response.push(cloned);
75
+ browse(child);
76
+ }
77
+ }
78
+ };
79
+
80
+ browse(schema);
81
+ return response;
82
+ }
83
+
84
+ async function Download(url) {
85
+ return new Promise(function(resolve) {
86
+ let opt = {};
87
+ opt.url = url;
88
+ opt.method = 'GET';
89
+ opt.keepalive = true;
90
+ opt.insecure = true;
91
+ opt.callback = function(err, response) {
92
+ resolve(response.status === 200 ? (response.body.isJSON() ? response.body.parseJSON(true) : response.body) : '');
93
+ };
94
+ REQUEST(opt);
95
+ });
96
+ }
97
+
98
+ async function getComponents(schema, used, download) {
99
+
100
+ var components = {};
101
+ var arr = [];
102
+
103
+ for (let key in schema.components)
104
+ arr.push({ id: key, value: schema.components[key] });
105
+
106
+ for (let com of arr) {
107
+
108
+ if (com.value.indexOf('.json') === -1 & !used[com.id])
109
+ continue;
110
+
111
+ let url = com.value;
112
+ if (url[0] === '/')
113
+ url = schema.origin + url;
114
+
115
+ let body = await Download(url.format(com.id));
116
+
117
+ if (typeof(body) === 'string') {
118
+
119
+ let index = body.indexOf('exports.render');
120
+ if (index === -1) {
121
+ // without render
122
+ continue;
123
+ }
124
+
125
+ index += 14;
126
+
127
+ let end = body.substring(index).match(REG_END);
128
+ if (!end) {
129
+ // without end
130
+ continue;
131
+ }
132
+
133
+ let render = body.substring(body.indexOf('=', index) + 1, index + end.index).trim().replace(REG_STRING, '').format(com.id);
134
+
135
+ if (download) {
136
+ if (render.substring(0, 7) === 'base64 ') {
137
+ components[com.id] = render;
138
+ } else {
139
+ if (render[0] === '/')
140
+ render = schema.origin + render;
141
+ let html = await Download(render);
142
+ if (html)
143
+ components[com.id] = 'base64 ' + Buffer.from(encodeURIComponent(html), 'utf8').toString('base64');
144
+ }
145
+ } else
146
+ components[com.id] = render;
147
+ } else {
148
+ for (let key in body)
149
+ arr.push({ id: key, value: body[key] });
150
+ }
151
+ }
152
+
153
+ return components;
154
+ }
155
+
156
+ async function getComponents2(list, origin) {
157
+
158
+ var components = {};
159
+ var arr = [];
160
+
161
+ for (let key in list)
162
+ arr.push({ id: key, value: list[key] });
163
+
164
+ for (let com of arr) {
165
+
166
+ let url = com.value;
167
+ if (url[0] === '/')
168
+ url = origin + url;
169
+
170
+ let body = await Download(url.format(com.id));
171
+
172
+ if (typeof(body) === 'string') {
173
+
174
+ let index = body.indexOf('exports.render');
175
+ if (index === -1) {
176
+ // without render
177
+ continue;
178
+ }
179
+
180
+ index += 14;
181
+
182
+ let end = body.substring(index).match(REG_END);
183
+ if (!end) {
184
+ // without end
185
+ continue;
186
+ }
187
+
188
+ let render = body.substring(body.indexOf('=', index) + 1, index + end.index).trim().replace(REG_STRING, '').format(com.id);
189
+
190
+ if (render.substring(0, 7) === 'base64 ') {
191
+ components[com.id] = render;
192
+ } else {
193
+ if (render[0] === '/')
194
+ render = origin + render;
195
+ let html = await Download(render);
196
+ if (html)
197
+ components[com.id] = 'base64 ' + Buffer.from(encodeURIComponent(html), 'utf8').toString('base64');
198
+ }
199
+ } else {
200
+ for (let key in body)
201
+ arr.push({ id: key, value: body[key] });
202
+ }
203
+ }
204
+
205
+ return components;
206
+ }