w-web-api 1.0.42 → 1.0.44

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/docs/WWebApi.html CHANGED
@@ -80,7 +80,7 @@
80
80
 
81
81
  <dt class="tag-source">Source:</dt>
82
82
  <dd class="tag-source"><ul class="dummy"><li>
83
- <a href="WWebApi.mjs.html">WWebApi.mjs</a>, <a href="WWebApi.mjs.html#line129">line 129</a>
83
+ <a href="WWebApi.mjs.html">WWebApi.mjs</a>, <a href="WWebApi.mjs.html#line131">line 131</a>
84
84
  </li></ul></dd>
85
85
 
86
86
 
@@ -885,7 +885,7 @@
885
885
  <br class="clear">
886
886
 
887
887
  <footer>
888
- Documentation generated by <a href="https://github.com/jsdoc3/jsdoc">JSDoc 4.0.2</a> on Mon Jul 14 2025 20:34:11 GMT+0800 (台北標準時間) using the <a href="https://github.com/clenemt/docdash">docdash</a> theme.
888
+ Documentation generated by <a href="https://github.com/jsdoc3/jsdoc">JSDoc 4.0.2</a> on Mon Aug 25 2025 14:59:22 GMT+0800 (台北標準時間) using the <a href="https://github.com/clenemt/docdash">docdash</a> theme.
889
889
  </footer>
890
890
 
891
891
  <script>prettyPrint();</script>
@@ -49,6 +49,7 @@
49
49
  import fs from 'fs'
50
50
  import get from 'lodash-es/get.js'
51
51
  import each from 'lodash-es/each.js'
52
+ import map from 'lodash-es/map.js'
52
53
  import keys from 'lodash-es/keys.js'
53
54
  import j2o from 'wsemi/src/j2o.mjs'
54
55
  import iseobj from 'wsemi/src/iseobj.mjs'
@@ -65,6 +66,7 @@ import strright from 'wsemi/src/strright.mjs'
65
66
  import strdelright from 'wsemi/src/strdelright.mjs'
66
67
  import pm2resolve from 'wsemi/src/pm2resolve.mjs'
67
68
  import b642str from 'wsemi/src/b642str.mjs'
69
+ import ltdtmapping from 'wsemi/src/ltdtmapping.mjs'
68
70
  import fsIsFolder from 'wsemi/src/fsIsFolder.mjs'
69
71
  import fsIsFile from 'wsemi/src/fsIsFile.mjs'
70
72
  import replace from 'wsemi/src/replace.mjs'
@@ -425,129 +427,139 @@ function WWebApi(WOrm, url, db, getUserByToken, verifyClientUser, verifyAppUser,
425
427
  }
426
428
 
427
429
 
428
- //getAPIsList
429
- let getAPIsList = async (query = {}) => {
430
- let rs = await woItems.apis.select(query)
431
- return rs
432
- }
430
+ // //getAPIsList
431
+ // let getAPIsList = async (query = {}) => {
432
+ // let rs = await woItems.apis.select(query)
433
+ // return rs
434
+ // }
433
435
 
434
436
 
435
437
  //parsePayload
