jopi-toolkit 3.0.12 → 3.0.15
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/dist/jk_data/index.d.ts +40 -0
- package/dist/jk_data/index.js +76 -0
- package/dist/jk_data/index.js.map +1 -0
- package/dist/jk_schemas/index.d.ts +76 -6
- package/dist/jk_schemas/index.js +82 -47
- package/dist/jk_schemas/index.js.map +1 -1
- package/dist/jk_schemas/jkSchemas.d.ts +188 -0
- package/dist/jk_schemas/jkSchemas.js +257 -0
- package/dist/jk_schemas/jkSchemas.js.map +1 -0
- package/dist/jk_timer/index.d.ts +2 -0
- package/dist/jk_timer/index.js +2 -0
- package/dist/jk_timer/index.js.map +1 -1
- package/dist/jk_tools/jBundler_ifServer.d.ts +1 -0
- package/dist/jk_tools/jBundler_ifServer.js +40 -10
- package/dist/jk_tools/jBundler_ifServer.js.map +1 -1
- package/package.json +10 -5
- package/src/jk_app/common.js +442 -0
- package/src/jk_crypto/jBundler_ifServer.js +16 -0
- package/src/jk_data/index.js +117 -0
- package/src/jk_data/index.ts +129 -0
- package/src/jk_events/index.js +213 -0
- package/src/jk_fs/index.js +2 -0
- package/src/jk_fs/jBundler_ifServer.js +729 -0
- package/src/jk_logs/index.js +371 -0
- package/src/jk_logs/jBundler_ifServer.js +24 -0
- package/src/jk_schemas/index.js +84 -47
- package/src/jk_schemas/index.ts +196 -69
- package/src/jk_thread/common.js +7 -0
- package/src/jk_timer/index.js +2 -0
- package/src/jk_timer/index.ts +3 -0
- package/src/jk_tools/common.js +101 -0
- package/src/jk_tools/index.js +1 -0
- package/src/jk_tools/jBundler_ifServer.js +215 -0
- package/src/jk_tools/jBundler_ifServer.ts +49 -11
- package/src/jk_translate/index.js +56 -0
- package/src/jk_what/jBundler_ifServer.js +5 -0
- package/src/jk_os/jBundler_ifServer.js +0 -132
|
@@ -0,0 +1,371 @@
|
|
|
1
|
+
// noinspection JSUnusedGlobalSymbols
|
|
2
|
+
var __extends = (this && this.__extends) || (function () {
|
|
3
|
+
var extendStatics = function (d, b) {
|
|
4
|
+
extendStatics = Object.setPrototypeOf ||
|
|
5
|
+
({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||
|
|
6
|
+
function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; };
|
|
7
|
+
return extendStatics(d, b);
|
|
8
|
+
};
|
|
9
|
+
return function (d, b) {
|
|
10
|
+
if (typeof b !== "function" && b !== null)
|
|
11
|
+
throw new TypeError("Class extends value " + String(b) + " is not a constructor or null");
|
|
12
|
+
extendStatics(d, b);
|
|
13
|
+
function __() { this.constructor = d; }
|
|
14
|
+
d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());
|
|
15
|
+
};
|
|
16
|
+
})();
|
|
17
|
+
import * as jk_terms from "jopi-toolkit/jk_term";
|
|
18
|
+
import { init } from "./jBundler_ifServer.ts";
|
|
19
|
+
export var LogLevel;
|
|
20
|
+
(function (LogLevel) {
|
|
21
|
+
LogLevel[LogLevel["SPAM"] = 1] = "SPAM";
|
|
22
|
+
LogLevel[LogLevel["INFO"] = 2] = "INFO";
|
|
23
|
+
LogLevel[LogLevel["WARN"] = 3] = "WARN";
|
|
24
|
+
LogLevel[LogLevel["ERROR"] = 4] = "ERROR";
|
|
25
|
+
LogLevel[LogLevel["NONE"] = 10] = "NONE";
|
|
26
|
+
})(LogLevel || (LogLevel = {}));
|
|
27
|
+
//endregion
|
|
28
|
+
//region Formater
|
|
29
|
+
var RED = jk_terms.C_RED;
|
|
30
|
+
var ORANGE = jk_terms.C_ORANGE;
|
|
31
|
+
var GREY = jk_terms.C_GREY;
|
|
32
|
+
var LIGHT_BLUE = jk_terms.C_LIGHT_BLUE;
|
|
33
|
+
var RESET = jk_terms.T_RESET;
|
|
34
|
+
export function formatDate1(timeStamp) {
|
|
35
|
+
var date = new Date(timeStamp);
|
|
36
|
+
return date.toISOString();
|
|
37
|
+
}
|
|
38
|
+
export var formater_simpleJson = function (entry) {
|
|
39
|
+
return JSON.stringify(entry);
|
|
40
|
+
};
|
|
41
|
+
export var formater_dateTypeTitleSourceData = function (entry) {
|
|
42
|
+
var date = formatDate1(entry.date);
|
|
43
|
+
var json = entry.data ? JSON.stringify(entry.data) : "";
|
|
44
|
+
var title = (entry.title || "").padEnd(50, " ");
|
|
45
|
+
json = entry.logger + " |>" + json;
|
|
46
|
+
switch (entry.level) {
|
|
47
|
+
case LogLevel.ERROR:
|
|
48
|
+
return "".concat(date, " - ERROR - ").concat(title).concat(json);
|
|
49
|
+
case LogLevel.WARN:
|
|
50
|
+
return "".concat(date, " - WARN - ").concat(title).concat(json);
|
|
51
|
+
case LogLevel.INFO:
|
|
52
|
+
return "".concat(date, " - INFO - ").concat(title).concat(json);
|
|
53
|
+
case LogLevel.SPAM:
|
|
54
|
+
return "".concat(date, " - SPAM - ").concat(title).concat(json);
|
|
55
|
+
default:
|
|
56
|
+
return "";
|
|
57
|
+
}
|
|
58
|
+
};
|
|
59
|
+
export var formater_typeTitleSourceData_colored = function (entry) {
|
|
60
|
+
var json = entry.data ? JSON.stringify(entry.data) : "";
|
|
61
|
+
var title = (entry.title || "").padEnd(50, " ");
|
|
62
|
+
json = entry.timeDif === undefined
|
|
63
|
+
? "".concat(entry.logger, " ").concat(json) : "".concat(entry.logger, " (").concat(entry.timeDif, " ms) ").concat(json);
|
|
64
|
+
switch (entry.level) {
|
|
65
|
+
case LogLevel.ERROR:
|
|
66
|
+
return "".concat(RED, "error").concat(RESET, " - ").concat(title).concat(GREY).concat(json).concat(RESET);
|
|
67
|
+
case LogLevel.WARN:
|
|
68
|
+
return "".concat(ORANGE, "warn ").concat(RESET, " - ").concat(title).concat(GREY).concat(json).concat(RESET);
|
|
69
|
+
case LogLevel.INFO:
|
|
70
|
+
return "".concat(LIGHT_BLUE, "info ").concat(RESET, " - ").concat(title).concat(GREY).concat(json).concat(RESET);
|
|
71
|
+
case LogLevel.SPAM:
|
|
72
|
+
return "".concat(GREY, "spam ").concat(RESET, " - ").concat(title).concat(GREY).concat(json).concat(RESET);
|
|
73
|
+
default:
|
|
74
|
+
return "";
|
|
75
|
+
}
|
|
76
|
+
};
|
|
77
|
+
var ConsoleLogWriter = /** @class */ (function () {
|
|
78
|
+
function ConsoleLogWriter(formater) {
|
|
79
|
+
if (formater === void 0) { formater = gDefaultFormater; }
|
|
80
|
+
this.formater = formater;
|
|
81
|
+
}
|
|
82
|
+
ConsoleLogWriter.prototype.addEntry = function (entry) {
|
|
83
|
+
console.log(this.formater(entry));
|
|
84
|
+
};
|
|
85
|
+
ConsoleLogWriter.prototype.addBatch = function (entries) {
|
|
86
|
+
var _this = this;
|
|
87
|
+
entries.forEach(function (e) { return _this.addEntry(e); });
|
|
88
|
+
};
|
|
89
|
+
return ConsoleLogWriter;
|
|
90
|
+
}());
|
|
91
|
+
var VoidLogWriter = /** @class */ (function () {
|
|
92
|
+
function VoidLogWriter() {
|
|
93
|
+
}
|
|
94
|
+
VoidLogWriter.prototype.addBatch = function (_entries) {
|
|
95
|
+
};
|
|
96
|
+
VoidLogWriter.prototype.addEntry = function (_entry) {
|
|
97
|
+
};
|
|
98
|
+
return VoidLogWriter;
|
|
99
|
+
}());
|
|
100
|
+
export { VoidLogWriter };
|
|
101
|
+
export function setDefaultWriter(writer) {
|
|
102
|
+
gDefaultWriter = writer;
|
|
103
|
+
}
|
|
104
|
+
export function getDefaultWriter() {
|
|
105
|
+
return gDefaultWriter;
|
|
106
|
+
}
|
|
107
|
+
export function setDefaultFormater(formater) {
|
|
108
|
+
gDefaultFormater = formater;
|
|
109
|
+
}
|
|
110
|
+
export function getDefaultFormater() {
|
|
111
|
+
return gDefaultFormater;
|
|
112
|
+
}
|
|
113
|
+
var gDefaultFormater = formater_typeTitleSourceData_colored;
|
|
114
|
+
var gDefaultWriter = new ConsoleLogWriter();
|
|
115
|
+
export function getLogger(name, parent) {
|
|
116
|
+
var fullName = name;
|
|
117
|
+
if (parent)
|
|
118
|
+
fullName = parent.fullName + '.' + name;
|
|
119
|
+
var level = getLogLevelFor(fullName);
|
|
120
|
+
switch (level) {
|
|
121
|
+
case LogLevel.SPAM:
|
|
122
|
+
return new Logger_Spam(parent, name);
|
|
123
|
+
case LogLevel.INFO:
|
|
124
|
+
return new Logger_Info(parent, name);
|
|
125
|
+
case LogLevel.WARN:
|
|
126
|
+
return new Logger_Warn(parent, name);
|
|
127
|
+
case LogLevel.ERROR:
|
|
128
|
+
return new Logger_Error(parent, name);
|
|
129
|
+
}
|
|
130
|
+
return new Logger_None(parent, name);
|
|
131
|
+
}
|
|
132
|
+
var JopiLogger = /** @class */ (function () {
|
|
133
|
+
function JopiLogger(parent, name) {
|
|
134
|
+
var _this = this;
|
|
135
|
+
this.name = name;
|
|
136
|
+
this._onLog = gDefaultWriter;
|
|
137
|
+
this.fullName = parent ? parent.fullName + '.' + name : name;
|
|
138
|
+
if (parent) {
|
|
139
|
+
this._onLog = parent._onLog;
|
|
140
|
+
}
|
|
141
|
+
var me = this;
|
|
142
|
+
this.hSpam = function (title, data) {
|
|
143
|
+
var td = _this.timeDif;
|
|
144
|
+
_this.timeDif = undefined;
|
|
145
|
+
data = _this.mergeData(data);
|
|
146
|
+
me._onLog.addEntry({
|
|
147
|
+
level: LogLevel.SPAM,
|
|
148
|
+
logger: me.fullName, date: Date.now(),
|
|
149
|
+
title: title,
|
|
150
|
+
data: data,
|
|
151
|
+
timeDif: td
|
|
152
|
+
});
|
|
153
|
+
};
|
|
154
|
+
this.hInfo = function (title, data) {
|
|
155
|
+
var td = _this.timeDif;
|
|
156
|
+
_this.timeDif = undefined;
|
|
157
|
+
data = _this.mergeData(data);
|
|
158
|
+
me._onLog.addEntry({
|
|
159
|
+
level: LogLevel.INFO,
|
|
160
|
+
logger: me.fullName, date: Date.now(),
|
|
161
|
+
title: title,
|
|
162
|
+
data: data,
|
|
163
|
+
timeDif: td
|
|
164
|
+
});
|
|
165
|
+
};
|
|
166
|
+
this.hWarn = function (title, data) {
|
|
167
|
+
var td = _this.timeDif;
|
|
168
|
+
_this.timeDif = undefined;
|
|
169
|
+
data = _this.mergeData(data);
|
|
170
|
+
me._onLog.addEntry({
|
|
171
|
+
level: LogLevel.WARN,
|
|
172
|
+
logger: me.fullName, date: Date.now(),
|
|
173
|
+
title: title,
|
|
174
|
+
data: data,
|
|
175
|
+
timeDif: td
|
|
176
|
+
});
|
|
177
|
+
};
|
|
178
|
+
this.hError = function (title, data) {
|
|
179
|
+
var td = _this.timeDif;
|
|
180
|
+
_this.timeDif = undefined;
|
|
181
|
+
data = _this.mergeData(data);
|
|
182
|
+
me._onLog.addEntry({
|
|
183
|
+
level: LogLevel.ERROR,
|
|
184
|
+
logger: me.fullName, date: Date.now(),
|
|
185
|
+
title: title,
|
|
186
|
+
data: data,
|
|
187
|
+
timeDif: td
|
|
188
|
+
});
|
|
189
|
+
};
|
|
190
|
+
}
|
|
191
|
+
JopiLogger.prototype.mergeData = function (data) {
|
|
192
|
+
if (!this.extraData)
|
|
193
|
+
return data;
|
|
194
|
+
var extraData = this.extraData;
|
|
195
|
+
this.extraData = undefined;
|
|
196
|
+
if (!data)
|
|
197
|
+
return extraData;
|
|
198
|
+
for (var p in extraData)
|
|
199
|
+
data[p] = extraData[p];
|
|
200
|
+
return data;
|
|
201
|
+
};
|
|
202
|
+
JopiLogger.prototype.setLogWriter = function (callback) {
|
|
203
|
+
if (!callback)
|
|
204
|
+
callback = gDefaultWriter;
|
|
205
|
+
this._onLog = callback;
|
|
206
|
+
};
|
|
207
|
+
JopiLogger.prototype.spam = function (_l) {
|
|
208
|
+
return false;
|
|
209
|
+
};
|
|
210
|
+
JopiLogger.prototype.info = function (_l) {
|
|
211
|
+
return false;
|
|
212
|
+
};
|
|
213
|
+
JopiLogger.prototype.warn = function (_l) {
|
|
214
|
+
return false;
|
|
215
|
+
};
|
|
216
|
+
JopiLogger.prototype.error = function (_l) {
|
|
217
|
+
return false;
|
|
218
|
+
};
|
|
219
|
+
JopiLogger.prototype.beginSpam = function (l) {
|
|
220
|
+
return gVoidLoggerGroupCallback;
|
|
221
|
+
};
|
|
222
|
+
JopiLogger.prototype.beginInfo = function (l) {
|
|
223
|
+
return gVoidLoggerGroupCallback;
|
|
224
|
+
};
|
|
225
|
+
JopiLogger.prototype.doBegin = function (l, w) {
|
|
226
|
+
var _this = this;
|
|
227
|
+
var startTime = Date.now();
|
|
228
|
+
return function (data) {
|
|
229
|
+
_this.timeDif = Date.now() - startTime;
|
|
230
|
+
_this.doCall(l, w, data);
|
|
231
|
+
};
|
|
232
|
+
};
|
|
233
|
+
JopiLogger.prototype.doCall = function (l, w, data) {
|
|
234
|
+
this.extraData = data;
|
|
235
|
+
if (l) {
|
|
236
|
+
if (l instanceof Function) {
|
|
237
|
+
l(w);
|
|
238
|
+
}
|
|
239
|
+
else {
|
|
240
|
+
w(l);
|
|
241
|
+
}
|
|
242
|
+
}
|
|
243
|
+
return true;
|
|
244
|
+
};
|
|
245
|
+
return JopiLogger;
|
|
246
|
+
}());
|
|
247
|
+
var Logger_None = /** @class */ (function (_super) {
|
|
248
|
+
__extends(Logger_None, _super);
|
|
249
|
+
function Logger_None() {
|
|
250
|
+
return _super !== null && _super.apply(this, arguments) || this;
|
|
251
|
+
}
|
|
252
|
+
return Logger_None;
|
|
253
|
+
}(JopiLogger));
|
|
254
|
+
var Logger_Spam = /** @class */ (function (_super) {
|
|
255
|
+
__extends(Logger_Spam, _super);
|
|
256
|
+
function Logger_Spam() {
|
|
257
|
+
return _super !== null && _super.apply(this, arguments) || this;
|
|
258
|
+
}
|
|
259
|
+
Logger_Spam.prototype.spam = function (l) {
|
|
260
|
+
return this.doCall(l, this.hSpam);
|
|
261
|
+
};
|
|
262
|
+
Logger_Spam.prototype.info = function (l) {
|
|
263
|
+
return this.doCall(l, this.hInfo);
|
|
264
|
+
};
|
|
265
|
+
Logger_Spam.prototype.warn = function (l) {
|
|
266
|
+
return this.doCall(l, this.hWarn);
|
|
267
|
+
};
|
|
268
|
+
Logger_Spam.prototype.error = function (l) {
|
|
269
|
+
return this.doCall(l, this.hError);
|
|
270
|
+
};
|
|
271
|
+
Logger_Spam.prototype.beginSpam = function (l) {
|
|
272
|
+
return this.doBegin(l, this.hSpam);
|
|
273
|
+
};
|
|
274
|
+
Logger_Spam.prototype.beginInfo = function (l) {
|
|
275
|
+
return this.doBegin(l, this.hInfo);
|
|
276
|
+
};
|
|
277
|
+
return Logger_Spam;
|
|
278
|
+
}(JopiLogger));
|
|
279
|
+
var Logger_Info = /** @class */ (function (_super) {
|
|
280
|
+
__extends(Logger_Info, _super);
|
|
281
|
+
function Logger_Info() {
|
|
282
|
+
return _super !== null && _super.apply(this, arguments) || this;
|
|
283
|
+
}
|
|
284
|
+
Logger_Info.prototype.info = function (l) {
|
|
285
|
+
return this.doCall(l, this.hInfo);
|
|
286
|
+
};
|
|
287
|
+
Logger_Info.prototype.warn = function (l) {
|
|
288
|
+
return this.doCall(l, this.hWarn);
|
|
289
|
+
};
|
|
290
|
+
Logger_Info.prototype.error = function (l) {
|
|
291
|
+
return this.doCall(l, this.hError);
|
|
292
|
+
};
|
|
293
|
+
Logger_Info.prototype.beginInfo = function (l) {
|
|
294
|
+
return this.doBegin(l, this.hInfo);
|
|
295
|
+
};
|
|
296
|
+
return Logger_Info;
|
|
297
|
+
}(JopiLogger));
|
|
298
|
+
var Logger_Warn = /** @class */ (function (_super) {
|
|
299
|
+
__extends(Logger_Warn, _super);
|
|
300
|
+
function Logger_Warn() {
|
|
301
|
+
return _super !== null && _super.apply(this, arguments) || this;
|
|
302
|
+
}
|
|
303
|
+
Logger_Warn.prototype.warn = function (l) {
|
|
304
|
+
return this.doCall(l, this.hWarn);
|
|
305
|
+
};
|
|
306
|
+
Logger_Warn.prototype.error = function (l) {
|
|
307
|
+
return this.doCall(l, this.hError);
|
|
308
|
+
};
|
|
309
|
+
return Logger_Warn;
|
|
310
|
+
}(JopiLogger));
|
|
311
|
+
var Logger_Error = /** @class */ (function (_super) {
|
|
312
|
+
__extends(Logger_Error, _super);
|
|
313
|
+
function Logger_Error() {
|
|
314
|
+
return _super !== null && _super.apply(this, arguments) || this;
|
|
315
|
+
}
|
|
316
|
+
Logger_Error.prototype.error = function (l) {
|
|
317
|
+
return this.doCall(l, this.hError);
|
|
318
|
+
};
|
|
319
|
+
return Logger_Error;
|
|
320
|
+
}(JopiLogger));
|
|
321
|
+
var gVoidLoggerGroupCallback = function () { };
|
|
322
|
+
function getLogLevelName(level) {
|
|
323
|
+
switch (level) {
|
|
324
|
+
case LogLevel.SPAM:
|
|
325
|
+
return "SPAM";
|
|
326
|
+
case LogLevel.ERROR:
|
|
327
|
+
return "ERROR";
|
|
328
|
+
case LogLevel.INFO:
|
|
329
|
+
return "INFO";
|
|
330
|
+
case LogLevel.WARN:
|
|
331
|
+
return "WARN";
|
|
332
|
+
case LogLevel.NONE:
|
|
333
|
+
return "NONE";
|
|
334
|
+
}
|
|
335
|
+
}
|
|
336
|
+
function getLogLevelByName(name) {
|
|
337
|
+
switch (name) {
|
|
338
|
+
case "NONE": return LogLevel.NONE;
|
|
339
|
+
case "SPAM": return LogLevel.SPAM;
|
|
340
|
+
case "INFO": return LogLevel.INFO;
|
|
341
|
+
case "WARN": return LogLevel.WARN;
|
|
342
|
+
case "ERROR": return LogLevel.ERROR;
|
|
343
|
+
}
|
|
344
|
+
return undefined;
|
|
345
|
+
}
|
|
346
|
+
var Initializer = /** @class */ (function () {
|
|
347
|
+
function Initializer() {
|
|
348
|
+
}
|
|
349
|
+
Initializer.prototype.setLogLevel = function (name, config) {
|
|
350
|
+
var logLevel = getLogLevelByName(config.level || "NONE");
|
|
351
|
+
if (!logLevel)
|
|
352
|
+
logLevel = LogLevel.NONE;
|
|
353
|
+
gRegistry[name] = logLevel;
|
|
354
|
+
};
|
|
355
|
+
return Initializer;
|
|
356
|
+
}());
|
|
357
|
+
function getLogLevelFor(name) {
|
|
358
|
+
var entry = gRegistry[name];
|
|
359
|
+
if (entry !== undefined)
|
|
360
|
+
return entry;
|
|
361
|
+
for (var prefix in gRegistry) {
|
|
362
|
+
if (name.startsWith(prefix + ".")) {
|
|
363
|
+
return gRegistry[prefix];
|
|
364
|
+
}
|
|
365
|
+
}
|
|
366
|
+
return gDefaultLogLevel;
|
|
367
|
+
}
|
|
368
|
+
var gDefaultLogLevel = LogLevel.WARN;
|
|
369
|
+
var gRegistry = {};
|
|
370
|
+
//endregion
|
|
371
|
+
init(new Initializer());
|
|
@@ -0,0 +1,24 @@
|
|
|
1
|
+
import * as jk_app from "jopi-toolkit/jk_app";
|
|
2
|
+
import * as jk_fs from "jopi-toolkit/jk_fs";
|
|
3
|
+
export function init(init) {
|
|
4
|
+
var mainDir = jk_app.findPackageJsonDir();
|
|
5
|
+
var filePath = jk_fs.join(mainDir, "logConfig.json");
|
|
6
|
+
if (!jk_fs.isFileSync(filePath))
|
|
7
|
+
return;
|
|
8
|
+
var text = jk_fs.readTextFromFileSync(jk_fs.join(mainDir, "logConfig.json"));
|
|
9
|
+
if (!text)
|
|
10
|
+
return;
|
|
11
|
+
var logJson = JSON.parse(text);
|
|
12
|
+
if (!logJson.config)
|
|
13
|
+
return;
|
|
14
|
+
for (var logName in logJson.config) {
|
|
15
|
+
var logConfig = logJson.config[logName];
|
|
16
|
+
if (typeof (logConfig) === "string") {
|
|
17
|
+
logConfig = { level: logConfig.toUpperCase().trim() };
|
|
18
|
+
}
|
|
19
|
+
else if (!logConfig) {
|
|
20
|
+
logConfig = { level: "none" };
|
|
21
|
+
}
|
|
22
|
+
init.setLogLevel(logName, logConfig);
|
|
23
|
+
}
|
|
24
|
+
}
|
package/src/jk_schemas/index.js
CHANGED
|
@@ -48,54 +48,10 @@ var SchemaError = /** @class */ (function (_super) {
|
|
|
48
48
|
export function declareError(message, errorCode) {
|
|
49
49
|
throw new SchemaError(message, errorCode);
|
|
50
50
|
}
|
|
51
|
-
var byTypeValidator = {
|
|
52
|
-
"string": function (v, f) {
|
|
53
|
-
if (typeof v !== "string") {
|
|
54
|
-
declareError(f.errorMessage_theValueIsInvalid || "Value must be a string", "INVALID_TYPE");
|
|
55
|
-
return;
|
|
56
|
-
}
|
|
57
|
-
var sf = f;
|
|
58
|
-
if ((sf.minLength !== undefined) && (v.length < sf.minLength)) {
|
|
59
|
-
declareError(sf.errorMessage_minLength || "Value must be at least ".concat(sf.minLength, " characters long"), "INVALID_LENGTH");
|
|
60
|
-
return;
|
|
61
|
-
}
|
|
62
|
-
if ((sf.maxLength !== undefined) && (v.length > sf.maxLength)) {
|
|
63
|
-
declareError(sf.errorMessage_maxLength || "Value must be less than ".concat(sf.maxLength, " characters long"), "INVALID_LENGTH");
|
|
64
|
-
return;
|
|
65
|
-
}
|
|
66
|
-
},
|
|
67
|
-
"number": function (v, f) {
|
|
68
|
-
if (typeof v !== "number") {
|
|
69
|
-
declareError(f.errorMessage_theValueIsInvalid || "Value must be a number", "INVALID_TYPE");
|
|
70
|
-
}
|
|
71
|
-
var sf = f;
|
|
72
|
-
if ((sf.minValue !== undefined) && (v < sf.minValue)) {
|
|
73
|
-
declareError(sf.errorMessage_minValue || "Value must be at least ".concat(sf.minValue), "INVALID_LENGTH");
|
|
74
|
-
return;
|
|
75
|
-
}
|
|
76
|
-
if ((sf.maxValue !== undefined) && (v > sf.maxValue)) {
|
|
77
|
-
declareError(sf.errorMessage_maxValue || "Value must be less than ".concat(sf.maxValue), "INVALID_LENGTH");
|
|
78
|
-
return;
|
|
79
|
-
}
|
|
80
|
-
},
|
|
81
|
-
"boolean": function (v, f) {
|
|
82
|
-
if (typeof v !== "boolean") {
|
|
83
|
-
declareError(f.errorMessage_theValueIsInvalid || "Value must be a boolean", "INVALID_TYPE");
|
|
84
|
-
}
|
|
85
|
-
var sf = f;
|
|
86
|
-
if (sf.requireTrue) {
|
|
87
|
-
if (v !== true) {
|
|
88
|
-
declareError(sf.errorMessage_requireTrue || "Value must be true", "INVALID_VALUE");
|
|
89
|
-
}
|
|
90
|
-
}
|
|
91
|
-
else if (sf.requireFalse) {
|
|
92
|
-
if (v !== false) {
|
|
93
|
-
declareError(sf.errorMessage_requireFalse || "Value must be false", "INVALID_VALUE");
|
|
94
|
-
}
|
|
95
|
-
}
|
|
96
|
-
}
|
|
97
|
-
};
|
|
98
51
|
export function validateSchema(data, schema) {
|
|
52
|
+
// Normalize the data.
|
|
53
|
+
// It's a step where we apply automatic corrections.
|
|
54
|
+
//
|
|
99
55
|
if (schema.schemaMeta.normalize) {
|
|
100
56
|
try {
|
|
101
57
|
schema.schemaMeta.normalize(data);
|
|
@@ -112,6 +68,11 @@ export function validateSchema(data, schema) {
|
|
|
112
68
|
}
|
|
113
69
|
}
|
|
114
70
|
}
|
|
71
|
+
// >>> Check each field individually.
|
|
72
|
+
// Each time it will:
|
|
73
|
+
// - Normalize the value.
|
|
74
|
+
// - Check if optional + undefined.
|
|
75
|
+
// - Apply validator for the field type.
|
|
115
76
|
var fieldErrors;
|
|
116
77
|
for (var fieldName in schema.desc) {
|
|
117
78
|
var defaultErrorMessage = void 0;
|
|
@@ -159,6 +120,8 @@ export function validateSchema(data, schema) {
|
|
|
159
120
|
}
|
|
160
121
|
}
|
|
161
122
|
}
|
|
123
|
+
// >>> Validate the whole fields.
|
|
124
|
+
// Allow validating if values are ok with each others.
|
|
162
125
|
if (schema.schemaMeta.validate) {
|
|
163
126
|
try {
|
|
164
127
|
schema.schemaMeta.validate(data);
|
|
@@ -176,10 +139,14 @@ export function validateSchema(data, schema) {
|
|
|
176
139
|
}
|
|
177
140
|
}
|
|
178
141
|
}
|
|
142
|
+
// No error ? --> undefined.
|
|
143
|
+
// Otherwise returns the errors.
|
|
144
|
+
//
|
|
179
145
|
if (!fieldErrors)
|
|
180
146
|
return undefined;
|
|
181
147
|
return { fields: fieldErrors };
|
|
182
148
|
}
|
|
149
|
+
var byTypeValidator = {};
|
|
183
150
|
export function registerSchema(schemaId, schema, meta) {
|
|
184
151
|
if (!schemaId) {
|
|
185
152
|
throw new Error("jk_schemas - Schema id required. If you need an uid you can use: " + generateUUIDv4());
|
|
@@ -223,12 +190,82 @@ export function string(title, optional, infos) {
|
|
|
223
190
|
}
|
|
224
191
|
return __assign(__assign({}, infos), { title: title, optional: optional, type: "string" });
|
|
225
192
|
}
|
|
193
|
+
byTypeValidator["string"] = function (v, f) {
|
|
194
|
+
if (typeof v !== "string") {
|
|
195
|
+
declareError(f.errorMessage_theValueIsInvalid || "Value must be a string", "INVALID_TYPE");
|
|
196
|
+
return;
|
|
197
|
+
}
|
|
198
|
+
var sf = f;
|
|
199
|
+
if ((sf.minLength !== undefined) && (v.length < sf.minLength)) {
|
|
200
|
+
declareError(sf.errorMessage_minLength || "Value must be at least ".concat(sf.minLength, " characters long"), "INVALID_LENGTH");
|
|
201
|
+
return;
|
|
202
|
+
}
|
|
203
|
+
if ((sf.maxLength !== undefined) && (v.length > sf.maxLength)) {
|
|
204
|
+
declareError(sf.errorMessage_maxLength || "Value must be less than ".concat(sf.maxLength, " characters long"), "INVALID_LENGTH");
|
|
205
|
+
return;
|
|
206
|
+
}
|
|
207
|
+
};
|
|
226
208
|
export function boolean(title, optional, infos) {
|
|
227
209
|
return __assign(__assign({}, infos), { title: title, optional: optional, type: "boolean" });
|
|
228
210
|
}
|
|
211
|
+
byTypeValidator["boolean"] = function (v, f) {
|
|
212
|
+
if (typeof v !== "boolean") {
|
|
213
|
+
declareError(f.errorMessage_theValueIsInvalid || "Value must be a boolean", "INVALID_TYPE");
|
|
214
|
+
}
|
|
215
|
+
var sf = f;
|
|
216
|
+
if (sf.requireTrue) {
|
|
217
|
+
if (v !== true) {
|
|
218
|
+
declareError(sf.errorMessage_requireTrue || "Value must be true", "INVALID_VALUE");
|
|
219
|
+
}
|
|
220
|
+
}
|
|
221
|
+
else if (sf.requireFalse) {
|
|
222
|
+
if (v !== false) {
|
|
223
|
+
declareError(sf.errorMessage_requireFalse || "Value must be false", "INVALID_VALUE");
|
|
224
|
+
}
|
|
225
|
+
}
|
|
226
|
+
};
|
|
229
227
|
export function number(title, optional, infos) {
|
|
230
228
|
return __assign(__assign({}, infos), { title: title, optional: optional, type: "number" });
|
|
231
229
|
}
|
|
230
|
+
export function formatNumber(value, fieldNumber, defaultLocalFormat, defaultCurrency) {
|
|
231
|
+
if (defaultLocalFormat === void 0) { defaultLocalFormat = "en-US"; }
|
|
232
|
+
if (defaultCurrency === void 0) { defaultCurrency = "USD"; }
|
|
233
|
+
var amount = parseFloat(value);
|
|
234
|
+
var localFormat = fieldNumber.localFormat || defaultLocalFormat;
|
|
235
|
+
switch (fieldNumber.displayType) {
|
|
236
|
+
case "currency":
|
|
237
|
+
return new Intl.NumberFormat(localFormat, {
|
|
238
|
+
style: "currency",
|
|
239
|
+
currency: fieldNumber.currency || defaultCurrency,
|
|
240
|
+
}).format(amount);
|
|
241
|
+
default:
|
|
242
|
+
return new Intl.NumberFormat(localFormat, { style: fieldNumber.displayType || "decimal" }).format(amount);
|
|
243
|
+
}
|
|
244
|
+
}
|
|
245
|
+
byTypeValidator["number"] = function (v, f) {
|
|
246
|
+
if (typeof v !== "number") {
|
|
247
|
+
declareError(f.errorMessage_theValueIsInvalid || "Value must be a number", "INVALID_TYPE");
|
|
248
|
+
}
|
|
249
|
+
var sf = f;
|
|
250
|
+
if ((sf.minValue !== undefined) && (v < sf.minValue)) {
|
|
251
|
+
declareError(sf.errorMessage_minValue || "Value must be at least ".concat(sf.minValue), "INVALID_LENGTH");
|
|
252
|
+
return;
|
|
253
|
+
}
|
|
254
|
+
if ((sf.maxValue !== undefined) && (v > sf.maxValue)) {
|
|
255
|
+
declareError(sf.errorMessage_maxValue || "Value must be less than ".concat(sf.maxValue), "INVALID_LENGTH");
|
|
256
|
+
return;
|
|
257
|
+
}
|
|
258
|
+
};
|
|
259
|
+
//endregion
|
|
260
|
+
//region Currency
|
|
261
|
+
export function currency(title, optional, infos) {
|
|
262
|
+
return number(title, optional, __assign(__assign({}, infos), { displayType: "currency" }));
|
|
263
|
+
}
|
|
264
|
+
//endregion
|
|
265
|
+
//region Percent
|
|
266
|
+
export function percent(title, optional, infos) {
|
|
267
|
+
return number(title, optional, __assign(__assign({}, infos), { displayType: "percent" }));
|
|
268
|
+
}
|
|
232
269
|
export function file(title, optional, infos) {
|
|
233
270
|
return __assign(__assign({}, infos), { title: title, optional: optional, type: "file" });
|
|
234
271
|
}
|