w-web-api 1.0.42 → 1.0.43
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/db/wapis/apis/data.mdb +0 -0
- package/db/wapis/apis/lock.mdb +0 -0
- package/dist/w-web-api.umd.js +2 -2
- package/dist/w-web-api.umd.js.map +1 -1
- package/docs/WWebApi.html +2 -2
- package/docs/WWebApi.mjs.html +237 -156
- package/docs/index.html +1 -1
- package/g.provideApis.mjs +51 -0
- package/package.json +1 -1
- package/server/WWebApi.mjs +236 -155
- package/server/provideTabs.mjs +89 -0
- package/tableTags.json +1 -1
- package/server/provideApis.mjs +0 -74
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#
|
|
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
|
|
888
|
+
Documentation generated by <a href="https://github.com/jsdoc3/jsdoc">JSDoc 4.0.2</a> on Sun Jul 20 2025 22:09:28 GMT+0800 (台北標準時間) using the <a href="https://github.com/clenemt/docdash">docdash</a> theme.
|
|
889
889
|
</footer>
|
|
890
890
|
|
|
891
891
|
<script>prettyPrint();</script>
|
package/docs/WWebApi.mjs.html
CHANGED
|
@@ -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,138 @@ function WWebApi(WOrm, url, db, getUserByToken, verifyClientUser, verifyAppUser,
|
|
|
425
427
|
}
|
|
426
428
|
|
|
427
429
|
|
|
428
|
-
//getAPIsList
|
|
429
|
-
let getAPIsList = async (query = {}) => {
|
|
430
|
-
|
|
431
|
-
|
|
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
|
-
//
|
|
439
|
-
let
|
|
440
|
+
//payload
|
|
441
|
+
let payload = get(req, 'payload')
|
|
440
442
|
|
|
441
443
|
//to obj
|
|
442
|
-
if (isestr(
|
|
443
|
-
|
|
444
|
+
if (isestr(payload)) {
|
|
445
|
+
payload = j2o(payload)
|
|
444
446
|
}
|
|
445
447
|
|
|
446
448
|
//check
|
|
447
|
-
if (!iseobj(
|
|
448
|
-
console.log('
|
|
449
|
-
console.log(`invalid
|
|
450
|
-
return Promise.reject(`invalid
|
|
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(
|
|
456
|
+
let group = get(payload, 'group', '')
|
|
455
457
|
|
|
456
458
|
//check
|
|
457
459
|
if (!isestr(group)) {
|
|
458
|
-
console.log('
|
|
459
|
-
console.log(
|
|
460
|
-
|
|
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
|
-
//
|
|
465
|
-
let
|
|
465
|
+
//rows
|
|
466
|
+
let rows = get(payload, 'rows', [])
|
|
466
467
|
|
|
467
468
|
//check
|
|
468
|
-
if (!isearr(
|
|
469
|
-
console.log('
|
|
470
|
-
console.log(
|
|
471
|
-
|
|
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
|
-
|
|
476
|
-
|
|
477
|
-
|
|
478
|
-
|
|
479
|
-
|
|
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
|
|
481
|
+
return r
|
|
501
482
|
}
|
|
502
483
|
|
|
503
484
|
|
|
504
|
-
//updateAPIs
|
|
505
|
-
let updateAPIs = async (
|
|
485
|
+
// //updateAPIs
|
|
486
|
+
// let updateAPIs = async (inp = {}) => {
|
|
506
487
|
|
|
507
|
-
|
|
508
|
-
|
|
509
|
-
|
|
510
|
-
|
|
488
|
+
// //spread inp
|
|
489
|
+
// let { apis: rsApis } = inp
|
|
490
|
+
// // console.log('group', group)
|
|
491
|
+
// // console.log('rsApis', rsApis)
|
|
511
492
|
|
|
512
|
-
|
|
513
|
-
|
|
493
|
+
// //save
|
|
494
|
+
// let r = await woItems.apis.save(rsApis)
|
|
514
495
|
|
|
515
|
-
|
|
516
|
-
}
|
|
496
|
+
// return r
|
|
497
|
+
// }
|
|
517
498
|
|
|
518
499
|
|
|
519
|
-
//
|
|
520
|
-
let
|
|
500
|
+
//syncAndReplaceTabs
|
|
501
|
+
let syncAndReplaceTabs = async (userId, inp, keyTable) => {
|
|
521
502
|
|
|
522
503
|
//group
|
|
523
|
-
let group = get(
|
|
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('
|
|
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
|
-
//
|
|
535
|
-
let
|
|
536
|
-
// console.log('
|
|
515
|
+
//rows
|
|
516
|
+
let rows = get(inp, 'rows', [])
|
|
517
|
+
// console.log('rows', rows)
|
|
537
518
|
|
|
538
519
|
//check
|
|
539
|
-
if (!isearr(
|
|
540
|
-
console.log('
|
|
541
|
-
console.log('
|
|
542
|
-
|
|
543
|
-
|
|
520
|
+
if (!isearr(rows)) {
|
|
521
|
+
console.log('inp', inp)
|
|
522
|
+
console.log('keyTable', keyTable)
|
|
523
|
+
return Promise.reject(`invalid rows`)
|
|
524
|
+
}
|
|
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
|
+
})
|
|
544
550
|
}
|
|
545
551
|
|
|
552
|
+
//ltdtmapping
|
|
553
|
+
rows = ltdtmapping(rows, ds[keyTable].keys)
|
|
554
|
+
// console.log('ltdtmapping rows', rows)
|
|
555
|
+
|
|
546
556
|
//delAll group
|
|
547
|
-
await woItems.
|
|
557
|
+
await woItems[keyTable].delAll({ group })
|
|
548
558
|
|
|
549
559
|
//insert
|
|
550
|
-
let r = await woItems.
|
|
560
|
+
// let r = await woItems[keyTable].insert(rows)
|
|
561
|
+
let r = await procOrm(userId, keyTable, 'insert', rows) //須使用procOrm才有辦法自動給予相關欄位
|
|
551
562
|
|
|
552
563
|
return r
|
|
553
564
|
}
|
|
@@ -603,7 +614,7 @@ function WWebApi(WOrm, url, db, getUserByToken, verifyClientUser, verifyAppUser,
|
|
|
603
614
|
|
|
604
615
|
{
|
|
605
616
|
method: 'GET',
|
|
606
|
-
path: '/api/getUserByToken',
|
|
617
|
+
path: '/api/getUserByToken', //未登入主頁時需先檢測token, getUserByToken為w-ui-loginout預設值, 若要更改兩邊須同時修改
|
|
607
618
|
handler: async function (req, res) {
|
|
608
619
|
// console.log('getUserByToken', req)
|
|
609
620
|
|
|
@@ -612,6 +623,15 @@ function WWebApi(WOrm, url, db, getUserByToken, verifyClientUser, verifyAppUser,
|
|
|
612
623
|
//token
|
|
613
624
|
let token = get(req, 'query.token', '')
|
|
614
625
|
|
|
626
|
+
//check
|
|
627
|
+
if (!isestr(token)) {
|
|
628
|
+
console.log('req.query', get(req, 'query'))
|
|
629
|
+
console.log('token', token)
|
|
630
|
+
console.log('[API]getUserByToken/check token: invalid token')
|
|
631
|
+
console.log(`token does not have permission`)
|
|
632
|
+
return Promise.reject(`token does not have permission`)
|
|
633
|
+
}
|
|
634
|
+
|
|
615
635
|
//getAndVerifyClientUser
|
|
616
636
|
let user = await getAndVerifyClientUser(token, 'getUserByToken')
|
|
617
637
|
|
|
@@ -636,49 +656,112 @@ function WWebApi(WOrm, url, db, getUserByToken, verifyClientUser, verifyAppUser,
|
|
|
636
656
|
return r
|
|
637
657
|
},
|
|
638
658
|
},
|
|
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
659
|
|
|
664
|
-
|
|
665
|
-
|
|
660
|
+
// {
|
|
661
|
+
// method: 'GET',
|
|
662
|
+
// path: '/getAPIsList',
|
|
663
|
+
// handler: async function (req, res) {
|
|
664
|
+
// // console.log('getAPIsList', req)
|
|
665
|
+
|
|
666
|
+
// async function core() {
|
|
667
|
+
|
|
668
|
+
// //token
|
|
669
|
+
// let token = get(req, 'query.token', '')
|
|
670
|
+
|
|
671
|
+
// //check
|
|
672
|
+
// if (!isestr(token)) {
|
|
673
|
+
// console.log('req.query', get(req, 'query'))
|
|
674
|
+
// console.log('token', token)
|
|
675
|
+
// console.log('[API]getAPIsList/check token: invalid token')
|
|
676
|
+
// console.log(`token does not have permission`)
|
|
677
|
+
// return Promise.reject(`token does not have permission`)
|
|
678
|
+
// }
|
|
679
|
+
|
|
680
|
+
// //getAndVerifyClientUser
|
|
681
|
+
// let user = await getAndVerifyClientUser(token, 'getAPIsList')
|
|
682
|
+
|
|
683
|
+
// //check
|
|
684
|
+
// if (!iseobj(user)) {
|
|
685
|
+
// console.log('token', token)
|
|
686
|
+
// console.log('[API]getAPIsList/check user: invalid user')
|
|
687
|
+
// console.log(`token does not have permission`)
|
|
688
|
+
// return Promise.reject(`token does not have permission`)
|
|
689
|
+
// }
|
|
690
|
+
|
|
691
|
+
// //getAPIsList
|
|
692
|
+
// let r = await getAPIsList({ isActive: 'y' })
|
|
693
|
+
|
|
694
|
+
// return r
|
|
695
|
+
// }
|
|
696
|
+
|
|
697
|
+
// //pm2resolve core
|
|
698
|
+
// let r = await pm2resolve(core)()
|
|
699
|
+
// if (isErr(r.msg)) {
|
|
700
|
+
// r.msg = r.msg.message
|
|
701
|
+
// }
|
|
702
|
+
// // console.log('getAPIsList', r)
|
|
703
|
+
|
|
704
|
+
// return r
|
|
705
|
+
// },
|
|
706
|
+
// },
|
|
666
707
|
|
|
667
|
-
|
|
668
|
-
|
|
669
|
-
|
|
670
|
-
|
|
671
|
-
|
|
672
|
-
|
|
708
|
+
// {
|
|
709
|
+
// method: 'POST',
|
|
710
|
+
// path: '/updateAPIs',
|
|
711
|
+
// handler: async function (req, res) {
|
|
712
|
+
// // console.log('updateAPIs', req)
|
|
713
|
+
// // console.log('payload', req.payload)
|
|
714
|
+
|
|
715
|
+
// async function core() {
|
|
716
|
+
|
|
717
|
+
// //token
|
|
718
|
+
// let token = get(req, 'query.token', '')
|
|
719
|
+
|
|
720
|
+
// //check
|
|
721
|
+
// if (!isestr(token)) {
|
|
722
|
+
// console.log('req.query', get(req, 'query'))
|
|
723
|
+
// console.log('token', token)
|
|
724
|
+
// console.log('[API]updateAPIs/check token: invalid token')
|
|
725
|
+
// console.log(`token does not have permission`)
|
|
726
|
+
// return Promise.reject(`token does not have permission`)
|
|
727
|
+
// }
|
|
728
|
+
|
|
729
|
+
// //getAndVerifyClientUser
|
|
730
|
+
// let user = await getAndVerifyClientUser(token, 'updateAPIs')
|
|
731
|
+
|
|
732
|
+
// //check
|
|
733
|
+
// if (!iseobj(user)) {
|
|
734
|
+
// console.log('token', token)
|
|
735
|
+
// console.log('[API]updateAPIs/check user: invalid user')
|
|
736
|
+
// console.log(`token does not have permission`)
|
|
737
|
+
// return Promise.reject(`token does not have permission`)
|
|
738
|
+
// }
|
|
739
|
+
|
|
740
|
+
// //parsePayload
|
|
741
|
+
// let inp = await parsePayload(req)
|
|
742
|
+
|
|
743
|
+
// //updateAPIs
|
|
744
|
+
// let r = await updateAPIs(inp)
|
|
745
|
+
|
|
746
|
+
// return r
|
|
747
|
+
// }
|
|
748
|
+
|
|
749
|
+
// //pm2resolve core
|
|
750
|
+
// let r = await pm2resolve(core)()
|
|
751
|
+
// if (isErr(r.msg)) {
|
|
752
|
+
// r.msg = r.msg.message
|
|
753
|
+
// }
|
|
754
|
+
// // console.log('updateAPIs', r)
|
|
755
|
+
|
|
756
|
+
// return r
|
|
757
|
+
// },
|
|
758
|
+
// },
|
|
673
759
|
|
|
674
|
-
return r
|
|
675
|
-
},
|
|
676
|
-
},
|
|
677
760
|
{
|
|
678
761
|
method: 'POST',
|
|
679
|
-
path: '/
|
|
762
|
+
path: '/syncAndReplaceTabs',
|
|
680
763
|
handler: async function (req, res) {
|
|
681
|
-
// console.log('
|
|
764
|
+
// console.log('syncAndReplaceTabs', req)
|
|
682
765
|
// console.log('payload', req.payload)
|
|
683
766
|
|
|
684
767
|
async function core() {
|
|
@@ -686,55 +769,53 @@ function WWebApi(WOrm, url, db, getUserByToken, verifyClientUser, verifyAppUser,
|
|
|
686
769
|
//token
|
|
687
770
|
let token = get(req, 'query.token', '')
|
|
688
771
|
|
|
689
|
-
//getAndVerifyClientUser
|
|
690
|
-
let user = await getAndVerifyClientUser(token, 'updateAPIs')
|
|
691
|
-
|
|
692
772
|
//check
|
|
693
|
-
if (!
|
|
773
|
+
if (!isestr(token)) {
|
|
774
|
+
console.log('req.query', get(req, 'query'))
|
|
694
775
|
console.log('token', token)
|
|
695
|
-
console.log('[API]
|
|
776
|
+
console.log('[API]syncAndReplaceTabs/check token: invalid token')
|
|
696
777
|
console.log(`token does not have permission`)
|
|
697
778
|
return Promise.reject(`token does not have permission`)
|
|
698
779
|
}
|
|
699
780
|
|
|
700
|
-
//
|
|
701
|
-
let
|
|
702
|
-
|
|
703
|
-
//updateAPIs
|
|
704
|
-
let r = await updateAPIs(inp)
|
|
781
|
+
//keyTable
|
|
782
|
+
let keyTable = get(req, 'query.keyTable', '')
|
|
705
783
|
|
|
706
|
-
|
|
707
|
-
|
|
708
|
-
|
|
709
|
-
|
|
710
|
-
|
|
711
|
-
|
|
712
|
-
|
|
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)
|
|
725
|
-
|
|
726
|
-
async function core() {
|
|
784
|
+
//check
|
|
785
|
+
if (!isestr(keyTable)) {
|
|
786
|
+
console.log('req.query', get(req, 'query'))
|
|
787
|
+
console.log('keyTable', keyTable)
|
|
788
|
+
console.log('[API]syncAndReplaceTabs/check keyTable: invalid keyTable')
|
|
789
|
+
console.log(`token does not have permission`)
|
|
790
|
+
return Promise.reject(`token does not have permission`)
|
|
791
|
+
}
|
|
727
792
|
|
|
728
|
-
//
|
|
729
|
-
let
|
|
793
|
+
//check keyTable
|
|
794
|
+
let allowedTables = ['apis']
|
|
795
|
+
if (!allowedTables.includes(keyTable)) {
|
|
796
|
+
console.log('[API]syncAndReplaceTabs/check keyTable: unexpected keyTable', keyTable)
|
|
797
|
+
return Promise.reject(`invalid keyTable: ${keyTable}`)
|
|
798
|
+
}
|
|
730
799
|
|
|
731
800
|
//getAndVerifyAppUser
|
|
732
|
-
let user = await getAndVerifyAppUser(token, '
|
|
801
|
+
let user = await getAndVerifyAppUser(token, 'syncAndReplaceTabs')
|
|
733
802
|
|
|
734
803
|
//check
|
|
735
804
|
if (!iseobj(user)) {
|
|
736
805
|
console.log('token', token)
|
|
737
|
-
console.log('[API]
|
|
806
|
+
console.log('[API]syncAndReplaceTabs/check user: invalid user')
|
|
807
|
+
console.log(`token does not have permission`)
|
|
808
|
+
return Promise.reject(`token does not have permission`)
|
|
809
|
+
}
|
|
810
|
+
|
|
811
|
+
//userId
|
|
812
|
+
let userId = get(user, 'id', '')
|
|
813
|
+
|
|
814
|
+
//check userId
|
|
815
|
+
if (!isestr(userId)) {
|
|
816
|
+
console.log('token', token)
|
|
817
|
+
console.log('user', user)
|
|
818
|
+
console.log('[API]syncAndReplaceTabs/check userId: invalid userId')
|
|
738
819
|
console.log(`token does not have permission`)
|
|
739
820
|
return Promise.reject(`token does not have permission`)
|
|
740
821
|
}
|
|
@@ -742,8 +823,8 @@ function WWebApi(WOrm, url, db, getUserByToken, verifyClientUser, verifyAppUser,
|
|
|
742
823
|
//parsePayload
|
|
743
824
|
let inp = await parsePayload(req)
|
|
744
825
|
|
|
745
|
-
//
|
|
746
|
-
let r = await
|
|
826
|
+
//syncAndReplaceTabs
|
|
827
|
+
let r = await syncAndReplaceTabs(userId, inp, keyTable)
|
|
747
828
|
|
|
748
829
|
return r
|
|
749
830
|
}
|
|
@@ -753,11 +834,12 @@ function WWebApi(WOrm, url, db, getUserByToken, verifyClientUser, verifyAppUser,
|
|
|
753
834
|
if (isErr(r.msg)) {
|
|
754
835
|
r.msg = r.msg.message
|
|
755
836
|
}
|
|
756
|
-
// console.log('
|
|
837
|
+
// console.log('syncAndReplaceTabs', r)
|
|
757
838
|
|
|
758
839
|
return r
|
|
759
840
|
},
|
|
760
841
|
},
|
|
842
|
+
|
|
761
843
|
]
|
|
762
844
|
|
|
763
845
|
|
|
@@ -819,11 +901,10 @@ function WWebApi(WOrm, url, db, getUserByToken, verifyClientUser, verifyAppUser,
|
|
|
819
901
|
|
|
820
902
|
getWebInfor,
|
|
821
903
|
|
|
822
|
-
getAPIsList: (userId, query = {}) => {
|
|
823
|
-
|
|
824
|
-
},
|
|
825
|
-
|
|
826
|
-
// updateApis: (userId, rows) => {
|
|
904
|
+
// getAPIsList: (userId, query = {}) => { //待提供api管理系統界面使用
|
|
905
|
+
// return getAPIsList(query)
|
|
906
|
+
// },
|
|
907
|
+
// updateApis: (userId, rows) => { //待提供api管理系統界面使用
|
|
827
908
|
// return updateApis(rows)
|
|
828
909
|
// },
|
|
829
910
|
|
|
@@ -851,7 +932,7 @@ export default WWebApi
|
|
|
851
932
|
<br class="clear">
|
|
852
933
|
|
|
853
934
|
<footer>
|
|
854
|
-
Documentation generated by <a href="https://github.com/jsdoc3/jsdoc">JSDoc 4.0.2</a> on
|
|
935
|
+
Documentation generated by <a href="https://github.com/jsdoc3/jsdoc">JSDoc 4.0.2</a> on Sun Jul 20 2025 22:09:28 GMT+0800 (台北標準時間) using the <a href="https://github.com/clenemt/docdash">docdash</a> theme.
|
|
855
936
|
</footer>
|
|
856
937
|
|
|
857
938
|
<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
|
|
74
|
+
Documentation generated by <a href="https://github.com/jsdoc3/jsdoc">JSDoc 4.0.2</a> on Sun Jul 20 2025 22:09:28 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,51 @@
|
|
|
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 url = `http://localhost:11005/syncAndReplaceTabs?token=sys&keyTable=apis`
|
|
9
|
+
|
|
10
|
+
let rs = [
|
|
11
|
+
{
|
|
12
|
+
id: 'id-for-test',
|
|
13
|
+
// order: 0,
|
|
14
|
+
name: '取得天竺鼠清單資訊',
|
|
15
|
+
description: '取得天竺鼠清單資訊',
|
|
16
|
+
url: '指api網址, 例如 http://localhost:11005/getDogsList',
|
|
17
|
+
method: 'get',
|
|
18
|
+
version: 'v1',
|
|
19
|
+
// group: '寵物',
|
|
20
|
+
levels: '寵物.天竺鼠',
|
|
21
|
+
keywords: 'pets;guineapigs',
|
|
22
|
+
state: 'ok',
|
|
23
|
+
creator: 'pets-system',
|
|
24
|
+
dataSource: 'pets-data',
|
|
25
|
+
mdInputParams: '輸入方式說明, markdown格式',
|
|
26
|
+
inputExample: '輸入範例數據',
|
|
27
|
+
mdOutputParams: '輸出方式說明, markdown格式',
|
|
28
|
+
outputExample: '輸出範例數據, json格式',
|
|
29
|
+
},
|
|
30
|
+
]
|
|
31
|
+
rs = map(rs, (v, k) => {
|
|
32
|
+
let vv = ds.apis.funNew(v)
|
|
33
|
+
vv.id = v.id
|
|
34
|
+
return vv
|
|
35
|
+
})
|
|
36
|
+
console.log('rs', rs)
|
|
37
|
+
|
|
38
|
+
let keyTable = 'apis'
|
|
39
|
+
let group = '寵物'
|
|
40
|
+
let r = await provideTabs(url, keyTable, group, rs)
|
|
41
|
+
console.log('r', r)
|
|
42
|
+
|
|
43
|
+
}
|
|
44
|
+
|
|
45
|
+
provide()
|
|
46
|
+
.catch((err) => {
|
|
47
|
+
console.log('provide catch', err)
|
|
48
|
+
})
|
|
49
|
+
|
|
50
|
+
|
|
51
|
+
//node g.provideApis.mjs
|