436
438
  let parsePayload = async (req) => {
437
439
 
438
- //inp
439
- let inp = get(req, 'payload')
440
+ //payload
441
+ let payload = get(req, 'payload')
440
442
 
441
443
  //to obj
442
- if (isestr(inp)) {
443
- inp = j2o(inp)
444
+ if (isestr(payload)) {
445
+ payload = j2o(payload)
444
446
  }
445
447
 
446
448
  //check
447
- if (!iseobj(inp)) {
448
- console.log('inp', inp)
449
- console.log(`invalid inp from req`)
450
- return Promise.reject(`invalid inp from req`)
449
+ if (!iseobj(payload)) {
450
+ console.log('payload', payload)
451
+ console.log(`invalid payload in req`)
452
+ return Promise.reject(`invalid payload in req`)
451
453
  }
452
454
 
453
455
  //group
454
- let group = get(inp, 'group', '')
456
+ let group = get(payload, 'group', '')
455
457
 
456
458
  //check
457
459
  if (!isestr(group)) {
458
- console.log('inp', inp)
459
- console.log('group', group)
460
- console.log(`invalid group from inp`)
461
- return Promise.reject(`invalid group from inp`)
460
+ console.log('payload', payload)
461
+ console.log(`invalid group in payload`)
462
+ return Promise.reject(`invalid group in payload`)
462
463
  }
463
464
 
464
- //apis
465
- let apis = get(inp, 'apis', [])
465
+ //rows
466
+ let rows = get(payload, 'rows', [])
466
467
 
467
468
  //check
468
- if (!isearr(apis)) {
469
- console.log('inp', inp)
470
- console.log('apis', apis)
471
- console.log(`invalid apis from inp`)
472
- return Promise.reject(`invalid apis from inp`)
469
+ if (!isearr(rows)) {
470
+ console.log('payload', payload)
471
+ console.log(`invalid rows in payload`)
472
+ return Promise.reject(`invalid rows in payload`)
473
473
  }
474
474
 
475
- //偵測b64自動恢復
476
- each(apis, (api, kapi) => {
477
- // console.log(kapi, api.name)
478
- each(api, (v, k) => {
479
- // console.log(k, v)
480
- if (isestr(v)) {
481
- if (strleft(v, 7) === 'base64:') {
482
- // console.log(k, 'get base64')
483
- v = strdelleft(v, 7)
484
- v = b642str(v)
485
- // console.log(v)
486
- apis[kapi][k] = v
487
- }
488
- }
489
- })
490
- })
491
-
492
- //save group
493
- each(apis, (api, kapi) => {
494
- apis[kapi].group = group
495
- })
496
-
497
- //resave
498
- inp = { group, apis }
475
+ //r
476
+ let r = {
477
+ group,
478
+ rows,
479
+ }
499
480
 
500
- return inp
481
+ return r
501
482
  }
502
483
 
503
484
 
504
- //updateAPIs
505
- let updateAPIs = async (params = {}) => {
485
+ // //updateAPIs
486
+ // let updateAPIs = async (inp = {}) => {
506
487
 
507
- //spread params
508
- let { apis: rsApis } = params
509
- // console.log('group', group)
510
- // console.log('rsApis', rsApis)
488
+ // //spread inp
489
+ // let { apis: rsApis } = inp
490
+ // // console.log('group', group)
491
+ // // console.log('rsApis', rsApis)
511
492
 
512
- //save
513
- let r = await woItems.apis.save(rsApis)
493
+ // //save
494
+ // let r = await woItems.apis.save(rsApis)
514
495
 
515
- return r
516
- }
496
+ // return r
497
+ // }
517
498
 
518
499
 
519
- //syncAndReplaceApis
520
- let syncAndReplaceApis = async (params) => {
500
+ //syncAndReplaceTabs
501
+ let syncAndReplaceTabs = async (userId, inp, keyTable) => {
521
502
 
522
503
  //group
523
- let group = get(params, 'group', '')
504
+ let group = get(inp, 'group', '')
524
505
  // console.log('group', group)
525
506
 
526
507
  //check
527
508
  if (!isestr(group)) {
528
- console.log('params', params)
509
+ console.log('inp', inp)
529
510
  console.log('group', group)
530
511
  console.log(`invalid group`)
531
512
  return Promise.reject(`invalid group`)
532
513
  }
533
514
 
534
- //apis
535
- let apis = get(params, 'apis', [])
536
- // console.log('apis', apis)
515
+ //rows
516
+ let rows = get(inp, 'rows', [])
517
+ // console.log('rows', rows)
537
518
 
538
519
  //check
539
- if (!isearr(apis)) {
540
- console.log('params', params)
541
- console.log('apis', apis)
542
- console.log(`invalid apis`)
543
- return Promise.reject(`invalid apis`)
520
+ if (!isearr(rows)) {
521
+ console.log('inp', inp)
522
+ console.log('keyTable', keyTable)
523
+ return Promise.reject(`invalid rows`)
544
524
  }
545
525
 
526
+ //save from
527
+ rows = map(rows, (v, k) => {
528
+ // v.order = k + 1 //order大部分由外部給予, 不能複寫
529
+ v.group = group
530
+ return v
531
+ })
532
+
533
+ //偵測b64自動恢復
534
+ if (keyTable === 'apis') {
535
+ each(rows, (row, krow) => {
536
+ // console.log(kapi, row.name)
537
+ each(row, (v, k) => {
538
+ // console.log(k, v)
539
+ if (isestr(v)) {
540
+ if (strleft(v, 7) === 'base64:') {
541
+ // console.log(k, 'get base64')
542
+ v = strdelleft(v, 7)
543
+ v = b642str(v)
544
+ // console.log(v)
545
+ rows[krow][k] = v
546
+ }
547
+ }
548
+ })
549
+ })
550
+ }
551
+
552
+ //ltdtmapping
553
+ rows = ltdtmapping(rows, ds[keyTable].keys)
554
+ // console.log('ltdtmapping rows', rows)
555
+
546
556
  //delAll group
547
- await woItems.apis.delAll({ group })
557
+ await woItems[keyTable].delAll({ group })
548
558
 
549
559
  //insert
550
- let r = await woItems.apis.insert(apis)
560
+ // let r = await woItems[keyTable].insert(rows)
561
+ let r = await procOrm(userId, keyTable, 'insert', rows) //須使用procOrm才有辦法自動給予相關欄位
562
+ // console.log('r', r)
551
563
 
552
564
  return r
553
565
  }
@@ -589,21 +601,10 @@ function WWebApi(WOrm, url, db, getUserByToken, verifyClientUser, verifyAppUser,
589
601
 
590
602
  //apis
591
603
  let apis = [
592
- // {
593
- // method: 'GET',
594
- // path: '/api/someAPI',
595
- // handler: async function (req, res) {
596
-
597
- // // //token
598
- // // let token = get(req, 'query.token', '')
599
-
600
- // return 'someAPI'
601
- // },
602
- // },
603
604
 
604
605
  {
605
606
  method: 'GET',
606
- path: '/api/getUserByToken', //未登入界面需先檢測token是否為系統管理員, 確認後回傳為系統管理員資訊物件, getUserByToken為w-ui-loginout預設值, 若要更改兩邊須同時修改
607
+ path: '/api/getUserByToken', //未登入主頁時需先檢測token, getUserByToken為w-ui-loginout預設值, 若要更改兩邊須同時修改
607
608
  handler: async function (req, res) {
608
609
  // console.log('getUserByToken', req)
609
610
 
@@ -612,6 +613,15 @@ function WWebApi(WOrm, url, db, getUserByToken, verifyClientUser, verifyAppUser,
612
613
  //token
613
614
  let token = get(req, 'query.token', '')
614
615
 
616
+ //check
617
+ if (!isestr(token)) {
618
+ console.log('req.query', get(req, 'query'))
619
+ console.log('token', token)
620
+ console.log('[API]getUserByToken/check token: invalid token')
621
+ console.log(`token does not have permission`)
622
+ return Promise.reject(`token does not have permission`)
623
+ }
624
+
615
625
  //getAndVerifyClientUser
616
626
  let user = await getAndVerifyClientUser(token, 'getUserByToken')
617
627
 
@@ -636,49 +646,112 @@ function WWebApi(WOrm, url, db, getUserByToken, verifyClientUser, verifyAppUser,
636
646
  return r
637
647
  },
638
648
  },
639
- {
640
- method: 'GET',
641
- path: '/getAPIsList',
642
- handler: async function (req, res) {
643
- // console.log('getAPIsList', req)
644
-
645
- async function core() {
646
-
647
- //token
648
- let token = get(req, 'query.token', '')
649
-
650
- //getAndVerifyClientUser
651
- let user = await getAndVerifyClientUser(token, 'getAPIsList')
652
-
653
- //check
654
- if (!iseobj(user)) {
655
- console.log('token', token)
656
- console.log('[API]getAPIsList/check user: invalid user')
657
- console.log(`token does not have permission`)
658
- return Promise.reject(`token does not have permission`)
659
- }
660
-
661
- //getAPIsList
662
- let r = await getAPIsList({ isActive: 'y' })
663
649
 
664
- return r
665
- }
650
+ // {
651
+ // method: 'GET',
652
+ // path: '/getAPIsList',
653
+ // handler: async function (req, res) {
654
+ // // console.log('getAPIsList', req)
655
+
656
+ // async function core() {
657
+
658
+ // //token
659
+ // let token = get(req, 'query.token', '')
660
+
661
+ // //check
662
+ // if (!isestr(token)) {
663
+ // console.log('req.query', get(req, 'query'))
664
+ // console.log('token', token)
665
+ // console.log('[API]getAPIsList/check token: invalid token')
666
+ // console.log(`token does not have permission`)
667
+ // return Promise.reject(`token does not have permission`)
668
+ // }
669
+
670
+ // //getAndVerifyClientUser
671
+ // let user = await getAndVerifyClientUser(token, 'getAPIsList')
672
+
673
+ // //check
674
+ // if (!iseobj(user)) {
675
+ // console.log('token', token)
676
+ // console.log('[API]getAPIsList/check user: invalid user')
677
+ // console.log(`token does not have permission`)
678
+ // return Promise.reject(`token does not have permission`)
679
+ // }
680
+
681
+ // //getAPIsList
682
+ // let r = await getAPIsList({ isActive: 'y' })
683
+
684
+ // return r
685
+ // }
686
+
687
+ // //pm2resolve core
688
+ // let r = await pm2resolve(core)()
689
+ // if (isErr(r.msg)) {
690
+ // r.msg = r.msg.message
691
+ // }
692
+ // // console.log('getAPIsList', r)
693
+
694
+ // return r
695
+ // },
696
+ // },
666
697
 
667
- //pm2resolve core
668
- let r = await pm2resolve(core)()
669
- if (isErr(r.msg)) {
670
- r.msg = r.msg.message
671
- }
672
- // console.log('getAPIsList', r)
698
+ // {
699
+ // method: 'POST',
700
+ // path: '/updateAPIs',
701
+ // handler: async function (req, res) {
702
+ // // console.log('updateAPIs', req)
703
+ // // console.log('payload', req.payload)
704
+
705
+ // async function core() {
706
+
707
+ // //token
708
+ // let token = get(req, 'query.token', '')
709
+
710
+ // //check
711
+ // if (!isestr(token)) {
712
+ // console.log('req.query', get(req, 'query'))
713
+ // console.log('token', token)
714
+ // console.log('[API]updateAPIs/check token: invalid token')
715
+ // console.log(`token does not have permission`)
716
+ // return Promise.reject(`token does not have permission`)
717
+ // }
718
+
719
+ // //getAndVerifyClientUser
720
+ // let user = await getAndVerifyClientUser(token, 'updateAPIs')
721
+
722
+ // //check
723
+ // if (!iseobj(user)) {
724
+ // console.log('token', token)
725
+ // console.log('[API]updateAPIs/check user: invalid user')
726
+ // console.log(`token does not have permission`)
727
+ // return Promise.reject(`token does not have permission`)
728
+ // }
729
+
730
+ // //parsePayload
731
+ // let inp = await parsePayload(req)
732
+
733
+ // //updateAPIs
734
+ // let r = await updateAPIs(inp)
735
+
736
+ // return r
737
+ // }
738
+
739
+ // //pm2resolve core
740
+ // let r = await pm2resolve(core)()
741
+ // if (isErr(r.msg)) {
742
+ // r.msg = r.msg.message
743
+ // }
744
+ // // console.log('updateAPIs', r)
745
+
746
+ // return r
747
+ // },
748
+ // },
673
749
 
674
- return r
675
- },
676
- },
677
750
  {
678
751
  method: 'POST',
679
- path: '/updateAPIs',
752
+ path: '/syncAndReplaceTabs',
680
753
  handler: async function (req, res) {
681
- // console.log('updateAPIs', req)
754
+ // console.log('syncAndReplaceTabs', req)
682
755
  // console.log('payload', req.payload)
683
756
 
684
757
  async function core() {
@@ -686,55 +759,53 @@ function WWebApi(WOrm, url, db, getUserByToken, verifyClientUser, verifyAppUser,
686
759
  //token
687
760
  let token = get(req, 'query.token', '')
688
761
 
689
- //getAndVerifyClientUser
690
- let user = await getAndVerifyClientUser(token, 'updateAPIs')
691
-
692
762
  //check
693
- if (!iseobj(user)) {
763
+ if (!isestr(token)) {
764
+ console.log('req.query', get(req, 'query'))
694
765
  console.log('token', token)
695
- console.log('[API]updateAPIs/check user: invalid user')
766
+ console.log('[API]syncAndReplaceTabs/check token: invalid token')
696
767
  console.log(`token does not have permission`)
697
768
  return Promise.reject(`token does not have permission`)
698
769
  }
699
770
 
700
- //parsePayload
701
- let inp = await parsePayload(req)
702
-
703
- //updateAPIs
704
- let r = await updateAPIs(inp)
705
-
706
- return r
707
- }
708
-
709
- //pm2resolve core
710
- let r = await pm2resolve(core)()
711
- if (isErr(r.msg)) {
712
- r.msg = r.msg.message
713
- }
714
- // console.log('updateAPIs', r)
715
-
716
- return r
717
- },
718
- },
719
- {
720
- method: 'POST',
721
- path: '/syncAndReplaceApis',
722
- handler: async function (req, res) {
723
- // console.log('syncAndReplaceApis', req)
724
- // console.log('payload', req.payload)
771
+ //keyTable
772
+ let keyTable = get(req, 'query.keyTable', '')
725
773
 
726
- async function core() {
774
+ //check
775
+ if (!isestr(keyTable)) {
776
+ console.log('req.query', get(req, 'query'))
777
+ console.log('keyTable', keyTable)
778
+ console.log('[API]syncAndReplaceTabs/check keyTable: invalid keyTable')
779
+ console.log(`token does not have permission`)
780
+ return Promise.reject(`token does not have permission`)
781
+ }
727
782
 
728
- //token
729
- let token = get(req, 'query.token', '')
783
+ //check keyTable
784
+ let allowedTables = ['apis']
785
+ if (!allowedTables.includes(keyTable)) {
786
+ console.log('[API]syncAndReplaceTabs/check keyTable: unexpected keyTable', keyTable)
787
+ return Promise.reject(`invalid keyTable: ${keyTable}`)
788
+ }
730
789
 
731
790
  //getAndVerifyAppUser
732
- let user = await getAndVerifyAppUser(token, 'syncAndReplaceApis')
791
+ let user = await getAndVerifyAppUser(token, 'syncAndReplaceTabs')
733
792
 
734
793
  //check
735
794
  if (!iseobj(user)) {
736
795
  console.log('token', token)
737
- console.log('[API]syncAndReplaceApis/check user: invalid user')
796
+ console.log('[API]syncAndReplaceTabs/check user: invalid user')
797
+ console.log(`token does not have permission`)
798
+ return Promise.reject(`token does not have permission`)
799
+ }
800
+
801
+ //userId
802
+ let userId = get(user, 'id', '')
803
+
804
+ //check userId
805
+ if (!isestr(userId)) {
806
+ console.log('token', token)
807
+ console.log('user', user)
808
+ console.log('[API]syncAndReplaceTabs/check userId: invalid userId')
738
809
  console.log(`token does not have permission`)
739
810
  return Promise.reject(`token does not have permission`)
740
811
  }
@@ -742,8 +813,8 @@ function WWebApi(WOrm, url, db, getUserByToken, verifyClientUser, verifyAppUser,
742
813
  //parsePayload
743
814
  let inp = await parsePayload(req)
744
815
 
745
- //syncAndReplaceApis
746
- let r = await syncAndReplaceApis(inp)
816
+ //syncAndReplaceTabs
817
+ let r = await syncAndReplaceTabs(userId, inp, keyTable)
747
818
 
748
819
  return r
749
820
  }
@@ -753,11 +824,12 @@ function WWebApi(WOrm, url, db, getUserByToken, verifyClientUser, verifyAppUser,
753
824
  if (isErr(r.msg)) {
754
825
  r.msg = r.msg.message
755
826
  }
756
- // console.log('syncAndReplaceApis', r)
827
+ // console.log('syncAndReplaceTabs', r)
757
828
 
758
829
  return r
759
830
  },
760
831
  },
832
+
761
833
  ]
762
834
 
763
835
 
@@ -819,11 +891,10 @@ function WWebApi(WOrm, url, db, getUserByToken, verifyClientUser, verifyAppUser,
819
891
 
820
892
  getWebInfor,
821
893
 
822
- getAPIsList: (userId, query = {}) => {
823
- return getAPIsList(query)
824
- },
825
-
826
- // updateApis: (userId, rows) => {
894
+ // getAPIsList: (userId, query = {}) => { //待提供api管理系統界面使用
895
+ // return getAPIsList(query)
896
+ // },
897
+ // updateApis: (userId, rows) => { //待提供api管理系統界面使用
827
898
  // return updateApis(rows)
828
899
  // },
829
900
 
@@ -851,7 +922,7 @@ export default WWebApi
851
922
  <br class="clear">
852
923
 
853
924
  <footer>
854
- Documentation generated by <a href="https://github.com/jsdoc3/jsdoc">JSDoc 4.0.2</a> on Mon Jul 14 2025 20:34:11 GMT+0800 (台北標準時間) using the <a href="https://github.com/clenemt/docdash">docdash</a> theme.
925
+ Documentation generated by <a href="https://github.com/jsdoc3/jsdoc">JSDoc 4.0.2</a> on Mon Aug 25 2025 14:59:22 GMT+0800 (台北標準時間) using the <a href="https://github.com/clenemt/docdash">docdash</a> theme.
855
926
  </footer>
856
927
 
857
928
  <script>prettyPrint();</script>
package/docs/index.html CHANGED
@@ -71,7 +71,7 @@
71
71
  <br class="clear">
72
72
 
73
73
  <footer>
74
- Documentation generated by <a href="https://github.com/jsdoc3/jsdoc">JSDoc 4.0.2</a> on Mon Jul 14 2025 20:34:11 GMT+0800 (台北標準時間) using the <a href="https://github.com/clenemt/docdash">docdash</a> theme.
74
+ Documentation generated by <a href="https://github.com/jsdoc3/jsdoc">JSDoc 4.0.2</a> on Mon Aug 25 2025 14:59:22 GMT+0800 (台北標準時間) using the <a href="https://github.com/clenemt/docdash">docdash</a> theme.
75
75
  </footer>
76
76
 
77
77
  <script>prettyPrint();</script>
@@ -0,0 +1,53 @@
1
+ import map from 'lodash-es/map.js'
2
+ import ds from './src/schema/index.mjs'
3
+ import provideTabs from './server/provideTabs.mjs'
4
+
5
+
6
+ async function provide() {
7
+
8
+ let keyTable = 'apis'
9
+
10
+ let group = '寵物'
11
+
12
+ let url = `http://localhost:11005/syncAndReplaceTabs?keyTable=${keyTable}&token=sys`
13
+
14
+ let rs = [
15
+ {
16
+ id: 'id-for-test',
17
+ // order: 0,
18
+ name: '取得天竺鼠清單資訊',
19
+ description: '取得天竺鼠清單資訊',
20
+ url: '指api網址, 例如 http://localhost:11005/getDogsList',
21
+ method: 'get',
22
+ version: 'v1',
23
+ group,
24
+ levels: '寵物.天竺鼠',
25
+ keywords: 'pets;guineapigs',
26
+ state: 'ok',
27
+ creator: 'pets-system',
28
+ dataSource: 'pets-data',
29
+ mdInputParams: '輸入方式說明, markdown格式',
30
+ inputExample: '輸入範例數據',
31
+ mdOutputParams: '輸出方式說明, markdown格式',
32
+ outputExample: '輸出範例數據, json格式',
33
+ },
34
+ ]
35
+ rs = map(rs, (v, k) => {
36
+ let vv = ds.apis.funNew(v)
37
+ vv.id = v.id
38
+ return vv
39
+ })
40
+ console.log('rs', rs)
41
+
42
+ let r = await provideTabs(url, keyTable, group, rs)
43
+ console.log('r', r)
44
+
45
+ }
46
+
47
+ provide()
48
+ .catch((err) => {
49
+ console.log('provide catch', err)
50
+ })
51
+
52
+
53
+ //node g.provideApis.mjs
package/package.json CHANGED
@@ -1,18 +1,18 @@
1
1
  {
2
2
  "name": "w-web-api",
3
- "version": "1.0.42",
3
+ "version": "1.0.44",
4
4
  "main": "dist/w-web-api.umd.js",
5
5
  "dependencies": {
6
6
  "@mdi/js": "^7.4.47",
7
7
  "axios": "^1.9.0",
8
8
  "lodash-es": "^4.17.21",
9
9
  "showdown": "^2.1.0",
10
- "w-component-vue": "^2.4.22",
10
+ "w-component-vue": "^2.4.26",
11
11
  "w-data-collector": "^1.0.22",
12
- "w-serv-hapi": "^1.0.60",
13
- "w-serv-orm": "^1.0.29",
14
- "w-ui-loginout": "^1.0.9",
15
- "wsemi": "^1.8.15"
12
+ "w-serv-hapi": "^1.0.66",
13
+ "w-serv-orm": "^1.0.33",
14
+ "w-ui-loginout": "^1.0.10",
15
+ "wsemi": "^1.8.19"
16
16
  },
17
17
  "devDependencies": {
18
18
  "@vue/cli-plugin-babel": "^5.0.8",