total5 0.0.1-9 → 0.0.2
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/api.js +18 -10
- package/bin/flow5 +142 -0
- package/bin/total5 +166 -905
- package/builders.js +90 -35
- package/changelog.txt +3 -1
- package/cluster.js +1 -1
- package/cms.js +185 -51
- package/controller.js +233 -70
- package/cron.js +1 -1
- package/debug.js +12 -5
- package/edit.js +26 -33
- package/filestorage.js +38 -17
- package/flow-flowstream.js +199 -68
- package/flow.js +16 -10
- package/flowstream.js +4 -3
- package/global.js +84 -1
- package/htmlparser.js +41 -29
- package/http.js +3 -1
- package/image.js +4 -0
- package/images.js +1 -1
- package/index.js +246 -117
- package/jsonschema.js +21 -17
- package/macros.js +222 -0
- package/mail.js +11 -27
- package/markdown.js +21 -11
- package/minificators.js +1 -1
- package/nosql-querybuilder.js +4 -0
- package/nosql.js +8 -0
- package/openclient.js +1 -1
- package/package.json +4 -3
- package/pause.html +1 -1
- package/release.js +1 -1
- package/routing.js +118 -35
- package/sourcemap.js +6 -3
- package/test.js +9 -2
- package/tms.js +11 -14
- package/uibuilder.js +59 -23
- package/utils.js +147 -102
- package/viewengine.js +19 -8
- package/websocket.js +10 -6
- package/503.html +0 -65
- package/CONTRIBUTING.md +0 -55
- package/helpers/index.js +0 -32
- package/templates.json +0 -74
- package/tests/bundles/index.js +0 -25
- package/tests/cron.js +0 -0
- package/tests/htmlparser.js +0 -0
- package/tests/minifactors.js +0 -17
- package/tests/nosql.js +0 -18
- package/tests/proxy/index.js +0 -21
- package/tests/routing/index.js +0 -27
- package/tests/schemas.js +0 -17
- package/tests/server/index.js +0 -24
- package/tests/staticfiles/index.js +0 -24
- package/tests/utils.js +0 -17
- package/tmsclient.js +0 -125
- package/todo.txt +0 -11
- package/tools/beta.sh +0 -6
- package/tools/release.sh +0 -6
package/jsonschema.js
CHANGED
|
@@ -18,7 +18,7 @@ function check_string(meta, error, value, errplus, path) {
|
|
|
18
18
|
var type = typeof(value);
|
|
19
19
|
|
|
20
20
|
if (type !== 'string')
|
|
21
|
-
value = value ? (value + '') : null;
|
|
21
|
+
value = value ? (value + '') : meta.nullable ? null : '';
|
|
22
22
|
|
|
23
23
|
if (errplus == null)
|
|
24
24
|
errplus = '';
|
|
@@ -37,7 +37,7 @@ function check_string(meta, error, value, errplus, path) {
|
|
|
37
37
|
}
|
|
38
38
|
|
|
39
39
|
if (value == null)
|
|
40
|
-
return;
|
|
40
|
+
return null;
|
|
41
41
|
|
|
42
42
|
var len = value.length;
|
|
43
43
|
|
|
@@ -133,6 +133,14 @@ function check_string(meta, error, value, errplus, path) {
|
|
|
133
133
|
return;
|
|
134
134
|
}
|
|
135
135
|
break;
|
|
136
|
+
case 'datauri':
|
|
137
|
+
value = value.trim();
|
|
138
|
+
if (value && !value.isBase64(true)) {
|
|
139
|
+
error.push2(errplus + meta.$$ID, path);
|
|
140
|
+
return;
|
|
141
|
+
}
|
|
142
|
+
value = value ? value.parseDataURI() : null;
|
|
143
|
+
break;
|
|
136
144
|
case 'color':
|
|
137
145
|
value = value.trim();
|
|
138
146
|
if (value && !REG_COLOR.test(value)) {
|
|
@@ -299,7 +307,8 @@ function check_date(meta, error, value, errplus, path) {
|
|
|
299
307
|
return value;
|
|
300
308
|
}
|
|
301
309
|
|
|
302
|
-
function
|
|
310
|
+
function readdef(ref, definitions) {
|
|
311
|
+
|
|
303
312
|
if (ref[0] === '#') {
|
|
304
313
|
var tmp = ref.substring(2).split('/');
|
|
305
314
|
var def = definitions[tmp[0]];
|
|
@@ -421,7 +430,7 @@ function check_array(meta, error, value, stop, definitions, path) {
|
|
|
421
430
|
var val = value[i];
|
|
422
431
|
|
|
423
432
|
if (meta.items.$ref) {
|
|
424
|
-
var ref =
|
|
433
|
+
var ref = typeof(meta.items.$ref) === 'object' ? meta.items.$ref :readdef(meta.items.$ref, definitions);
|
|
425
434
|
if (ref) {
|
|
426
435
|
var newerror = new F.ErrorBuilder();
|
|
427
436
|
tmp = transform(ref, newerror, val, false, currentpath + '[' + i + ']');
|
|
@@ -554,10 +563,8 @@ function check_object(meta, error, value, response, stop, definitions, path) {
|
|
|
554
563
|
case 'boolean':
|
|
555
564
|
case 'bool':
|
|
556
565
|
tmp = check_boolean(prop, error, val, null, currentpath);
|
|
557
|
-
|
|
558
|
-
|
|
559
|
-
count++;
|
|
560
|
-
}
|
|
566
|
+
response[key] = tmp == true;
|
|
567
|
+
count++;
|
|
561
568
|
break;
|
|
562
569
|
case 'date':
|
|
563
570
|
tmp = check_date(prop, error, val, null, currentpath);
|
|
@@ -566,15 +573,12 @@ function check_object(meta, error, value, response, stop, definitions, path) {
|
|
|
566
573
|
break;
|
|
567
574
|
case 'string':
|
|
568
575
|
tmp = check_string(prop, error, val, null, currentpath);
|
|
569
|
-
if (tmp
|
|
570
|
-
|
|
571
|
-
|
|
572
|
-
|
|
573
|
-
|
|
574
|
-
response[key] = tmp;
|
|
575
|
-
count++;
|
|
576
|
-
}
|
|
576
|
+
if (tmp == '' && prop.nullable)
|
|
577
|
+
tmp = null;
|
|
578
|
+
response[key] = tmp;
|
|
579
|
+
count++;
|
|
577
580
|
break;
|
|
581
|
+
|
|
578
582
|
case 'object':
|
|
579
583
|
|
|
580
584
|
if (prop.properties) {
|
|
@@ -587,7 +591,7 @@ function check_object(meta, error, value, response, stop, definitions, path) {
|
|
|
587
591
|
|
|
588
592
|
// check ref
|
|
589
593
|
if (prop.$ref) {
|
|
590
|
-
var ref =
|
|
594
|
+
var ref = typeof(prop.$ref) === 'object' ? prop.$ref : readdef(prop.$ref, definitions);
|
|
591
595
|
if (ref) {
|
|
592
596
|
var newerror = new F.ErrorBuilder();
|
|
593
597
|
tmp = transform(ref, newerror, val, false, currentpath);
|
package/macros.js
ADDED
|
@@ -0,0 +1,222 @@
|
|
|
1
|
+
// Supported:
|
|
2
|
+
// - condition: IF, ELSE, ELSE IF, FI
|
|
3
|
+
// - custom helpers: HELPERNAME(arg1, arg2)
|
|
4
|
+
// - user defined values: "1" (number), "TEXT" (text), "TRUE" (boolean), "FALSE" boolean, "YES" boolean, "NO" boolean
|
|
5
|
+
// - returning via return keyword
|
|
6
|
+
// - supports lower/upper case (but properties in the model/helpers must be in the lower case)
|
|
7
|
+
// - #temporary
|
|
8
|
+
/*
|
|
9
|
+
IF something >= 10
|
|
10
|
+
RETURN something * 10;
|
|
11
|
+
FI
|
|
12
|
+
*/
|
|
13
|
+
|
|
14
|
+
const AsyncFunction = async function () {}.constructor;
|
|
15
|
+
|
|
16
|
+
function findkeywords(line, keywords, replace, allowedbeg, allowedend) {
|
|
17
|
+
|
|
18
|
+
var white = [' ', '\t', ';'];
|
|
19
|
+
|
|
20
|
+
for (var keyword of keywords) {
|
|
21
|
+
|
|
22
|
+
var reg = new RegExp(keyword, 'gi');
|
|
23
|
+
var match = line.match(reg);
|
|
24
|
+
|
|
25
|
+
if (!match)
|
|
26
|
+
continue;
|
|
27
|
+
|
|
28
|
+
var index = 0;
|
|
29
|
+
|
|
30
|
+
for (var m of match) {
|
|
31
|
+
|
|
32
|
+
index = line.indexOf(m);
|
|
33
|
+
|
|
34
|
+
if (index === -1)
|
|
35
|
+
break;
|
|
36
|
+
|
|
37
|
+
var beg = line.substring(index - 1, index);
|
|
38
|
+
|
|
39
|
+
if (index === 0 || white.includes(beg) || (allowedbeg && allowedbeg.includes(beg))) {
|
|
40
|
+
var length = index + m.length;
|
|
41
|
+
var end = line.substring(length, length + 1);
|
|
42
|
+
|
|
43
|
+
if (!end || white.includes(end) || (allowedend && allowedend.includes(end))) {
|
|
44
|
+
var output = replace(m);
|
|
45
|
+
line = line.substring(0, index) + output + line.substring(length);
|
|
46
|
+
}
|
|
47
|
+
}
|
|
48
|
+
}
|
|
49
|
+
}
|
|
50
|
+
return line;
|
|
51
|
+
}
|
|
52
|
+
|
|
53
|
+
function prepareline(str, meta, isasync) {
|
|
54
|
+
|
|
55
|
+
str = str.trim();
|
|
56
|
+
|
|
57
|
+
if (str.substring(0, 2) === '//')
|
|
58
|
+
return;
|
|
59
|
+
|
|
60
|
+
// User defined values
|
|
61
|
+
str = str.replace(/(".*?")|('.*?')/g, function(text) {
|
|
62
|
+
|
|
63
|
+
var key = '@' + meta.indexer + '@';
|
|
64
|
+
|
|
65
|
+
text = text.substring(1, text.length - 1);
|
|
66
|
+
if ((/^[0-9.,]+$/).test(text)) {
|
|
67
|
+
text = text.parseFloat();
|
|
68
|
+
} else {
|
|
69
|
+
var boolean = text.toLowerCase();
|
|
70
|
+
if (boolean === 'true' || boolean === 'false')
|
|
71
|
+
text = boolean === 'true';
|
|
72
|
+
else
|
|
73
|
+
text = '"' + text + '"';
|
|
74
|
+
}
|
|
75
|
+
|
|
76
|
+
meta.keywords[key] = text;
|
|
77
|
+
meta.indexer++;
|
|
78
|
+
return key;
|
|
79
|
+
});
|
|
80
|
+
|
|
81
|
+
if (str.indexOf(';') !== -1) {
|
|
82
|
+
var lines = str.split(';');
|
|
83
|
+
for (var m of lines)
|
|
84
|
+
m = prepareline(m, meta, isasync);
|
|
85
|
+
return lines.join('\n');
|
|
86
|
+
}
|
|
87
|
+
|
|
88
|
+
// Return
|
|
89
|
+
str = findkeywords(str, ['return'], function(text) {
|
|
90
|
+
var key = '@' + meta.indexer + '@';
|
|
91
|
+
meta.keywords[key] = text.toLowerCase();
|
|
92
|
+
meta.indexer++;
|
|
93
|
+
return key;
|
|
94
|
+
});
|
|
95
|
+
|
|
96
|
+
// End condition
|
|
97
|
+
str = findkeywords(str, ['fi'], function() {
|
|
98
|
+
return '}';
|
|
99
|
+
});
|
|
100
|
+
|
|
101
|
+
// Boolean
|
|
102
|
+
str = findkeywords(str, ['true', 'false', 'yes', 'no', 'ok'], function(text) {
|
|
103
|
+
text = text.toLowerCase();
|
|
104
|
+
return text === 'yes' || text === 'true' || text === 'ok';
|
|
105
|
+
}, ['('], [')']);
|
|
106
|
+
|
|
107
|
+
// AND OR
|
|
108
|
+
str = findkeywords(str, ['and', 'or'], function(text) {
|
|
109
|
+
return text.toLowerCase().replace(/and/g, '&&').replace(/or/g, '||');
|
|
110
|
+
});
|
|
111
|
+
|
|
112
|
+
// Conditions
|
|
113
|
+
var lower = str.toLowerCase();
|
|
114
|
+
var index = lower.indexOf('else');
|
|
115
|
+
if (index !== -1) {
|
|
116
|
+
var tmp = str.substring(index);
|
|
117
|
+
var tmplower = tmp.toLowerCase();
|
|
118
|
+
str = str.substring(0, index) + '}' + tmp + (tmplower.indexOf('else if') === -1 ? '{' : '');
|
|
119
|
+
}
|
|
120
|
+
|
|
121
|
+
if (lower.indexOf('if ') !== -1) {
|
|
122
|
+
str = str.replace(/.=./g, function(text) {
|
|
123
|
+
if (text[0] === '>' || text[0] === '<' || text[0] === '=' || (text[1] === '=' && text[2] === '='))
|
|
124
|
+
return text;
|
|
125
|
+
if (text[2] === '>' || text[2] === '<')
|
|
126
|
+
return text[2] + text[1] + text[0];
|
|
127
|
+
if (text[1] === '=')
|
|
128
|
+
return text[0] + '=' + text[1] + text[2];
|
|
129
|
+
return text;
|
|
130
|
+
}) + '){';
|
|
131
|
+
}
|
|
132
|
+
|
|
133
|
+
// Conditions
|
|
134
|
+
str = str.replace(/(\s)?(else|else\sif|if)(\s)?/ig, function(text) {
|
|
135
|
+
var key = '@' + meta.indexer + '@';
|
|
136
|
+
meta.keywords[key] = text.replace(/if(\s)/i, 'if(').replace(/else/i, 'else');
|
|
137
|
+
meta.indexer++;
|
|
138
|
+
return key;
|
|
139
|
+
});
|
|
140
|
+
|
|
141
|
+
// Conditions
|
|
142
|
+
str = findkeywords(str, ['else', 'else if', 'if'], function(text) {
|
|
143
|
+
text = text.toLowerCase();
|
|
144
|
+
var key = '@' + meta.indexer + '@';
|
|
145
|
+
meta.keywords[key] = text.replace(/if(\s)/i, 'if(').replace(/else/i, 'else');
|
|
146
|
+
meta.indexer++;
|
|
147
|
+
return key;
|
|
148
|
+
});
|
|
149
|
+
|
|
150
|
+
// Null
|
|
151
|
+
str = findkeywords(str, ['null'], function(text) {
|
|
152
|
+
var key = '@' + meta.indexer + '@';
|
|
153
|
+
text = text.toLowerCase();
|
|
154
|
+
meta.keywords[key] = text.replace(/null/i, 'null');
|
|
155
|
+
meta.indexer++;
|
|
156
|
+
return key;
|
|
157
|
+
});
|
|
158
|
+
|
|
159
|
+
// Helpers
|
|
160
|
+
str = str.replace(/[a-z0-9_]+\((\))?/ig, function(text) {
|
|
161
|
+
var key = '@' + meta.indexer + '@';
|
|
162
|
+
var index = text.indexOf('(');
|
|
163
|
+
meta.keywords[key] = (isasync ? 'await ' : '') + 'helpers.' + (text.substring(0, index) + '.call(model' + (text.substring(index) === '()' ? ')' : ',')).toLowerCase();
|
|
164
|
+
meta.indexer++;
|
|
165
|
+
return key;
|
|
166
|
+
});
|
|
167
|
+
|
|
168
|
+
// Temporary variables
|
|
169
|
+
str = str.replace(/#[a-z0-9_.]+./ig, function(text) {
|
|
170
|
+
|
|
171
|
+
var last = text[text.length - 1];
|
|
172
|
+
if (last === '@')
|
|
173
|
+
text = text.substring(0, text.length - 1);
|
|
174
|
+
else
|
|
175
|
+
last = '';
|
|
176
|
+
|
|
177
|
+
var key = '@' + meta.indexer + '@';
|
|
178
|
+
meta.keywords[key] = text.substring(1).toLowerCase().replace(/[a-z]/i, text => 'tmp.' + text);
|
|
179
|
+
meta.indexer++;
|
|
180
|
+
return key + last;
|
|
181
|
+
});
|
|
182
|
+
|
|
183
|
+
// Properties & fixed values
|
|
184
|
+
str = str.replace(/.[a-z0-9_.]+./ig, function(text) {
|
|
185
|
+
|
|
186
|
+
if ((/@[0-9]+@|true|false(\))?/).test(text))
|
|
187
|
+
return text;
|
|
188
|
+
|
|
189
|
+
if ((/^[0-9.]+$/i).test(text)) {
|
|
190
|
+
return text;
|
|
191
|
+
}
|
|
192
|
+
|
|
193
|
+
text = text.toLowerCase().replace(/[a-z]/i, function(text) {
|
|
194
|
+
return 'model.' + text;
|
|
195
|
+
});
|
|
196
|
+
|
|
197
|
+
return text;
|
|
198
|
+
});
|
|
199
|
+
|
|
200
|
+
if (str)
|
|
201
|
+
meta.builder.push(str.replace(/(\s)?(=|>|<|\+|-)(\s)?/g, n => n.trim()) + ';');
|
|
202
|
+
|
|
203
|
+
}
|
|
204
|
+
|
|
205
|
+
exports.compile = function(str, nocompile, isasync) {
|
|
206
|
+
|
|
207
|
+
var meta = {};
|
|
208
|
+
meta.keywords = {};
|
|
209
|
+
meta.indexer = 0;
|
|
210
|
+
meta.builder = [];
|
|
211
|
+
|
|
212
|
+
var lines = str.split('\n');
|
|
213
|
+
|
|
214
|
+
for (var line of lines)
|
|
215
|
+
prepareline(line, meta, isasync);
|
|
216
|
+
|
|
217
|
+
var compiled = meta.builder.join('\n').replace(/@\d+@/gi, function(text) {
|
|
218
|
+
return meta.keywords[text];
|
|
219
|
+
});
|
|
220
|
+
|
|
221
|
+
return nocompile ? compiled : new (isasync ? AsyncFunction : Function)('model', 'helpers', 'var tmp={};\n' + compiled);
|
|
222
|
+
};
|
package/mail.js
CHANGED
|
@@ -219,17 +219,18 @@ Message.prototype.send2 = function(callback) {
|
|
|
219
219
|
return;
|
|
220
220
|
}
|
|
221
221
|
|
|
222
|
-
for (let key in F.temporary.smtp)
|
|
223
|
-
|
|
222
|
+
for (let key in F.temporary.smtp) {
|
|
223
|
+
if (!F.config.smtp || F.config.smtp.server !== key)
|
|
224
|
+
Mailer.destroy(F.temporary.smtp[key]);
|
|
225
|
+
}
|
|
224
226
|
|
|
225
227
|
Mailer.send(F.config.smtp, self, callback);
|
|
226
228
|
};
|
|
227
229
|
|
|
228
|
-
Message.prototype.send = function(
|
|
230
|
+
Message.prototype.send = function(options, callback) {
|
|
229
231
|
var self = this;
|
|
230
232
|
self.$callback2 = callback;
|
|
231
|
-
options
|
|
232
|
-
Mailer.send(options, self, callback, cache);
|
|
233
|
+
Mailer.send(options, self, callback);
|
|
233
234
|
return self;
|
|
234
235
|
};
|
|
235
236
|
|
|
@@ -407,30 +408,13 @@ Mailer.try = function(options, callback) {
|
|
|
407
408
|
};
|
|
408
409
|
|
|
409
410
|
Mailer.send2 = function(messages, callback) {
|
|
410
|
-
|
|
411
|
-
var opt = F.temporary.mail;
|
|
412
|
-
|
|
413
|
-
if (!opt) {
|
|
414
|
-
var config = CONF.mail_smtp_options;
|
|
415
|
-
if (config) {
|
|
416
|
-
if (typeof(config) === 'object')
|
|
417
|
-
opt = config;
|
|
418
|
-
else
|
|
419
|
-
opt = config.toString().parseJSON();
|
|
420
|
-
}
|
|
421
|
-
|
|
422
|
-
if (!opt)
|
|
423
|
-
opt = {};
|
|
424
|
-
|
|
425
|
-
F.temporary.mail = opt;
|
|
426
|
-
}
|
|
427
|
-
|
|
428
|
-
return this.send(CONF.mail_smtp, opt, messages, callback);
|
|
411
|
+
return this.send(F.config.smtp, messages, callback);
|
|
429
412
|
};
|
|
430
413
|
|
|
431
|
-
Mailer.send = function(opt, messages, callback
|
|
414
|
+
Mailer.send = function(opt, messages, callback) {
|
|
432
415
|
|
|
433
|
-
var
|
|
416
|
+
var cache = opt.keepalive;
|
|
417
|
+
var cached = cache ? F.temporary.smtp[opt.server] : null;
|
|
434
418
|
|
|
435
419
|
if (cached) {
|
|
436
420
|
if (messages instanceof Array) {
|
|
@@ -582,7 +566,7 @@ Mailer.$writemessage = function(obj, buffer) {
|
|
|
582
566
|
|
|
583
567
|
message.push('MIME-Version: 1.0');
|
|
584
568
|
buffer.push('MAIL FROM: <' + msg.email_from + '>');
|
|
585
|
-
message.push('Message-ID: <
|
|
569
|
+
message.push('Message-ID: <total5X' + dt.toString(36) + 'X' + (INDEXATTACHMENT++) + 'X' + (INDEXATTACHMENT) + '>');
|
|
586
570
|
|
|
587
571
|
self.$priority && message.push('X-Priority: ' + self.$priority);
|
|
588
572
|
self.$confidential && message.push('Sensitivity: Company-Confidential');
|
package/markdown.js
CHANGED
|
@@ -1,3 +1,7 @@
|
|
|
1
|
+
// Total.js Markdown
|
|
2
|
+
// The MIT License
|
|
3
|
+
// Copyright 2018-2023 (c) Peter Širka <petersirka@gmail.com>
|
|
4
|
+
|
|
1
5
|
const REG_DASH = /-{2,}/g;
|
|
2
6
|
const REG_TAGS = /<[^>]*>/g;
|
|
3
7
|
const REG_EMPTYCHAR = /\s|\W/;
|
|
@@ -137,9 +141,9 @@ function markdown_format(value, index, text) {
|
|
|
137
141
|
return value;
|
|
138
142
|
}
|
|
139
143
|
|
|
140
|
-
function markdown_id(value) {
|
|
144
|
+
function markdown_id(prefix, value) {
|
|
141
145
|
value = value.replace(REG_TAGS, '');
|
|
142
|
-
return value.slug().replace(REG_DASH, '-');
|
|
146
|
+
return prefix + value.slug().replace(REG_DASH, '-');
|
|
143
147
|
}
|
|
144
148
|
|
|
145
149
|
function markdown_icon(value) {
|
|
@@ -221,10 +225,10 @@ function parseul(builder) {
|
|
|
221
225
|
var arr = ul[key];
|
|
222
226
|
var lines = [];
|
|
223
227
|
var tags = [];
|
|
224
|
-
var prev;
|
|
225
|
-
var diff;
|
|
228
|
+
var prev = null;
|
|
229
|
+
var diff = null;
|
|
226
230
|
var init = false;
|
|
227
|
-
var tmp;
|
|
231
|
+
var tmp = null;
|
|
228
232
|
|
|
229
233
|
for (var i = 0; i < arr.length; i++) {
|
|
230
234
|
|
|
@@ -420,12 +424,17 @@ String.prototype.markdown = function(opt, nested) {
|
|
|
420
424
|
// opt.urlify = true;
|
|
421
425
|
// opt.keywords = true;
|
|
422
426
|
// opt.emptynewline = true;
|
|
427
|
+
// opt.bookmarks = true;
|
|
428
|
+
// opt.prefix = '';
|
|
423
429
|
|
|
424
430
|
var str = this;
|
|
425
431
|
|
|
426
432
|
if (!opt)
|
|
427
433
|
opt = {};
|
|
428
434
|
|
|
435
|
+
if (opt.bookmarks == null)
|
|
436
|
+
opt.bookmarks = true;
|
|
437
|
+
|
|
429
438
|
var lines = str.split('\n');
|
|
430
439
|
var builder = [];
|
|
431
440
|
var ul = [];
|
|
@@ -434,9 +443,10 @@ String.prototype.markdown = function(opt, nested) {
|
|
|
434
443
|
var isblock = false;
|
|
435
444
|
var ishead = 0;
|
|
436
445
|
var isprevblock = false;
|
|
437
|
-
var headline = '<{0} id="{3}" class="markdown-line" data-index="{1}">{2}</{0}>';
|
|
446
|
+
var headline = '<{0}' + (opt.bookmarks ? ' id="{3}"' : '') + ' class="markdown-line" data-index="{1}">{2}</{0}>';
|
|
438
447
|
var line;
|
|
439
448
|
var tmp;
|
|
449
|
+
var prefix = opt.prefix || '';
|
|
440
450
|
|
|
441
451
|
if (opt.wrap == null)
|
|
442
452
|
opt.wrap = true;
|
|
@@ -624,7 +634,7 @@ String.prototype.markdown = function(opt, nested) {
|
|
|
624
634
|
if (opt.headlines !== false) {
|
|
625
635
|
if (opt.html)
|
|
626
636
|
tmp = opt.html(tmp, '#');
|
|
627
|
-
builder.push(headline.format('h1', i, tmp, markdown_id(tmp)));
|
|
637
|
+
builder.push(headline.format('h1', i, tmp, opt.bookmarks ? markdown_id(prefix, tmp) : ''));
|
|
628
638
|
}
|
|
629
639
|
continue;
|
|
630
640
|
}
|
|
@@ -634,7 +644,7 @@ String.prototype.markdown = function(opt, nested) {
|
|
|
634
644
|
if (opt.headlines !== false) {
|
|
635
645
|
if (opt.html)
|
|
636
646
|
tmp = opt.html(tmp, '##');
|
|
637
|
-
builder.push(headline.format('h2', i, tmp, markdown_id(tmp)));
|
|
647
|
+
builder.push(headline.format('h2', i, tmp, opt.bookmarks ? markdown_id(prefix, tmp) : ''));
|
|
638
648
|
}
|
|
639
649
|
continue;
|
|
640
650
|
}
|
|
@@ -644,7 +654,7 @@ String.prototype.markdown = function(opt, nested) {
|
|
|
644
654
|
if (opt.headlines !== false) {
|
|
645
655
|
if (opt.html)
|
|
646
656
|
tmp = opt.html(tmp, '###');
|
|
647
|
-
builder.push(headline.format('h3', i, tmp, markdown_id(tmp)));
|
|
657
|
+
builder.push(headline.format('h3', i, tmp, opt.bookmarks ? markdown_id(prefix, tmp) : ''));
|
|
648
658
|
}
|
|
649
659
|
continue;
|
|
650
660
|
}
|
|
@@ -654,7 +664,7 @@ String.prototype.markdown = function(opt, nested) {
|
|
|
654
664
|
if (opt.headlines !== false) {
|
|
655
665
|
if (opt.html)
|
|
656
666
|
tmp = opt.html(tmp, '####');
|
|
657
|
-
builder.push(headline.format('h4', i, tmp, markdown_id(tmp)));
|
|
667
|
+
builder.push(headline.format('h4', i, tmp, opt.bookmarks ? markdown_id(prefix, tmp) : ''));
|
|
658
668
|
}
|
|
659
669
|
continue;
|
|
660
670
|
}
|
|
@@ -664,7 +674,7 @@ String.prototype.markdown = function(opt, nested) {
|
|
|
664
674
|
if (opt.headlines !== false) {
|
|
665
675
|
if (opt.html)
|
|
666
676
|
tmp = opt.html(tmp, '#####');
|
|
667
|
-
builder.push(headline.format('h5', i, tmp, markdown_id(tmp)));
|
|
677
|
+
builder.push(headline.format('h5', i, tmp, opt.bookmarks ? markdown_id(prefix, tmp) : ''));
|
|
668
678
|
}
|
|
669
679
|
continue;
|
|
670
680
|
}
|
package/minificators.js
CHANGED
|
@@ -167,7 +167,7 @@ exports.js = function(value) {
|
|
|
167
167
|
}
|
|
168
168
|
}
|
|
169
169
|
|
|
170
|
-
if ((c === '}' && last === ';') || ((c === '}' || c === ']') && output[output.length - 1] === ' ' && alpha.test(output[output.length - 2])))
|
|
170
|
+
if (!scope && (c === '}' && last === ';') || ((c === '}' || c === ']') && output[output.length - 1] === ' ' && alpha.test(output[output.length - 2])))
|
|
171
171
|
output.pop();
|
|
172
172
|
|
|
173
173
|
output.push(c);
|
package/nosql-querybuilder.js
CHANGED
package/nosql.js
CHANGED
|
@@ -761,6 +761,14 @@ NoSQLWrapper.prototype.find = function() {
|
|
|
761
761
|
return DATA.find('nosql/' + this.filename);
|
|
762
762
|
};
|
|
763
763
|
|
|
764
|
+
NoSQLWrapper.prototype.clean = function() {
|
|
765
|
+
return DATA.command('nosql/' + this.filename, 'clean');
|
|
766
|
+
};
|
|
767
|
+
|
|
768
|
+
NoSQLWrapper.prototype.drop = function() {
|
|
769
|
+
return DATA.drop('nosql/' + this.filename);
|
|
770
|
+
};
|
|
771
|
+
|
|
764
772
|
NoSQLWrapper.prototype.read = function() {
|
|
765
773
|
return DATA.read('nosql/' + this.filename);
|
|
766
774
|
};
|
package/openclient.js
CHANGED
|
@@ -197,7 +197,7 @@ exports.create = function(url, id) {
|
|
|
197
197
|
opt.ws = F.openclients[url];
|
|
198
198
|
|
|
199
199
|
if (!opt.ws) {
|
|
200
|
-
opt.ws =
|
|
200
|
+
opt.ws = F.websocketclient();
|
|
201
201
|
setImmediate(() => opt.ws.connect(url));
|
|
202
202
|
F.openclients[url] = opt.ws;
|
|
203
203
|
opt.ws.options.reconnectserver = true;
|
package/package.json
CHANGED
|
@@ -1,16 +1,17 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "total5",
|
|
3
|
-
"version": "0.0.
|
|
3
|
+
"version": "0.0.2",
|
|
4
4
|
"description": "Total.js framework v5",
|
|
5
5
|
"main": "index.js",
|
|
6
6
|
"directories": {
|
|
7
7
|
"test": "test"
|
|
8
8
|
},
|
|
9
9
|
"bin": {
|
|
10
|
-
"
|
|
10
|
+
"total5": "./bin/total5",
|
|
11
|
+
"flow5": "./bin/flow5"
|
|
11
12
|
},
|
|
12
13
|
"scripts": {
|
|
13
|
-
"test": "cd tests && node
|
|
14
|
+
"test": "cd tests && node run.js"
|
|
14
15
|
},
|
|
15
16
|
"repository": {
|
|
16
17
|
"type": "git",
|
package/pause.html
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
<!DOCTYPE html>
|
|
2
2
|
<html>
|
|
3
3
|
<head>
|
|
4
|
-
<title
|
|
4
|
+
<title>Please wait</title>
|
|
5
5
|
<meta charset="utf-8" />
|
|
6
6
|
<meta name="format-detection" content="telephone=no" />
|
|
7
7
|
<meta name="viewport" content="width=device-width, initial-scale=1, user-scalable=no" />
|