cronapp-common-js 1.0.0

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/js/parser.js ADDED
@@ -0,0 +1,551 @@
1
+ (function() {
2
+
3
+ var ISO_PATTERN = new RegExp("^(\\d{4}-[01]\\d-[0-3]\\dT[0-2]\\d:[0-5]\\d:[0-5]\\d\\.\\d+([+-][0-2]\\d:[0-5]\\d|Z))|(\\d{4}-[01]\\d-[0-3]\\dT[0-2]\\d:[0-5]\\d:[0-5]\\d([+-][0-2]\\d:[0-5]\\d|Z)?)|(\\d{4}-[01]\\d-[0-3]\\dT[0-2]\\d:[0-5]\\d([+-][0-2]\\d:[0-5]\\d|Z))$");
4
+ var TIME_PATTERN = new RegExp("^PT(?:(\\d\\d?)H)?(?:(\\d\\d?)M)?(?:(\\d\\d?)(?:\\.(\\d\\d?\\d?)?)?S)?$");
5
+ var NUMBER_STR_PATTERN = new RegExp("\\d+");
6
+
7
+ window.stringToJs = function(value) {
8
+ var formated = "";
9
+
10
+ if (value != undefined && value != null) {
11
+ value = value.toString();
12
+ for (var i = 0; i < value.length; i++) {
13
+ var c = value.charAt(i);
14
+ if (c == "\\") {
15
+ formated += "\\\\";
16
+ } else if (c == "'") {
17
+ formated += "\\'";
18
+ } else if (c == "\"") {
19
+ formated += "\\\"";
20
+ } else if (c == "\n") {
21
+ formated += "\\n";
22
+ } else if (c == "\r") {
23
+ } else {
24
+ formated += c;
25
+ }
26
+ }
27
+ }
28
+
29
+ return formated;
30
+ }
31
+
32
+ window.objToOData = function(o, escape) {
33
+ if (escape == undefined || escape == null) {
34
+ escape = true;
35
+ }
36
+ if (o == null || o == undefined) {
37
+ return "null";
38
+ }
39
+ else if (typeof o == 'number' || typeof o == 'boolean') {
40
+ return o+"";
41
+ }
42
+ else if (o instanceof Date) {
43
+ return "datetimeoffset'"+o.toISOString()+"'";
44
+ }
45
+
46
+ if (typeof o == 'string' && escape) {
47
+ return "'" + o.replaceAll("'", "''") + "'";
48
+ }
49
+ return "'" + o + "'";
50
+ }
51
+
52
+ window.objectsAreEqual = function(v1, v2, type) {
53
+ v1 = oDataToObj(v1, undefined, type);
54
+ v2 = oDataToObj(v2, undefined, type);
55
+
56
+ if (v1 instanceof Date && v2 instanceof Date) {
57
+ return v1.getTime() == v2.getTime();
58
+ }
59
+
60
+ return v1 == v2;
61
+ }
62
+
63
+ window.oDataToObj = function(value, unquote, type) {
64
+ if (unquote == null || unquote == undefined) {
65
+ unquote = true;
66
+ }
67
+
68
+ if (typeof value == 'string') {
69
+ if (type && type == 'String') {
70
+ return value;
71
+ }
72
+ if (value.length >= 10 && value.match(ISO_PATTERN) && value.length < 100) {
73
+ return new Date(value);
74
+ }
75
+ else if (value.length >= 4 && value.match(TIME_PATTERN) && value.length < 100) {
76
+ try {
77
+ var momentDate = moment().utcOffset(window.systemTimeZoneOffset, true);
78
+
79
+ var g = TIME_PATTERN.exec(value);
80
+
81
+ momentDate = momentDate.hour(g[1]).minute(g[2]).second(g[3]).year(1970).dayOfYear(1).month(0);
82
+
83
+ return momentDate.toDate();
84
+ }
85
+ catch (e) {
86
+ return value;
87
+ }
88
+ }
89
+ else if (value.length >= 10 && value.substring(0, 6) == '/Date(' && value.substring(value.length - 2, value.length) == ")/") {
90
+ var r = value.substring(6, value.length-2);
91
+ return new Date(parseInt(r));
92
+ }
93
+ else if (value.length >= 20 && value.substring(0, 9) == "datetime'" && value.substring(value.length - 1, value.length) == "'") {
94
+ var r = value.substring(9, value.length-1);
95
+ if (r.match(NUMBER_STR_PATTERN)) {
96
+ return new Date(parseInt(r));
97
+ }
98
+ return new Date(r);
99
+ }
100
+ else if (value.length >= 20 && value.substring(0, 15) == "datetimeoffset'" && value.substring(value.length - 1, value.length) == "'") {
101
+ var r = value.substring(15, value.length-1);
102
+ if (r.match(NUMBER_STR_PATTERN)) {
103
+ return new Date(parseInt(r));
104
+ }
105
+ return new Date(r);
106
+ }
107
+
108
+ else if (value.length >= 2 && ((value.charAt(0) == "'" && value.charAt(value.length-1) == "'") || (value.charAt(0) == "\"" && value.charAt(value.length-1) == "\"")) ) {
109
+ var r = value.substring(1, value.length-1);
110
+ return r;
111
+ }
112
+
113
+ else if (value == 'true' || value == 'false') {
114
+ return (value == 'true')
115
+ }
116
+
117
+ else if (value == 'null') {
118
+ return null;
119
+ }
120
+ else if (!type && value && value.startsWith('0') ) {
121
+ return value;
122
+ }
123
+ else if (!isNaN(value) && !isNaN(parseFloat(value))) {
124
+ return parseFloat(value);
125
+ }
126
+ }
127
+
128
+ return value;
129
+ }
130
+
131
+ window.parseXml = function(xml) {
132
+ var dom = null;
133
+
134
+ if (window.DOMParser) {
135
+ try {
136
+ dom = (new DOMParser()).parseFromString(xml, "text/xml");
137
+ } catch (e) {
138
+ dom = null;
139
+ }
140
+ } else if (window.ActiveXObject) {
141
+ try {
142
+ dom = new ActiveXObject('Microsoft.XMLDOM');
143
+ dom.async = false;
144
+ if (!dom.loadXML(xml)) {
145
+ console.log(dom.parseError.reason + dom.parseError.srcText);
146
+ }
147
+ }
148
+ catch (e) {
149
+ dom = null;
150
+ }
151
+ }
152
+
153
+ return dom;
154
+ }
155
+
156
+ window.xml2json = function(xml, tab) {
157
+ var X = {
158
+ toObj: function(xml) {
159
+ var o = {};
160
+ if (xml.nodeType==1) { // element node ..
161
+ if (xml.attributes.length) // element with attributes ..
162
+ for (var i=0; i<xml.attributes.length; i++)
163
+ o["@"+xml.attributes[i].nodeName] = (xml.attributes[i].nodeValue||"").toString();
164
+ if (xml.firstChild) { // element has child nodes ..
165
+ var textChild=0, cdataChild=0, hasElementChild=false;
166
+ for (var n=xml.firstChild; n; n=n.nextSibling) {
167
+ if (n.nodeType==1) hasElementChild = true;
168
+ else if (n.nodeType==3 && n.nodeValue.match(/[^ \f\n\r\t\v]/)) textChild++; // non-whitespace text
169
+ else if (n.nodeType==4) cdataChild++; // cdata section node
170
+ }
171
+ if (hasElementChild) {
172
+ if (textChild < 2 && cdataChild < 2) {
173
+ X.removeWhite(xml);
174
+ for (var n=xml.firstChild; n; n=n.nextSibling) {
175
+ if (n.nodeType == 3)
176
+ o["#text"] = X.escape(n.nodeValue);
177
+ else if (n.nodeType == 4)
178
+ o["#cdata"] = X.escape(n.nodeValue);
179
+ else if (o[X.normalizeName(n.nodeName)]) { // multiple occurence of element ..
180
+ if (o[X.normalizeName(n.nodeName)] instanceof Array)
181
+ o[X.normalizeName(n.nodeName)][o[X.normalizeName(n.nodeName)].length] = X.toObj(n);
182
+ else
183
+ o[X.normalizeName(n.nodeName)] = [o[X.normalizeName(n.nodeName)], X.toObj(n)];
184
+ } else {
185
+ o[X.normalizeName(n.nodeName)] = X.toObj(n);
186
+ }
187
+ }
188
+ } else {
189
+ if (!xml.attributes.length)
190
+ o = X.escape(X.innerXml(xml));
191
+ else
192
+ o["#text"] = X.escape(X.innerXml(xml));
193
+ }
194
+ } else if (textChild) { // pure text
195
+ if (!xml.attributes.length)
196
+ o = X.escape(X.innerXml(xml));
197
+ else
198
+ o["#text"] = X.escape(X.innerXml(xml));
199
+ } else if (cdataChild) { // cdata
200
+ if (cdataChild > 1)
201
+ o = X.escape(X.innerXml(xml));
202
+ else
203
+ for (var n=xml.firstChild; n; n=n.nextSibling)
204
+ o["#cdata"] = X.escape(n.nodeValue);
205
+ }
206
+ }
207
+
208
+ if (!xml.attributes.length && !xml.firstChild) {
209
+ o = null;
210
+ }
211
+
212
+ } else if (xml.nodeType==9) {
213
+ o = X.toObj(xml.documentElement);
214
+ } else {
215
+ console.log("unhandled node type: " + xml.nodeType);
216
+ }
217
+
218
+ return o;
219
+ },
220
+ normalizeName : function(str) {
221
+ if (str && (str.length > 5) && (str.indexOf('cron-') == 0)) {
222
+ str = str.substr(5);
223
+
224
+ var result = "";
225
+ var camelCase = false;
226
+ for (var i in str) {
227
+ var s = str.charAt(i);
228
+ if (camelCase && s != "-") {
229
+ result += s.toUpperCase();
230
+ camelCase = false;
231
+ } else if (s == "-") {
232
+ camelCase = true;
233
+ } else {
234
+ result += s.toLowerCase();
235
+ }
236
+ }
237
+
238
+ return result;
239
+ }
240
+ },
241
+ toJson: function(o, name, ind) {
242
+ var json = name ? ("\""+name+"\"") : "";
243
+ if (o instanceof Array) {
244
+ for (var i=0,n=o.length; i<n; i++)
245
+ o[i] = X.toJson(o[i], "", ind+"\t");
246
+ json += (name?":[":"[") + (o.length > 1 ? ("\n"+ind+"\t"+o.join(",\n"+ind+"\t")+"\n"+ind) : o.join("")) + "]";
247
+ }
248
+ else if (o == null)
249
+ json += (name&&":") + "null";
250
+ else if (typeof(o) == "object") {
251
+ var arr = [];
252
+ for (var m in o)
253
+ arr[arr.length] = X.toJson(o[m], m, ind+"\t");
254
+ json += (name?":{":"{") + (arr.length > 1 ? ("\n"+ind+"\t"+arr.join(",\n"+ind+"\t")+"\n"+ind) : arr.join("")) + "}";
255
+ }
256
+ else if (typeof(o) == "string") {
257
+ var value = $.trim(o.toString());
258
+ json += (name && ":") + "\"" + X.htmlDecode(value) + "\"";
259
+ } else {
260
+ json += (name && ":") + X.htmlDecode($.trim(o.toString()));
261
+ }
262
+
263
+ return json;
264
+ },
265
+ htmlDecode: function (input){
266
+ var doc = new DOMParser().parseFromString(input, "text/html");
267
+ return doc.documentElement.textContent;
268
+ },
269
+ innerXml: function(node) {
270
+ var s = "";
271
+ if ("innerHTML" in node)
272
+ s = node.innerHTML;
273
+ else {
274
+ var asXml = function(n) {
275
+ var s = "";
276
+ if (n.nodeType == 1) {
277
+ s += "<" + n.nodeName;
278
+ for (var i=0; i<n.attributes.length;i++)
279
+ s += " " + n.attributes[i].nodeName + "=\"" + (n.attributes[i].nodeValue||"").toString() + "\"";
280
+ if (n.firstChild) {
281
+ s += ">";
282
+ for (var c=n.firstChild; c; c=c.nextSibling)
283
+ s += asXml(c);
284
+ s += "</"+n.nodeName+">";
285
+ }
286
+ else
287
+ s += "/>";
288
+ }
289
+ else if (n.nodeType == 3)
290
+ s += n.nodeValue;
291
+ else if (n.nodeType == 4)
292
+ s += "<![CDATA[" + n.nodeValue + "]]>";
293
+ return s;
294
+ };
295
+ for (var c=node.firstChild; c; c=c.nextSibling)
296
+ s += asXml(c);
297
+ }
298
+ return s;
299
+ },
300
+ escape: function(txt) {
301
+ return txt.trim()
302
+ .replace(/[\\]/g, "\\\\")
303
+ .replace(/[\"]/g, '\\"')
304
+ .replace(/[\n]/g, '\\n')
305
+ .replace(/[\r]/g, '\\r');
306
+ },
307
+ removeWhite: function(e) {
308
+ e.normalize();
309
+ for (var n = e.firstChild; n; ) {
310
+ if (n.nodeType == 3) { // text node
311
+ if (!n.nodeValue.match(/[^ \f\n\r\t\v]/)) { // pure whitespace text node
312
+ var nxt = n.nextSibling;
313
+ e.removeChild(n);
314
+ n = nxt;
315
+ }
316
+ else
317
+ n = n.nextSibling;
318
+ }
319
+ else if (n.nodeType == 1) { // element node
320
+ X.removeWhite(n);
321
+ n = n.nextSibling;
322
+ }
323
+ else // any other node
324
+ n = n.nextSibling;
325
+ }
326
+ return e;
327
+ }
328
+ };
329
+
330
+ if (xml.nodeType == 9) {
331
+ xml = xml.documentElement;
332
+ }
333
+
334
+ var json = X.toJson(X.toObj(X.removeWhite(xml)), xml.nodeName, "\t");
335
+
336
+ return "{\n" + tab + (tab ? json.replace(/\t/g, tab) : json.replace(/\t|\n/g, "")) + "\n}";
337
+ }
338
+
339
+ window.json2xml = function(json, tagName) {
340
+ var a = json;
341
+ var c = document.createElement(tagName);
342
+
343
+ var t = function (v) {
344
+ return {}.toString.call(v).split(' ')[1].slice(0, -1).toLowerCase();
345
+ };
346
+
347
+ var normalizeName = function(str) {
348
+ var result = "";
349
+
350
+ for (var i in str) {
351
+ var s = str.charAt(i);
352
+
353
+ if ((i > 0) && (s == s.toUpperCase())) {
354
+ result += "-";
355
+ }
356
+
357
+ result += s.toLowerCase();
358
+ }
359
+
360
+ return 'cron-' + result;
361
+ }
362
+
363
+ var f = function (f, c, a, s) {
364
+ if (t(a) != "array" && t(a) != "object") {
365
+ if (t(a) != "null") {
366
+ c.appendChild(document.createTextNode(a));
367
+ }
368
+ } else {
369
+ for (var k in a) {
370
+ var v = a[k];
371
+ if (k == "__type" && t(a) == "object") {
372
+ c.setAttribute("__type", v);
373
+ } else {
374
+ if (t(v) == "object") {
375
+ var ch = c.appendChild(document.createElementNS(null, normalizeName(k)));
376
+ f(f, ch, v);
377
+ } else if (t(v) == "array") {
378
+ for (var item in v) {
379
+ var ch = c.appendChild(document.createElementNS(null, normalizeName(k)));
380
+ f(f, ch, v[item], true);
381
+ }
382
+ } else {
383
+ var va = document.createElementNS(null, normalizeName(k));
384
+
385
+ if (t(v) != "null") {
386
+ if (t(v) == "string") {
387
+ v = v.trim();
388
+ }
389
+
390
+ va.appendChild(document.createTextNode(v));
391
+ }
392
+
393
+ var ch = c.appendChild(va);
394
+ }
395
+ }
396
+ }
397
+ }
398
+ };
399
+
400
+ f(f, c, a, t(a) == "array");
401
+
402
+ return c.outerHTML;
403
+ }
404
+
405
+ window.buildElementOptions = function(element) {
406
+ var options = $(element).closest("[data-component]").find("cron-options");
407
+ var dom = parseXml('<cron-options>' + $(options).html() + '</cron-options>');
408
+ var json = xml2json(dom);
409
+
410
+ if (json) {
411
+ json = json.slice(1);
412
+ json = json.substring(0, json.length - 1);
413
+ json = json.trim();
414
+ json = json.replace(/undefined"cron-options":/gm,'');
415
+ json = json.replace(/"undefined"/gm,'');
416
+ json = json.replace(/"undefined:"/gm,'');
417
+ json = json.replace(/undefined:/gm,'');
418
+ json = json.replace(/undefined/gm,'');
419
+ json = json.replace(/"cron-options":/gm,'');
420
+ }
421
+
422
+ return json;
423
+ }
424
+
425
+ window.objectClone = function(obj, validFields) {
426
+ var copy;
427
+
428
+ if (null == obj || "object" != typeof obj) {
429
+ return obj;
430
+ }
431
+
432
+ if (obj instanceof Date) {
433
+ copy = new Date();
434
+ copy.setTime(obj.getTime());
435
+ return copy;
436
+ }
437
+
438
+ if (obj instanceof Array) {
439
+ copy = [];
440
+
441
+ for (var i = 0, len = obj.length; i < len; i++) {
442
+ copy[i] = objectClone(obj[i], undefined);
443
+ }
444
+
445
+ return copy;
446
+ }
447
+
448
+ var validFieldObject = function(attr, validFields) {
449
+ /*
450
+ * Se não informou o dataSource, executa um clone comum de objeto.
451
+ */
452
+ if (!validFields) {
453
+ return true;
454
+ } else {
455
+ /*
456
+ * Senão, analisa se o campo informado está na relação de validFields.
457
+ */
458
+ for (var field in validFields) {
459
+ if (attr == field) {
460
+ return true;
461
+ }
462
+ }
463
+
464
+ return false;
465
+ }
466
+ }
467
+
468
+ var isFunction = function(functionToCheck) {
469
+ return functionToCheck && {}.toString.call(functionToCheck) === '[object Function]';
470
+ }
471
+
472
+ if (obj instanceof Object) {
473
+ copy = {};
474
+
475
+ for (var attr in obj) {
476
+ if ((obj.hasOwnProperty(attr)) && (obj[attr] != undefined) &&
477
+ (attr.substr(0,1) != '_' || attr == '_objectKey') && (!isFunction(obj[attr])) &&
478
+ (validFieldObject(attr, validFields))) {
479
+ copy[attr] = objectClone(obj[attr], validFields[attr]);
480
+ }
481
+ }
482
+
483
+ return copy;
484
+ }
485
+
486
+ throw new Error("Unable to copy obj! Its type isn't supported.");
487
+ }
488
+
489
+ window.getOperatorODATA = function(left, operator, right) {
490
+ if (operator == '%') {
491
+ return 'substringof(' + right + ', ' + left + ')';
492
+ } else if (operator == '=') {
493
+ return left + ' eq ' + right;
494
+ } else if (operator == '!=') {
495
+ return left + ' ne ' + right;
496
+ } else if (operator == '>') {
497
+ return left + ' gt ' + right;
498
+ } else if (operator == '>=') {
499
+ return left + ' ge ' + right;
500
+ } else if (operator == '<') {
501
+ return left + ' lt ' + right;
502
+ } else if (operator == '<=') {
503
+ return left + ' le ' + right;
504
+ }
505
+ }
506
+
507
+ window.executeRight = function(right) {
508
+ var result = 'null';
509
+ if (right != null && right != undefined) {
510
+ if (right.startsWith(':') || right.startsWith('datetimeoffset\'') || right.startsWith('datetime\'') ) {
511
+ result = right;
512
+ }
513
+ else {
514
+ result = eval(right);
515
+ if (result instanceof Date) {
516
+ result = "datetimeoffset'" + result.toISOString() + "'";
517
+ }
518
+ else if (typeof result == 'string') {
519
+ result = "'" + result + "'";
520
+ }
521
+
522
+ else if (result === undefined || result == null) {
523
+ result = 'null';
524
+ }
525
+ }
526
+ }
527
+ return result;
528
+ };
529
+
530
+ window.parserOdata = function (data) {
531
+ var result = '';
532
+ var operation = data.type;
533
+
534
+ if (data.args) {
535
+ for (var i = 0; i < data.args.length; i++) {
536
+ var arg = data.args[i];
537
+ var oper = operation;
538
+ if (i == 0) {
539
+ oper = '';
540
+ }
541
+ if (arg.args && arg.args.length > 0) {
542
+ result = result + ' ' + oper.toLowerCase() + ' ( ' + parserOdata(arg) + ' ) ';
543
+ } else {
544
+ result = result + ' ' + oper.toLowerCase() + ' ' + getOperatorODATA(arg.left, arg.type, executeRight(arg.right));
545
+ }
546
+ }
547
+ }
548
+ return result.trim();
549
+ }
550
+
551
+ })();
package/package.json ADDED
@@ -0,0 +1,38 @@
1
+ {
2
+ "name": "cronapp-common-js",
3
+ "version": "1.0.0",
4
+ "description": "Cronapp Commons Functions",
5
+ "main": "parser.js",
6
+ "type": "module",
7
+ "scripts": {
8
+ "build": "gulp",
9
+ "test": "echo \"Error: no test specified\" && exit 1"
10
+ },
11
+ "repository": {
12
+ "type": "git",
13
+ "url": "git+https://github.com/CronApp/cronapp-common-js.git"
14
+ },
15
+ "author": "Adir Santos",
16
+ "license": "MIT",
17
+ "bugs": {
18
+ "url": "https://github.com/CronApp/cronapp-common-js/issues"
19
+ },
20
+ "homepage": "https://github.com/CronApp/cronapp-common-js#readme",
21
+ "keywords": [
22
+ "cronapp-common-js",
23
+ "cronapp",
24
+ "javascript"
25
+ ],
26
+ "devDependencies": {
27
+ "gulp": "^5.0.0",
28
+ "gulp-autoprefixer": "^9.0.0",
29
+ "gulp-htmlmin": "^5.0.1",
30
+ "gulp-imagemin": "^9.1.0",
31
+ "gulp-ng-annotate-patched": "^0.1.1",
32
+ "gulp-notify": "^5.0.0",
33
+ "gulp-rename": "^2.0.0",
34
+ "gulp-terser": "^2.1.0",
35
+ "gulp-uglify": "^3.0.2",
36
+ "gulp-uglifycss": "^1.0.8"
37
+ }
38
+ }
@@ -0,0 +1,63 @@
1
+ {
2
+ "includes": [
3
+ ],
4
+ "removes": [
5
+ {
6
+ "file": "index.html",
7
+ "script": "node_modules/cronapp-framework-mobile-js/dist/components/js/datasource.js",
8
+ "type": "script"
9
+ },
10
+ {
11
+ "file": "index.html",
12
+ "script": "node_modules/cronapp-framework-js/dist/components/js/datasource.js",
13
+ "type": "script"
14
+ },
15
+ {
16
+ "file": "index.html",
17
+ "script": "node_modules/cronapp-common-js/dist/parser.min.js",
18
+ "type": "script"
19
+ },
20
+ {
21
+ "file": "index.html",
22
+ "script": "plugins/cronapp-framework-mobile-js/dist/components/js/datasource.js",
23
+ "type": "script"
24
+ },
25
+ {
26
+ "file": "index.html",
27
+ "script": "plugins/cronapp-framework-js/dist/components/js/datasource.js",
28
+ "type": "script"
29
+ },
30
+ {
31
+ "file": "index.html",
32
+ "script": "plugins/cronapp-common-js/dist/parser.min.js",
33
+ "type": "script"
34
+ },
35
+ {
36
+ "file": "index.html",
37
+ "script": "js/dataSourceMap.js",
38
+ "type": "script"
39
+ }
40
+ ],
41
+ "replaces":[
42
+ {
43
+ "old": "plugins/cronapp-common-js/dist/js/parser.js",
44
+ "new": "node_modules/cronapp-common-js/dist/js/parser.js"
45
+ },
46
+ {
47
+ "old": "plugins/cronapp-common-js/dist/js/datasource/datasource.js",
48
+ "new": "node_modules/cronapp-common-js/dist/js/datasource/datasource.js"
49
+ },
50
+ {
51
+ "old": "plugins/cronapp-common-js/dist/js/odata-filter-parser.js",
52
+ "new": "node_modules/cronapp-common-js/dist/js/odata-filter-parser.js"
53
+ },
54
+ {
55
+ "old": "plugins/cronapp-common-js/dist/js/pouchdb.min.js",
56
+ "new": "node_modules/cronapp-common-js/dist/js/pouchdb.min.js"
57
+ },
58
+ {
59
+ "old": "plugins/cronapp-common-js/dist/js/pouchdb.find.min.js",
60
+ "new": "node_modules/cronapp-common-js/dist/js/pouchdb.find.min.js"
61
+ }
62
+ ]
63
+ }