webfast 0.1.37 → 0.1.41
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 +141 -9
- package/example/content/js/test.js +2 -0
- package/example.js +64 -4
- package/modules/express/init.js +46 -4
- 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
|
|
@@ -96,10 +165,36 @@ web.fast.connectWebSocket = function(socketURL,maxRetries = 40, retries = 0) {
|
|
|
96
165
|
|
|
97
166
|
// Call the function to start the WebSocket connection
|
|
98
167
|
web.fast.connectWebSocket(socketURL);
|
|
99
|
-
web.fast.receive = function(data) {
|
|
168
|
+
web.fast.receive = function(data,message) {
|
|
100
169
|
// Placeholder for processing the received data
|
|
101
170
|
// Implement your logic here (e.g., update UI, handle specific messages)
|
|
102
|
-
console.log('Processing received data:', data);
|
|
171
|
+
//console.log('Processing received data:', data,message);
|
|
172
|
+
const json = JSON.parse(message);
|
|
173
|
+
switch (data) {
|
|
174
|
+
case `socket`:
|
|
175
|
+
// Socket Data response
|
|
176
|
+
// Check if js
|
|
177
|
+
if (json.js) {
|
|
178
|
+
try {
|
|
179
|
+
eval(json.js);
|
|
180
|
+
} catch (err){
|
|
181
|
+
console.error(`Error Running Message js`);
|
|
182
|
+
}
|
|
183
|
+
}
|
|
184
|
+
|
|
185
|
+
// Check if there is any func or something
|
|
186
|
+
if (json.func != undefined) {
|
|
187
|
+
// Run this func with the data
|
|
188
|
+
console.log(`Run Function`,`web.fast.${json.func}`);
|
|
189
|
+
try {
|
|
190
|
+
eval(`web.fast.${json.func}`)(json.data)
|
|
191
|
+
} catch (err) {
|
|
192
|
+
console.error(`Error with running dynamic function`);
|
|
193
|
+
console.error(err);
|
|
194
|
+
}
|
|
195
|
+
}
|
|
196
|
+
break;
|
|
197
|
+
}
|
|
103
198
|
}
|
|
104
199
|
|
|
105
200
|
// On Ready desable all forms with jquery
|
|
@@ -134,6 +229,8 @@ jQuery(document).ready(function() {
|
|
|
134
229
|
console.log(`Set UUID: ${randomValue}`);
|
|
135
230
|
jQuery(this).attr(`id`,randomValue);
|
|
136
231
|
}
|
|
232
|
+
|
|
233
|
+
const id = jQuery(this).attr(`id`);
|
|
137
234
|
|
|
138
235
|
switch (elementType) {
|
|
139
236
|
case "FORM":
|
|
@@ -151,16 +248,51 @@ jQuery(document).ready(function() {
|
|
|
151
248
|
// Make request to server with websocket thingy
|
|
152
249
|
// Set in QUE
|
|
153
250
|
let other;
|
|
154
|
-
|
|
251
|
+
console.log(`The Action`,action);
|
|
252
|
+
if (action.split(`.`)[1] == `list`) {
|
|
155
253
|
other = {
|
|
156
|
-
type : action
|
|
157
|
-
html : jQuery(this).html()
|
|
254
|
+
type : action
|
|
158
255
|
}
|
|
256
|
+
|
|
257
|
+
// Create empty list
|
|
258
|
+
const html = jQuery(this).html();
|
|
259
|
+
jQuery(this).html(``);
|
|
260
|
+
// Set List Event data
|
|
261
|
+
web.fast.tmp.list[id] = {
|
|
262
|
+
html : html,
|
|
263
|
+
ell : this,
|
|
264
|
+
items : []
|
|
265
|
+
};
|
|
266
|
+
|
|
267
|
+
// Now scan all
|
|
268
|
+
jQuery(html).find(`[webfast-ell]`).each(function(){
|
|
269
|
+
if (jQuery(this).attr(`id`) == undefined) {
|
|
270
|
+
const newArray = new Uint32Array(1);
|
|
271
|
+
window.crypto.getRandomValues(newArray);
|
|
272
|
+
const newRandom = newArray[0];
|
|
273
|
+
|
|
274
|
+
const name = jQuery(this).attr(`webfast-ell`);
|
|
275
|
+
console.log(`Set UUID: ${newRandom}`);
|
|
276
|
+
jQuery(this).attr(`id`,newRandom);
|
|
277
|
+
web.fast.tmp.list[id].items.push({
|
|
278
|
+
id : newRandom,
|
|
279
|
+
name : name
|
|
280
|
+
});
|
|
281
|
+
}
|
|
282
|
+
});
|
|
283
|
+
|
|
284
|
+
other.items = web.fast.tmp.list[id].items;
|
|
285
|
+
console.log(`We found some`);
|
|
159
286
|
}
|
|
287
|
+
|
|
288
|
+
const webFastFunc = jQuery(this).attr(`webfast-func`);
|
|
160
289
|
web.fast.sendMessage(`socket.api.${webAction}`,{
|
|
161
290
|
ts : Date.now(),
|
|
162
291
|
ell : jQuery(this).attr(`id`),
|
|
163
|
-
other : other
|
|
292
|
+
other : other,
|
|
293
|
+
action : action,
|
|
294
|
+
webAction : webAction,
|
|
295
|
+
function : webFastFunc
|
|
164
296
|
})
|
|
165
297
|
break;
|
|
166
298
|
case "BUTTON":
|
package/example.js
CHANGED
|
@@ -1,8 +1,68 @@
|
|
|
1
1
|
const path = require(`path`);
|
|
2
|
-
|
|
2
|
+
const contentPath = path.join(__dirname,`example`,`content`)
|
|
3
|
+
let setArray = {
|
|
3
4
|
wget : '/usr/local/bin/wget',
|
|
4
5
|
process : {
|
|
5
|
-
ts : Date.now()
|
|
6
|
-
|
|
7
|
-
|
|
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
|
+
}
|
|
62
|
+
},
|
|
63
|
+
contentPath : contentPath
|
|
64
|
+
};
|
|
65
|
+
|
|
66
|
+
|
|
67
|
+
let program = require(path.join(__dirname,`index.js`))(setArray);
|
|
8
68
|
console.log(`Required`);
|
package/modules/express/init.js
CHANGED
|
@@ -139,12 +139,18 @@ module.exports = async function (program) {
|
|
|
139
139
|
|
|
140
140
|
// Check if minify at the end
|
|
141
141
|
const fileName = req.params.file;
|
|
142
|
-
const
|
|
142
|
+
const isExtend = /-extend\.js$/.test(fileName);
|
|
143
143
|
|
|
144
|
-
if
|
|
145
|
-
|
|
146
|
-
|
|
144
|
+
// Check if extending
|
|
145
|
+
if (isExtend) {
|
|
146
|
+
console.log(`${fileName} ends with -extend.js`);
|
|
147
|
+
// IS extended file include loading in
|
|
148
|
+
|
|
149
|
+
const toRequestFile = req.params.file.replace(`-extend.js`, `.js`);
|
|
147
150
|
contentFolder = program.path.join(__dirname, `..`, `..`, `app`, `content`, req.params.type, toRequestFile);
|
|
151
|
+
// check if file exists in process, if not make it before giving out
|
|
152
|
+
// Check i
|
|
153
|
+
console.log(`Content Folder`);
|
|
148
154
|
} else {
|
|
149
155
|
console.log(`${fileName} does not end with -min.js`);
|
|
150
156
|
}
|
|
@@ -156,6 +162,42 @@ module.exports = async function (program) {
|
|
|
156
162
|
}
|
|
157
163
|
})
|
|
158
164
|
|
|
165
|
+
// Walkt through for paths to be open
|
|
166
|
+
if (program.set.contentPath != undefined) {
|
|
167
|
+
// Loop Through
|
|
168
|
+
const readDir = program.fs.readdirSync(program.set.contentPath);
|
|
169
|
+
|
|
170
|
+
// Create request app path for it
|
|
171
|
+
//loop through
|
|
172
|
+
for (let rdi in readDir) {
|
|
173
|
+
// Loop
|
|
174
|
+
const dirItem = readDir[rdi];
|
|
175
|
+
const dirPath = program.path.join(program.set.contentPath,dirItem);
|
|
176
|
+
// Now read the dir
|
|
177
|
+
// Create app.get
|
|
178
|
+
try {
|
|
179
|
+
const theRoute = `/inc/${dirItem}/*`;
|
|
180
|
+
app.get(theRoute, async (req, res) => {
|
|
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
|
+
}
|
|
191
|
+
console.log(`The Route is there`, theRoute);
|
|
192
|
+
});
|
|
193
|
+
|
|
194
|
+
} catch (err) {
|
|
195
|
+
console.error(`Errro for path read dir including something`, diritem);
|
|
196
|
+
}
|
|
197
|
+
}
|
|
198
|
+
console.log(`We have directory`);
|
|
199
|
+
}
|
|
200
|
+
|
|
159
201
|
app.listen(port, () => {
|
|
160
202
|
console.log(`Server Listening`, port, basePath);
|
|
161
203
|
});
|