pumaguard 20.post192__py3-none-any.whl → 20.post229__py3-none-any.whl
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.
- pumaguard/main.py +29 -15
- pumaguard/model_downloader.py +1 -1
- pumaguard/presets.py +19 -4
- pumaguard/pumaguard-ui/assets/NOTICES +297 -206
- pumaguard/pumaguard-ui/assets/fonts/MaterialIcons-Regular.otf +0 -0
- pumaguard/pumaguard-ui/flutter_bootstrap.js +1 -1
- pumaguard/pumaguard-ui/flutter_service_worker.js +6 -6
- pumaguard/pumaguard-ui/main.dart.js +54897 -52616
- pumaguard/pumaguard-ui/main.dart.mjs +182 -175
- pumaguard/pumaguard-ui/main.dart.wasm +0 -0
- pumaguard/server.py +4 -4
- pumaguard/web_routes/diagnostics.py +13 -2
- pumaguard/web_routes/directories.py +6 -0
- pumaguard/web_routes/folders.py +66 -15
- pumaguard/web_routes/photos.py +30 -8
- pumaguard/web_routes/settings.py +147 -0
- pumaguard/web_routes/sync.py +62 -13
- pumaguard/web_ui.py +13 -1
- {pumaguard-20.post192.dist-info → pumaguard-20.post229.dist-info}/METADATA +29 -2
- {pumaguard-20.post192.dist-info → pumaguard-20.post229.dist-info}/RECORD +24 -24
- {pumaguard-20.post192.dist-info → pumaguard-20.post229.dist-info}/WHEEL +0 -0
- {pumaguard-20.post192.dist-info → pumaguard-20.post229.dist-info}/entry_points.txt +0 -0
- {pumaguard-20.post192.dist-info → pumaguard-20.post229.dist-info}/licenses/LICENSE +0 -0
- {pumaguard-20.post192.dist-info → pumaguard-20.post229.dist-info}/top_level.txt +0 -0
|
@@ -433,18 +433,20 @@ class CompiledApp {
|
|
|
433
433
|
_1342: f => finalizeWrapper(f, function(x0) { return dartInstance.exports._1342(f,arguments.length,x0) }),
|
|
434
434
|
_1343: x0 => x0.send(),
|
|
435
435
|
_1344: () => new XMLHttpRequest(),
|
|
436
|
-
_1345: (x0,x1) => x0.
|
|
437
|
-
|
|
438
|
-
|
|
439
|
-
|
|
440
|
-
|
|
441
|
-
_1363:
|
|
436
|
+
_1345: (x0,x1) => x0.getItem(x1),
|
|
437
|
+
_1347: (x0,x1,x2) => x0.setItem(x1,x2),
|
|
438
|
+
_1348: (x0,x1) => x0.querySelector(x1),
|
|
439
|
+
_1349: (x0,x1) => x0.createElement(x1),
|
|
440
|
+
_1361: x0 => x0.click(),
|
|
441
|
+
_1363: Date.now,
|
|
442
|
+
_1365: s => new Date(s * 1000).getTimezoneOffset() * 60,
|
|
443
|
+
_1366: s => {
|
|
442
444
|
if (!/^\s*[+-]?(?:Infinity|NaN|(?:\.\d+|\d+(?:\.\d*)?)(?:[eE][+-]?\d+)?)\s*$/.test(s)) {
|
|
443
445
|
return NaN;
|
|
444
446
|
}
|
|
445
447
|
return parseFloat(s);
|
|
446
448
|
},
|
|
447
|
-
|
|
449
|
+
_1367: () => {
|
|
448
450
|
let stackString = new Error().stack.toString();
|
|
449
451
|
let frames = stackString.split('\n');
|
|
450
452
|
let drop = 2;
|
|
@@ -453,51 +455,52 @@ class CompiledApp {
|
|
|
453
455
|
}
|
|
454
456
|
return frames.slice(drop).join('\n');
|
|
455
457
|
},
|
|
456
|
-
|
|
457
|
-
|
|
458
|
-
|
|
459
|
-
|
|
458
|
+
_1368: () => typeof dartUseDateNowForTicks !== "undefined",
|
|
459
|
+
_1369: () => 1000 * performance.now(),
|
|
460
|
+
_1370: () => Date.now(),
|
|
461
|
+
_1371: () => {
|
|
460
462
|
// On browsers return `globalThis.location.href`
|
|
461
463
|
if (globalThis.location != null) {
|
|
462
464
|
return globalThis.location.href;
|
|
463
465
|
}
|
|
464
466
|
return null;
|
|
465
467
|
},
|
|
466
|
-
|
|
468
|
+
_1372: () => {
|
|
467
469
|
return typeof process != "undefined" &&
|
|
468
470
|
Object.prototype.toString.call(process) == "[object process]" &&
|
|
469
471
|
process.platform == "win32"
|
|
470
472
|
},
|
|
471
|
-
|
|
472
|
-
|
|
473
|
-
|
|
474
|
-
|
|
475
|
-
|
|
476
|
-
|
|
477
|
-
|
|
478
|
-
|
|
479
|
-
|
|
480
|
-
|
|
481
|
-
|
|
482
|
-
|
|
483
|
-
|
|
484
|
-
|
|
485
|
-
|
|
486
|
-
|
|
487
|
-
|
|
488
|
-
|
|
489
|
-
|
|
490
|
-
|
|
491
|
-
|
|
492
|
-
|
|
493
|
-
|
|
494
|
-
|
|
495
|
-
|
|
496
|
-
|
|
497
|
-
|
|
498
|
-
|
|
499
|
-
|
|
500
|
-
|
|
473
|
+
_1373: () => new WeakMap(),
|
|
474
|
+
_1374: (map, o) => map.get(o),
|
|
475
|
+
_1375: (map, o, v) => map.set(o, v),
|
|
476
|
+
_1376: x0 => new WeakRef(x0),
|
|
477
|
+
_1377: x0 => x0.deref(),
|
|
478
|
+
_1384: () => globalThis.WeakRef,
|
|
479
|
+
_1388: s => JSON.stringify(s),
|
|
480
|
+
_1389: s => printToConsole(s),
|
|
481
|
+
_1390: (o, p, r) => o.replaceAll(p, () => r),
|
|
482
|
+
_1391: (o, p, r) => o.replace(p, () => r),
|
|
483
|
+
_1392: Function.prototype.call.bind(String.prototype.toLowerCase),
|
|
484
|
+
_1393: s => s.toUpperCase(),
|
|
485
|
+
_1394: s => s.trim(),
|
|
486
|
+
_1395: s => s.trimLeft(),
|
|
487
|
+
_1396: s => s.trimRight(),
|
|
488
|
+
_1397: (string, times) => string.repeat(times),
|
|
489
|
+
_1398: Function.prototype.call.bind(String.prototype.indexOf),
|
|
490
|
+
_1399: (s, p, i) => s.lastIndexOf(p, i),
|
|
491
|
+
_1400: (string, token) => string.split(token),
|
|
492
|
+
_1401: Object.is,
|
|
493
|
+
_1402: o => o instanceof Array,
|
|
494
|
+
_1403: (a, i) => a.push(i),
|
|
495
|
+
_1407: a => a.pop(),
|
|
496
|
+
_1408: (a, i) => a.splice(i, 1),
|
|
497
|
+
_1409: (a, s) => a.join(s),
|
|
498
|
+
_1410: (a, s, e) => a.slice(s, e),
|
|
499
|
+
_1412: (a, b) => a == b ? 0 : (a > b ? 1 : -1),
|
|
500
|
+
_1413: a => a.length,
|
|
501
|
+
_1415: (a, i) => a[i],
|
|
502
|
+
_1416: (a, i, v) => a[i] = v,
|
|
503
|
+
_1418: o => {
|
|
501
504
|
if (o instanceof ArrayBuffer) return 0;
|
|
502
505
|
if (globalThis.SharedArrayBuffer !== undefined &&
|
|
503
506
|
o instanceof SharedArrayBuffer) {
|
|
@@ -505,105 +508,105 @@ class CompiledApp {
|
|
|
505
508
|
}
|
|
506
509
|
return 2;
|
|
507
510
|
},
|
|
508
|
-
|
|
511
|
+
_1419: (o, offsetInBytes, lengthInBytes) => {
|
|
509
512
|
var dst = new ArrayBuffer(lengthInBytes);
|
|
510
513
|
new Uint8Array(dst).set(new Uint8Array(o, offsetInBytes, lengthInBytes));
|
|
511
514
|
return new DataView(dst);
|
|
512
515
|
},
|
|
513
|
-
|
|
514
|
-
|
|
515
|
-
|
|
516
|
-
|
|
517
|
-
|
|
518
|
-
|
|
519
|
-
|
|
520
|
-
|
|
521
|
-
|
|
522
|
-
|
|
523
|
-
|
|
524
|
-
|
|
525
|
-
|
|
526
|
-
|
|
527
|
-
|
|
528
|
-
|
|
529
|
-
|
|
530
|
-
|
|
531
|
-
|
|
532
|
-
|
|
533
|
-
|
|
534
|
-
|
|
535
|
-
|
|
536
|
-
|
|
537
|
-
|
|
538
|
-
|
|
539
|
-
|
|
540
|
-
|
|
541
|
-
|
|
542
|
-
|
|
543
|
-
|
|
544
|
-
|
|
545
|
-
|
|
546
|
-
|
|
547
|
-
|
|
548
|
-
|
|
549
|
-
|
|
550
|
-
|
|
551
|
-
|
|
552
|
-
|
|
553
|
-
|
|
554
|
-
|
|
555
|
-
|
|
556
|
-
|
|
557
|
-
|
|
516
|
+
_1421: o => o instanceof Uint8Array,
|
|
517
|
+
_1422: (o, start, length) => new Uint8Array(o.buffer, o.byteOffset + start, length),
|
|
518
|
+
_1423: o => o instanceof Int8Array,
|
|
519
|
+
_1424: (o, start, length) => new Int8Array(o.buffer, o.byteOffset + start, length),
|
|
520
|
+
_1425: o => o instanceof Uint8ClampedArray,
|
|
521
|
+
_1426: (o, start, length) => new Uint8ClampedArray(o.buffer, o.byteOffset + start, length),
|
|
522
|
+
_1427: o => o instanceof Uint16Array,
|
|
523
|
+
_1428: (o, start, length) => new Uint16Array(o.buffer, o.byteOffset + start, length),
|
|
524
|
+
_1429: o => o instanceof Int16Array,
|
|
525
|
+
_1430: (o, start, length) => new Int16Array(o.buffer, o.byteOffset + start, length),
|
|
526
|
+
_1431: o => o instanceof Uint32Array,
|
|
527
|
+
_1432: (o, start, length) => new Uint32Array(o.buffer, o.byteOffset + start, length),
|
|
528
|
+
_1433: o => o instanceof Int32Array,
|
|
529
|
+
_1434: (o, start, length) => new Int32Array(o.buffer, o.byteOffset + start, length),
|
|
530
|
+
_1436: (o, start, length) => new BigInt64Array(o.buffer, o.byteOffset + start, length),
|
|
531
|
+
_1437: o => o instanceof Float32Array,
|
|
532
|
+
_1438: (o, start, length) => new Float32Array(o.buffer, o.byteOffset + start, length),
|
|
533
|
+
_1439: o => o instanceof Float64Array,
|
|
534
|
+
_1440: (o, start, length) => new Float64Array(o.buffer, o.byteOffset + start, length),
|
|
535
|
+
_1441: (t, s) => t.set(s),
|
|
536
|
+
_1443: (o) => new DataView(o.buffer, o.byteOffset, o.byteLength),
|
|
537
|
+
_1445: o => o.buffer,
|
|
538
|
+
_1446: o => o.byteOffset,
|
|
539
|
+
_1447: Function.prototype.call.bind(Object.getOwnPropertyDescriptor(DataView.prototype, 'byteLength').get),
|
|
540
|
+
_1448: (b, o) => new DataView(b, o),
|
|
541
|
+
_1449: (b, o, l) => new DataView(b, o, l),
|
|
542
|
+
_1450: Function.prototype.call.bind(DataView.prototype.getUint8),
|
|
543
|
+
_1451: Function.prototype.call.bind(DataView.prototype.setUint8),
|
|
544
|
+
_1452: Function.prototype.call.bind(DataView.prototype.getInt8),
|
|
545
|
+
_1453: Function.prototype.call.bind(DataView.prototype.setInt8),
|
|
546
|
+
_1454: Function.prototype.call.bind(DataView.prototype.getUint16),
|
|
547
|
+
_1455: Function.prototype.call.bind(DataView.prototype.setUint16),
|
|
548
|
+
_1456: Function.prototype.call.bind(DataView.prototype.getInt16),
|
|
549
|
+
_1457: Function.prototype.call.bind(DataView.prototype.setInt16),
|
|
550
|
+
_1458: Function.prototype.call.bind(DataView.prototype.getUint32),
|
|
551
|
+
_1459: Function.prototype.call.bind(DataView.prototype.setUint32),
|
|
552
|
+
_1460: Function.prototype.call.bind(DataView.prototype.getInt32),
|
|
553
|
+
_1461: Function.prototype.call.bind(DataView.prototype.setInt32),
|
|
554
|
+
_1464: Function.prototype.call.bind(DataView.prototype.getBigInt64),
|
|
555
|
+
_1465: Function.prototype.call.bind(DataView.prototype.setBigInt64),
|
|
556
|
+
_1466: Function.prototype.call.bind(DataView.prototype.getFloat32),
|
|
557
|
+
_1467: Function.prototype.call.bind(DataView.prototype.setFloat32),
|
|
558
|
+
_1468: Function.prototype.call.bind(DataView.prototype.getFloat64),
|
|
559
|
+
_1469: Function.prototype.call.bind(DataView.prototype.setFloat64),
|
|
560
|
+
_1482: (ms, c) =>
|
|
558
561
|
setTimeout(() => dartInstance.exports.$invokeCallback(c),ms),
|
|
559
|
-
|
|
560
|
-
|
|
562
|
+
_1483: (handle) => clearTimeout(handle),
|
|
563
|
+
_1484: (ms, c) =>
|
|
561
564
|
setInterval(() => dartInstance.exports.$invokeCallback(c), ms),
|
|
562
|
-
|
|
563
|
-
|
|
565
|
+
_1485: (handle) => clearInterval(handle),
|
|
566
|
+
_1486: (c) =>
|
|
564
567
|
queueMicrotask(() => dartInstance.exports.$invokeCallback(c)),
|
|
565
|
-
|
|
566
|
-
|
|
568
|
+
_1487: () => Date.now(),
|
|
569
|
+
_1488: (s, m) => {
|
|
567
570
|
try {
|
|
568
571
|
return new RegExp(s, m);
|
|
569
572
|
} catch (e) {
|
|
570
573
|
return String(e);
|
|
571
574
|
}
|
|
572
575
|
},
|
|
573
|
-
|
|
574
|
-
|
|
575
|
-
|
|
576
|
-
|
|
577
|
-
|
|
578
|
-
|
|
576
|
+
_1489: (x0,x1) => x0.exec(x1),
|
|
577
|
+
_1490: (x0,x1) => x0.test(x1),
|
|
578
|
+
_1491: x0 => x0.pop(),
|
|
579
|
+
_1493: o => o === undefined,
|
|
580
|
+
_1495: o => typeof o === 'function' && o[jsWrappedDartFunctionSymbol] === true,
|
|
581
|
+
_1497: o => {
|
|
579
582
|
const proto = Object.getPrototypeOf(o);
|
|
580
583
|
return proto === Object.prototype || proto === null;
|
|
581
584
|
},
|
|
582
|
-
|
|
583
|
-
|
|
584
|
-
|
|
585
|
-
|
|
586
|
-
|
|
587
|
-
|
|
588
|
-
|
|
589
|
-
|
|
590
|
-
|
|
591
|
-
|
|
592
|
-
|
|
593
|
-
|
|
594
|
-
|
|
585
|
+
_1498: o => o instanceof RegExp,
|
|
586
|
+
_1499: (l, r) => l === r,
|
|
587
|
+
_1500: o => o,
|
|
588
|
+
_1501: o => o,
|
|
589
|
+
_1502: o => o,
|
|
590
|
+
_1503: b => !!b,
|
|
591
|
+
_1504: o => o.length,
|
|
592
|
+
_1506: (o, i) => o[i],
|
|
593
|
+
_1507: f => f.dartFunction,
|
|
594
|
+
_1508: () => ({}),
|
|
595
|
+
_1509: () => [],
|
|
596
|
+
_1511: () => globalThis,
|
|
597
|
+
_1512: (constructor, args) => {
|
|
595
598
|
const factoryFunction = constructor.bind.apply(
|
|
596
599
|
constructor, [null, ...args]);
|
|
597
600
|
return new factoryFunction();
|
|
598
601
|
},
|
|
599
|
-
|
|
600
|
-
|
|
601
|
-
|
|
602
|
-
|
|
603
|
-
|
|
604
|
-
|
|
605
|
-
|
|
606
|
-
|
|
602
|
+
_1514: (o, p) => o[p],
|
|
603
|
+
_1515: (o, p, v) => o[p] = v,
|
|
604
|
+
_1516: (o, m, a) => o[m].apply(o, a),
|
|
605
|
+
_1518: o => String(o),
|
|
606
|
+
_1519: (p, s, f) => p.then(s, (e) => f(e, e === undefined)),
|
|
607
|
+
_1520: f => finalizeWrapper(f, function(x0) { return dartInstance.exports._1520(f,arguments.length,x0) }),
|
|
608
|
+
_1521: f => finalizeWrapper(f, function(x0,x1) { return dartInstance.exports._1521(f,arguments.length,x0,x1) }),
|
|
609
|
+
_1522: o => {
|
|
607
610
|
if (o === undefined) return 1;
|
|
608
611
|
var type = typeof o;
|
|
609
612
|
if (type === 'boolean') return 2;
|
|
@@ -631,106 +634,110 @@ class CompiledApp {
|
|
|
631
634
|
if (o instanceof Promise) return 18;
|
|
632
635
|
return 19;
|
|
633
636
|
},
|
|
634
|
-
|
|
635
|
-
|
|
636
|
-
|
|
637
|
-
|
|
638
|
-
|
|
637
|
+
_1523: o => [o],
|
|
638
|
+
_1524: (o0, o1) => [o0, o1],
|
|
639
|
+
_1525: (o0, o1, o2) => [o0, o1, o2],
|
|
640
|
+
_1526: (o0, o1, o2, o3) => [o0, o1, o2, o3],
|
|
641
|
+
_1527: (jsArray, jsArrayOffset, wasmArray, wasmArrayOffset, length) => {
|
|
639
642
|
const getValue = dartInstance.exports.$wasmI8ArrayGet;
|
|
640
643
|
for (let i = 0; i < length; i++) {
|
|
641
644
|
jsArray[jsArrayOffset + i] = getValue(wasmArray, wasmArrayOffset + i);
|
|
642
645
|
}
|
|
643
646
|
},
|
|
644
|
-
|
|
647
|
+
_1528: (jsArray, jsArrayOffset, wasmArray, wasmArrayOffset, length) => {
|
|
645
648
|
const setValue = dartInstance.exports.$wasmI8ArraySet;
|
|
646
649
|
for (let i = 0; i < length; i++) {
|
|
647
650
|
setValue(wasmArray, wasmArrayOffset + i, jsArray[jsArrayOffset + i]);
|
|
648
651
|
}
|
|
649
652
|
},
|
|
650
|
-
|
|
653
|
+
_1531: (jsArray, jsArrayOffset, wasmArray, wasmArrayOffset, length) => {
|
|
651
654
|
const getValue = dartInstance.exports.$wasmI32ArrayGet;
|
|
652
655
|
for (let i = 0; i < length; i++) {
|
|
653
656
|
jsArray[jsArrayOffset + i] = getValue(wasmArray, wasmArrayOffset + i);
|
|
654
657
|
}
|
|
655
658
|
},
|
|
656
|
-
|
|
659
|
+
_1532: (jsArray, jsArrayOffset, wasmArray, wasmArrayOffset, length) => {
|
|
657
660
|
const setValue = dartInstance.exports.$wasmI32ArraySet;
|
|
658
661
|
for (let i = 0; i < length; i++) {
|
|
659
662
|
setValue(wasmArray, wasmArrayOffset + i, jsArray[jsArrayOffset + i]);
|
|
660
663
|
}
|
|
661
664
|
},
|
|
662
|
-
|
|
665
|
+
_1533: (jsArray, jsArrayOffset, wasmArray, wasmArrayOffset, length) => {
|
|
663
666
|
const getValue = dartInstance.exports.$wasmF32ArrayGet;
|
|
664
667
|
for (let i = 0; i < length; i++) {
|
|
665
668
|
jsArray[jsArrayOffset + i] = getValue(wasmArray, wasmArrayOffset + i);
|
|
666
669
|
}
|
|
667
670
|
},
|
|
668
|
-
|
|
671
|
+
_1534: (jsArray, jsArrayOffset, wasmArray, wasmArrayOffset, length) => {
|
|
669
672
|
const setValue = dartInstance.exports.$wasmF32ArraySet;
|
|
670
673
|
for (let i = 0; i < length; i++) {
|
|
671
674
|
setValue(wasmArray, wasmArrayOffset + i, jsArray[jsArrayOffset + i]);
|
|
672
675
|
}
|
|
673
676
|
},
|
|
674
|
-
|
|
677
|
+
_1535: (jsArray, jsArrayOffset, wasmArray, wasmArrayOffset, length) => {
|
|
675
678
|
const getValue = dartInstance.exports.$wasmF64ArrayGet;
|
|
676
679
|
for (let i = 0; i < length; i++) {
|
|
677
680
|
jsArray[jsArrayOffset + i] = getValue(wasmArray, wasmArrayOffset + i);
|
|
678
681
|
}
|
|
679
682
|
},
|
|
680
|
-
|
|
683
|
+
_1536: (jsArray, jsArrayOffset, wasmArray, wasmArrayOffset, length) => {
|
|
681
684
|
const setValue = dartInstance.exports.$wasmF64ArraySet;
|
|
682
685
|
for (let i = 0; i < length; i++) {
|
|
683
686
|
setValue(wasmArray, wasmArrayOffset + i, jsArray[jsArrayOffset + i]);
|
|
684
687
|
}
|
|
685
688
|
},
|
|
686
|
-
|
|
687
|
-
|
|
689
|
+
_1537: x0 => new ArrayBuffer(x0),
|
|
690
|
+
_1538: s => {
|
|
688
691
|
if (/[[\]{}()*+?.\\^$|]/.test(s)) {
|
|
689
692
|
s = s.replace(/[[\]{}()*+?.\\^$|]/g, '\\$&');
|
|
690
693
|
}
|
|
691
694
|
return s;
|
|
692
695
|
},
|
|
693
|
-
|
|
694
|
-
|
|
695
|
-
|
|
696
|
-
|
|
697
|
-
|
|
698
|
-
|
|
699
|
-
|
|
700
|
-
|
|
701
|
-
|
|
702
|
-
|
|
703
|
-
|
|
704
|
-
|
|
705
|
-
|
|
706
|
-
|
|
707
|
-
|
|
708
|
-
|
|
709
|
-
|
|
710
|
-
|
|
711
|
-
|
|
712
|
-
|
|
713
|
-
|
|
714
|
-
|
|
715
|
-
|
|
716
|
-
|
|
717
|
-
|
|
718
|
-
_1599: Function.prototype.call.bind(BigInt.prototype.toString),
|
|
696
|
+
_1540: x0 => x0.index,
|
|
697
|
+
_1542: x0 => x0.flags,
|
|
698
|
+
_1543: x0 => x0.multiline,
|
|
699
|
+
_1544: x0 => x0.ignoreCase,
|
|
700
|
+
_1545: x0 => x0.unicode,
|
|
701
|
+
_1546: x0 => x0.dotAll,
|
|
702
|
+
_1547: (x0,x1) => { x0.lastIndex = x1 },
|
|
703
|
+
_1548: (o, p) => p in o,
|
|
704
|
+
_1549: (o, p) => o[p],
|
|
705
|
+
_1569: x0 => globalThis.URL.createObjectURL(x0),
|
|
706
|
+
_1570: x0 => new Blob(x0),
|
|
707
|
+
_1575: () => new AbortController(),
|
|
708
|
+
_1576: x0 => x0.abort(),
|
|
709
|
+
_1577: (x0,x1,x2,x3,x4,x5) => ({method: x0,headers: x1,body: x2,credentials: x3,redirect: x4,signal: x5}),
|
|
710
|
+
_1578: (x0,x1) => globalThis.fetch(x0,x1),
|
|
711
|
+
_1579: (x0,x1) => x0.get(x1),
|
|
712
|
+
_1580: f => finalizeWrapper(f, function(x0,x1,x2) { return dartInstance.exports._1580(f,arguments.length,x0,x1,x2) }),
|
|
713
|
+
_1581: (x0,x1) => x0.forEach(x1),
|
|
714
|
+
_1582: x0 => x0.getReader(),
|
|
715
|
+
_1583: x0 => x0.cancel(),
|
|
716
|
+
_1584: x0 => x0.read(),
|
|
717
|
+
_1585: x0 => globalThis.URL.revokeObjectURL(x0),
|
|
718
|
+
_1586: (x0,x1) => x0.key(x1),
|
|
719
|
+
_1587: x0 => x0.random(),
|
|
720
|
+
_1590: () => globalThis.Math,
|
|
719
721
|
_1600: Function.prototype.call.bind(Number.prototype.toString),
|
|
720
|
-
_1601: (
|
|
721
|
-
|
|
722
|
-
|
|
723
|
-
|
|
724
|
-
|
|
725
|
-
|
|
726
|
-
|
|
727
|
-
_1627: x0 => x0.
|
|
728
|
-
_1628: x0 => x0.
|
|
729
|
-
|
|
730
|
-
|
|
731
|
-
|
|
732
|
-
|
|
733
|
-
|
|
722
|
+
_1601: Function.prototype.call.bind(BigInt.prototype.toString),
|
|
723
|
+
_1602: Function.prototype.call.bind(Number.prototype.toString),
|
|
724
|
+
_1603: (d, digits) => d.toFixed(digits),
|
|
725
|
+
_1607: () => globalThis.document,
|
|
726
|
+
_1613: (x0,x1) => { x0.height = x1 },
|
|
727
|
+
_1615: (x0,x1) => { x0.width = x1 },
|
|
728
|
+
_1624: x0 => x0.style,
|
|
729
|
+
_1627: x0 => x0.src,
|
|
730
|
+
_1628: (x0,x1) => { x0.src = x1 },
|
|
731
|
+
_1629: x0 => x0.naturalWidth,
|
|
732
|
+
_1630: x0 => x0.naturalHeight,
|
|
733
|
+
_1646: x0 => x0.status,
|
|
734
|
+
_1647: (x0,x1) => { x0.responseType = x1 },
|
|
735
|
+
_1649: x0 => x0.response,
|
|
736
|
+
_2134: (x0,x1) => { x0.download = x1 },
|
|
737
|
+
_2159: (x0,x1) => { x0.href = x1 },
|
|
738
|
+
_3481: () => globalThis.window,
|
|
739
|
+
_3808: x0 => x0.localStorage,
|
|
740
|
+
_4141: x0 => x0.length,
|
|
734
741
|
_6086: x0 => x0.signal,
|
|
735
742
|
_6158: () => globalThis.document,
|
|
736
743
|
_6578: (x0,x1) => { x0.id = x1 },
|
|
Binary file
|
pumaguard/server.py
CHANGED
|
@@ -402,11 +402,11 @@ def main(options: argparse.Namespace, presets: Preset):
|
|
|
402
402
|
except OSError as exc: # pragma: no cover
|
|
403
403
|
logger.error("Could not ensure classified folders exist: %s", exc)
|
|
404
404
|
|
|
405
|
-
webui.
|
|
406
|
-
webui.
|
|
407
|
-
webui.
|
|
405
|
+
webui.add_classification_directory(presets.classified_puma_dir)
|
|
406
|
+
webui.add_classification_directory(presets.classified_other_dir)
|
|
407
|
+
webui.add_classification_directory(presets.intermediate_dir)
|
|
408
408
|
logger.info(
|
|
409
|
-
"
|
|
409
|
+
"Classification browsing enabled for: %s, %s; intermediate: %s",
|
|
410
410
|
presets.classified_puma_dir,
|
|
411
411
|
presets.classified_other_dir,
|
|
412
412
|
presets.intermediate_dir,
|
|
@@ -13,6 +13,11 @@ from flask import (
|
|
|
13
13
|
request,
|
|
14
14
|
)
|
|
15
15
|
|
|
16
|
+
import pumaguard
|
|
17
|
+
from pumaguard.presets import (
|
|
18
|
+
get_xdg_cache_home,
|
|
19
|
+
)
|
|
20
|
+
|
|
16
21
|
if TYPE_CHECKING:
|
|
17
22
|
from flask import (
|
|
18
23
|
Flask,
|
|
@@ -33,9 +38,9 @@ def register_diagnostics_routes(app: "Flask", webui: "WebUI") -> None:
|
|
|
33
38
|
return jsonify(
|
|
34
39
|
{
|
|
35
40
|
"status": "running",
|
|
36
|
-
"version":
|
|
41
|
+
"version": pumaguard.__version__,
|
|
37
42
|
"directories_count": len(webui.image_directories),
|
|
38
|
-
"host": webui.
|
|
43
|
+
"host": webui._get_local_ip(), # pylint: disable=protected-access
|
|
39
44
|
"port": webui.port,
|
|
40
45
|
"request_origin": origin,
|
|
41
46
|
"request_host": host,
|
|
@@ -44,6 +49,10 @@ def register_diagnostics_routes(app: "Flask", webui: "WebUI") -> None:
|
|
|
44
49
|
|
|
45
50
|
@app.route("/api/diagnostic", methods=["GET"])
|
|
46
51
|
def get_diagnostic():
|
|
52
|
+
# Get log file path
|
|
53
|
+
log_dir = get_xdg_cache_home() / "pumaguard"
|
|
54
|
+
log_file = log_dir / "pumaguard.log"
|
|
55
|
+
|
|
47
56
|
diagnostic_info = {
|
|
48
57
|
"server": {
|
|
49
58
|
"host": webui.host,
|
|
@@ -59,6 +68,8 @@ def register_diagnostics_routes(app: "Flask", webui: "WebUI") -> None:
|
|
|
59
68
|
else None
|
|
60
69
|
),
|
|
61
70
|
"local_ip": webui._get_local_ip(), # pylint: disable=protected-access
|
|
71
|
+
"log_file": str(log_file),
|
|
72
|
+
"log_file_exists": log_file.exists(),
|
|
62
73
|
},
|
|
63
74
|
"request": {
|
|
64
75
|
"url": request.url,
|
|
@@ -31,8 +31,14 @@ def register_directories_routes(app: "Flask", webui: "WebUI") -> None:
|
|
|
31
31
|
|
|
32
32
|
@app.route("/api/directories", methods=["GET"])
|
|
33
33
|
def get_directories():
|
|
34
|
+
"""Get watched directories (incoming images to monitor)."""
|
|
34
35
|
return jsonify({"directories": webui.image_directories})
|
|
35
36
|
|
|
37
|
+
@app.route("/api/directories/classification", methods=["GET"])
|
|
38
|
+
def get_classification_directories():
|
|
39
|
+
"""Get classification output directories (products, read-only)."""
|
|
40
|
+
return jsonify({"directories": webui.classification_directories})
|
|
41
|
+
|
|
36
42
|
@app.route("/api/directories", methods=["POST"])
|
|
37
43
|
def add_directory():
|
|
38
44
|
data = request.json
|