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/db/wapis/apis/data.mdb +0 -0
- package/db/wapis/apis/lock.mdb +0 -0
- package/dist/css/{app.02bbf3c6.css → app.e271a5ec.css} +1 -1
- package/dist/index.tmp +1 -1
- package/dist/js/app-legacy.cb986a90.js +2 -0
- package/dist/js/{app-legacy.d2226e7d.js.map → app-legacy.cb986a90.js.map} +1 -1
- package/dist/js/app.cb986a90.js +2 -0
- package/dist/js/{app.d2226e7d.js.map → app.cb986a90.js.map} +1 -1
- package/dist/js/chunk-vendors-legacy.6d32dea7.js +14 -0
- package/dist/js/chunk-vendors-legacy.6d32dea7.js.map +1 -0
- package/dist/js/chunk-vendors.6d32dea7.js +14 -0
- package/dist/js/chunk-vendors.6d32dea7.js.map +1 -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 +238 -167
- package/docs/index.html +1 -1
- package/g.provideApis.mjs +53 -0
- package/package.json +6 -6
- package/server/WWebApi.mjs +237 -166
- package/server/provideTabs.mjs +89 -0
- package/srv.mjs +2 -2
- package/tableTags.json +1 -1
- package/dist/js/app-legacy.d2226e7d.js +0 -2
- package/dist/js/app.d2226e7d.js +0 -2
- package/dist/js/chunk-vendors-legacy.10dbc55a.js +0 -14
- package/dist/js/chunk-vendors-legacy.10dbc55a.js.map +0 -1
- package/dist/js/chunk-vendors.10dbc55a.js +0 -14
- package/dist/js/chunk-vendors.10dbc55a.js.map +0 -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 Mon
|
|
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>
|
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,139 @@ 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
|
-
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.
|
|
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才有辦法自動給予相關欄位
|
|
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',
|
|
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
|
-
|
|
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
|
-
|
|
668
|
-
|
|
669
|
-
|
|
670
|
-
|
|
671
|
-
|
|
672
|
-
|
|
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: '/
|
|
752
|
+
path: '/syncAndReplaceTabs',
|
|
680
753
|
handler: async function (req, res) {
|
|
681
|
-
// console.log('
|
|
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 (!
|
|
763
|
+
if (!isestr(token)) {
|
|
764
|
+
console.log('req.query', get(req, 'query'))
|
|
694
765
|
console.log('token', token)
|
|
695
|
-
console.log('[API]
|
|
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
|
-
//
|
|
701
|
-
let
|
|
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
|
-
|
|
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
|
-
//
|
|
729
|
-
let
|
|
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, '
|
|
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]
|
|
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
|
-
//
|
|
746
|
-
let r = await
|
|
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('
|
|
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
|
-
|
|
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
|
|
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
|
|
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.
|
|
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.
|
|
10
|
+
"w-component-vue": "^2.4.26",
|
|
11
11
|
"w-data-collector": "^1.0.22",
|
|
12
|
-
"w-serv-hapi": "^1.0.
|
|
13
|
-
"w-serv-orm": "^1.0.
|
|
14
|
-
"w-ui-loginout": "^1.0.
|
|
15
|
-
"wsemi": "^1.8.
|
|
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",
|