webfast 0.1.38 → 0.1.42
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.
- package/app/content/js/webfast.js +144 -10
- package/example.js +61 -3
- package/modules/express/init.js +9 -0
- package/package.json +1 -1
@@ -6,8 +6,71 @@ web.fast = {
|
|
6
6
|
console.log(`Action Function`,data,ell);
|
7
7
|
},
|
8
8
|
functions : {
|
9
|
+
isURL : function(str) {
|
10
|
+
// Regular expression to check if a string is a URL
|
11
|
+
var pattern = new RegExp('^(https?:\\/\\/)?'+ // protocol
|
12
|
+
'((([a-z\\d]([a-z\\d-]*[a-z\\d])*)\\.)+[a-z]{2,}|'+ // domain name
|
13
|
+
'((\\d{1,3}\\.){3}\\d{1,3}))'+ // OR ip (v4) address
|
14
|
+
'(\\:\\d+)?(\\/[-a-z\\d%_.~+]*)*'+ // port and path
|
15
|
+
'(\\?[;&a-z\\d%_.~+=-]*)?'+ // query string
|
16
|
+
'(\\#[-a-z\\d_]*)?$','i'); // fragment locator
|
17
|
+
return pattern.test(str);
|
18
|
+
},
|
9
19
|
form : function(data,ell) {
|
10
20
|
console.log(`Handle Form Function`);
|
21
|
+
},
|
22
|
+
list : function(data) {
|
23
|
+
console.log(`When we have a list function run`);
|
24
|
+
console.log(data);
|
25
|
+
// Get ellement data
|
26
|
+
const ellData = web.fast.tmp.list[data.ell];
|
27
|
+
|
28
|
+
// So we have the html
|
29
|
+
const ell = ellData.ell;
|
30
|
+
|
31
|
+
// Now loop through list item
|
32
|
+
for (let listI in data.list) {
|
33
|
+
const listItem = data.list[listI];
|
34
|
+
const uuid = `${listItem.uuid}`;
|
35
|
+
delete listItem.uuid;
|
36
|
+
console.log(uuid,`The List Item`,listItem);
|
37
|
+
const div = jQuery(ellData.html).clone();
|
38
|
+
jQuery(div).attr(`id`,uuid);
|
39
|
+
|
40
|
+
// Now check for listitem
|
41
|
+
for (let key in listItem) {
|
42
|
+
// Now we have listitems
|
43
|
+
let itemList = listItem[key];
|
44
|
+
|
45
|
+
// Get item
|
46
|
+
console.log(`The Item List`);
|
47
|
+
console.log(itemList);
|
48
|
+
const setText = itemList.text;
|
49
|
+
jQuery(div).find(`[webfast-ell="${key}"]`).each(function() {
|
50
|
+
var elementType = $(this).prop('tagName').toLowerCase();
|
51
|
+
console.log(`Set Element`, elementType);
|
52
|
+
switch (elementType) {
|
53
|
+
case 'img':
|
54
|
+
if (isURL(setText)) {
|
55
|
+
$(this).attr('src', setText);
|
56
|
+
} else {
|
57
|
+
console.error(`List missing URL for image`);
|
58
|
+
}
|
59
|
+
|
60
|
+
break;
|
61
|
+
case 'input':
|
62
|
+
$(this).val(setText);
|
63
|
+
break;
|
64
|
+
default:
|
65
|
+
$(this).html(setText);
|
66
|
+
break;
|
67
|
+
}
|
68
|
+
});
|
69
|
+
|
70
|
+
}
|
71
|
+
|
72
|
+
jQuery(ell).append(div);
|
73
|
+
}
|
11
74
|
}
|
12
75
|
},
|
13
76
|
que : {
|
@@ -26,9 +89,15 @@ web.fast = {
|
|
26
89
|
}
|
27
90
|
},
|
28
91
|
tmp : {
|
29
|
-
int : {}
|
92
|
+
int : {},
|
93
|
+
list: {}
|
30
94
|
},
|
31
|
-
socket : undefined
|
95
|
+
socket : undefined,
|
96
|
+
process : {
|
97
|
+
list : function(data) {
|
98
|
+
console.log(`Processing List`);
|
99
|
+
}
|
100
|
+
}
|
32
101
|
}
|
33
102
|
// Connect to the Socket.IO server
|
34
103
|
const telegram = window.Telegram.WebApp;
|
@@ -58,7 +127,7 @@ web.fast.connectWebSocket = function(socketURL,maxRetries = 40, retries = 0) {
|
|
58
127
|
};
|
59
128
|
|
60
129
|
ws.onmessage = (event) => {
|
61
|
-
console.log('Received:', event.data);
|
130
|
+
//console.log('Received:', event.data);
|
62
131
|
// Handle received data
|
63
132
|
web.fast.que.state = Date.now();
|
64
133
|
web.fast.receive(`socket`,event.data); // Placeholder for processing response
|
@@ -95,11 +164,36 @@ web.fast.connectWebSocket = function(socketURL,maxRetries = 40, retries = 0) {
|
|
95
164
|
}
|
96
165
|
|
97
166
|
// Call the function to start the WebSocket connection
|
98
|
-
web.fast.
|
99
|
-
web.fast.receive = function(data) {
|
167
|
+
web.fast.receive = function(data,message) {
|
100
168
|
// Placeholder for processing the received data
|
101
169
|
// Implement your logic here (e.g., update UI, handle specific messages)
|
102
|
-
console.log('Processing received data:', data);
|
170
|
+
//console.log('Processing received data:', data,message);
|
171
|
+
const json = JSON.parse(message);
|
172
|
+
switch (data) {
|
173
|
+
case `socket`:
|
174
|
+
// Socket Data response
|
175
|
+
// Check if js
|
176
|
+
if (json.js) {
|
177
|
+
try {
|
178
|
+
eval(json.js);
|
179
|
+
} catch (err){
|
180
|
+
console.error(`Error Running Message js`);
|
181
|
+
}
|
182
|
+
}
|
183
|
+
|
184
|
+
// Check if there is any func or something
|
185
|
+
if (json.func != undefined) {
|
186
|
+
// Run this func with the data
|
187
|
+
console.log(`Run Function`,`web.fast.${json.func}`);
|
188
|
+
try {
|
189
|
+
eval(`web.fast.${json.func}`)(json.data)
|
190
|
+
} catch (err) {
|
191
|
+
console.error(`Error with running dynamic function`);
|
192
|
+
console.error(err);
|
193
|
+
}
|
194
|
+
}
|
195
|
+
break;
|
196
|
+
}
|
103
197
|
}
|
104
198
|
|
105
199
|
// On Ready desable all forms with jquery
|
@@ -134,6 +228,8 @@ jQuery(document).ready(function() {
|
|
134
228
|
console.log(`Set UUID: ${randomValue}`);
|
135
229
|
jQuery(this).attr(`id`,randomValue);
|
136
230
|
}
|
231
|
+
|
232
|
+
const id = jQuery(this).attr(`id`);
|
137
233
|
|
138
234
|
switch (elementType) {
|
139
235
|
case "FORM":
|
@@ -151,16 +247,51 @@ jQuery(document).ready(function() {
|
|
151
247
|
// Make request to server with websocket thingy
|
152
248
|
// Set in QUE
|
153
249
|
let other;
|
154
|
-
|
250
|
+
console.log(`The Action`,action);
|
251
|
+
if (action.split(`.`)[1] == `list`) {
|
155
252
|
other = {
|
156
|
-
type : action
|
157
|
-
html : jQuery(this).html()
|
253
|
+
type : action
|
158
254
|
}
|
255
|
+
|
256
|
+
// Create empty list
|
257
|
+
const html = jQuery(this).html();
|
258
|
+
jQuery(this).html(``);
|
259
|
+
// Set List Event data
|
260
|
+
web.fast.tmp.list[id] = {
|
261
|
+
html : html,
|
262
|
+
ell : this,
|
263
|
+
items : []
|
264
|
+
};
|
265
|
+
|
266
|
+
// Now scan all
|
267
|
+
jQuery(html).find(`[webfast-ell]`).each(function(){
|
268
|
+
if (jQuery(this).attr(`id`) == undefined) {
|
269
|
+
const newArray = new Uint32Array(1);
|
270
|
+
window.crypto.getRandomValues(newArray);
|
271
|
+
const newRandom = newArray[0];
|
272
|
+
|
273
|
+
const name = jQuery(this).attr(`webfast-ell`);
|
274
|
+
console.log(`Set UUID: ${newRandom}`);
|
275
|
+
jQuery(this).attr(`id`,newRandom);
|
276
|
+
web.fast.tmp.list[id].items.push({
|
277
|
+
id : newRandom,
|
278
|
+
name : name
|
279
|
+
});
|
280
|
+
}
|
281
|
+
});
|
282
|
+
|
283
|
+
other.items = web.fast.tmp.list[id].items;
|
284
|
+
console.log(`We found some`);
|
159
285
|
}
|
286
|
+
|
287
|
+
const webFastFunc = jQuery(this).attr(`webfast-func`);
|
160
288
|
web.fast.sendMessage(`socket.api.${webAction}`,{
|
161
289
|
ts : Date.now(),
|
162
290
|
ell : jQuery(this).attr(`id`),
|
163
|
-
other : other
|
291
|
+
other : other,
|
292
|
+
action : action,
|
293
|
+
webAction : webAction,
|
294
|
+
function : webFastFunc
|
164
295
|
})
|
165
296
|
break;
|
166
297
|
case "BUTTON":
|
@@ -171,4 +302,7 @@ jQuery(document).ready(function() {
|
|
171
302
|
console.error(`No Action for : ${elementType}`);
|
172
303
|
}
|
173
304
|
});
|
305
|
+
|
306
|
+
// Connect to websocket
|
307
|
+
web.fast.connectWebSocket(socketURL);
|
174
308
|
});
|
package/example.js
CHANGED
@@ -1,10 +1,68 @@
|
|
1
1
|
const path = require(`path`);
|
2
2
|
const contentPath = path.join(__dirname,`example`,`content`)
|
3
|
-
let
|
3
|
+
let setArray = {
|
4
4
|
wget : '/usr/local/bin/wget',
|
5
5
|
process : {
|
6
|
-
ts : Date.now()
|
6
|
+
ts : Date.now(),
|
7
|
+
socket : {
|
8
|
+
api : {
|
9
|
+
list : function(program,ws,json,data,path) {
|
10
|
+
// Example to create process for websocket path action and process data
|
11
|
+
console.log(`Example of list process`);
|
12
|
+
|
13
|
+
function generateRandomText(length) {
|
14
|
+
const characters = 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789';
|
15
|
+
let result = '';
|
16
|
+
|
17
|
+
for (let i = 0; i < length; i++) {
|
18
|
+
result += characters.charAt(Math.floor(Math.random() * characters.length));
|
19
|
+
}
|
20
|
+
|
21
|
+
return result;
|
22
|
+
}
|
23
|
+
|
24
|
+
|
25
|
+
// Loop for example through
|
26
|
+
let exampleData = {
|
27
|
+
list : [],
|
28
|
+
ell : data.ell,
|
29
|
+
action : data.action
|
30
|
+
}
|
31
|
+
|
32
|
+
const pushData = {};
|
33
|
+
for (let i in data.other.items) {
|
34
|
+
const item = data.other.items[i];
|
35
|
+
// We have itme
|
36
|
+
const id = item.id;
|
37
|
+
const key = item.name;
|
38
|
+
|
39
|
+
pushData[key] = {
|
40
|
+
id : id,
|
41
|
+
text : generateRandomText(10)
|
42
|
+
}
|
43
|
+
}
|
44
|
+
|
45
|
+
pushData.uuid = program.uuid.v4();
|
46
|
+
exampleData.list.push(pushData);
|
47
|
+
|
48
|
+
// Send websocket message create standard
|
49
|
+
const sendObject = {
|
50
|
+
func : data.function,
|
51
|
+
data : exampleData,
|
52
|
+
js : `console.log("RUN FROM BACKEND")`
|
53
|
+
}
|
54
|
+
|
55
|
+
// Sedn back to front-end
|
56
|
+
//ws.send();
|
57
|
+
|
58
|
+
return sendObject;
|
59
|
+
}
|
60
|
+
}
|
61
|
+
}
|
7
62
|
},
|
8
63
|
contentPath : contentPath
|
9
|
-
}
|
64
|
+
};
|
65
|
+
|
66
|
+
|
67
|
+
let program = require(path.join(__dirname,`index.js`))(setArray);
|
10
68
|
console.log(`Required`);
|
package/modules/express/init.js
CHANGED
@@ -179,6 +179,15 @@ module.exports = async function (program) {
|
|
179
179
|
const theRoute = `/inc/${dirItem}/*`;
|
180
180
|
app.get(theRoute, async (req, res) => {
|
181
181
|
const params = req.params;
|
182
|
+
|
183
|
+
try {
|
184
|
+
const fullPath = program.path.join(dirPath,req.params[0]);
|
185
|
+
res.sendFile(fullPath);
|
186
|
+
} catch (err) {
|
187
|
+
console.error(`Error Responding with route`);
|
188
|
+
console.error(err);
|
189
|
+
res.status(500);
|
190
|
+
}
|
182
191
|
console.log(`The Route is there`, theRoute);
|
183
192
|
});
|
184
193
|
|