w-data-collector 1.0.1
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/.editorconfig +9 -0
- package/.eslintignore +3 -0
- package/.eslintrc.js +54 -0
- package/.jsdoc +25 -0
- package/LICENSE +21 -0
- package/README.md +43 -0
- package/SECURITY.md +5 -0
- package/babel.config.js +14 -0
- package/dist/w-data-collector.umd.js +7 -0
- package/dist/w-data-collector.umd.js.map +1 -0
- package/docs/fonts/Montserrat/Montserrat-Bold.eot +0 -0
- package/docs/fonts/Montserrat/Montserrat-Bold.ttf +0 -0
- package/docs/fonts/Montserrat/Montserrat-Bold.woff +0 -0
- package/docs/fonts/Montserrat/Montserrat-Bold.woff2 +0 -0
- package/docs/fonts/Montserrat/Montserrat-Regular.eot +0 -0
- package/docs/fonts/Montserrat/Montserrat-Regular.ttf +0 -0
- package/docs/fonts/Montserrat/Montserrat-Regular.woff +0 -0
- package/docs/fonts/Montserrat/Montserrat-Regular.woff2 +0 -0
- package/docs/fonts/Source-Sans-Pro/sourcesanspro-light-webfont.eot +0 -0
- package/docs/fonts/Source-Sans-Pro/sourcesanspro-light-webfont.svg +978 -0
- package/docs/fonts/Source-Sans-Pro/sourcesanspro-light-webfont.ttf +0 -0
- package/docs/fonts/Source-Sans-Pro/sourcesanspro-light-webfont.woff +0 -0
- package/docs/fonts/Source-Sans-Pro/sourcesanspro-light-webfont.woff2 +0 -0
- package/docs/fonts/Source-Sans-Pro/sourcesanspro-regular-webfont.eot +0 -0
- package/docs/fonts/Source-Sans-Pro/sourcesanspro-regular-webfont.svg +1049 -0
- package/docs/fonts/Source-Sans-Pro/sourcesanspro-regular-webfont.ttf +0 -0
- package/docs/fonts/Source-Sans-Pro/sourcesanspro-regular-webfont.woff +0 -0
- package/docs/fonts/Source-Sans-Pro/sourcesanspro-regular-webfont.woff2 +0 -0
- package/docs/genIndex.mjs.html +189 -0
- package/docs/genTestdata.mjs.html +162 -0
- package/docs/global.html +891 -0
- package/docs/index.html +81 -0
- package/docs/scripts/collapse.js +20 -0
- package/docs/scripts/linenumber.js +25 -0
- package/docs/scripts/nav.js +12 -0
- package/docs/scripts/polyfill.js +4 -0
- package/docs/scripts/prettify/Apache-License-2.0.txt +202 -0
- package/docs/scripts/prettify/lang-css.js +2 -0
- package/docs/scripts/prettify/prettify.js +28 -0
- package/docs/scripts/search.js +83 -0
- package/docs/styles/jsdoc.css +765 -0
- package/docs/styles/prettify.css +79 -0
- package/gi.mjs +13 -0
- package/gt.mjs +11 -0
- package/package.json +32 -0
- package/src/WDataCollector.mjs +13 -0
- package/src/build.mjs +127 -0
- package/src/genIndex.mjs +120 -0
- package/src/genTestdata.mjs +93 -0
- package/test/genIndex.test.mjs +17 -0
- package/test/schema/index.mjs +20 -0
- package/test/schema/index.mjs.txt +20 -0
- package/test/schema/tables/holeLabTabs.mjs +130 -0
- package/test/schema/tables/holeLabTabsItems.mjs +318 -0
- package/test/schema/tables/users.mjs +102 -0
- package/toolg/addVersion.mjs +4 -0
- package/toolg/cleanFolder.mjs +4 -0
- package/toolg/gDistRollup.mjs +35 -0
- package/toolg/gDocsExams.mjs +51 -0
- package/toolg/modifyReadme.mjs +4 -0
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
@@ -0,0 +1,189 @@
|
|
|
1
|
+
<!DOCTYPE html>
|
|
2
|
+
<html lang="en">
|
|
3
|
+
<head>
|
|
4
|
+
|
|
5
|
+
<meta charset="utf-8">
|
|
6
|
+
<title>genIndex.mjs - Documentation</title>
|
|
7
|
+
|
|
8
|
+
|
|
9
|
+
<script src="scripts/prettify/prettify.js"></script>
|
|
10
|
+
<script src="scripts/prettify/lang-css.js"></script>
|
|
11
|
+
<!--[if lt IE 9]>
|
|
12
|
+
<script src="//html5shiv.googlecode.com/svn/trunk/html5.js"></script>
|
|
13
|
+
<![endif]-->
|
|
14
|
+
<link type="text/css" rel="stylesheet" href="styles/prettify.css">
|
|
15
|
+
<link type="text/css" rel="stylesheet" href="styles/jsdoc.css">
|
|
16
|
+
<script src="scripts/nav.js" defer></script>
|
|
17
|
+
<meta name="viewport" content="width=device-width, initial-scale=1.0">
|
|
18
|
+
</head>
|
|
19
|
+
<body>
|
|
20
|
+
|
|
21
|
+
<input type="checkbox" id="nav-trigger" class="nav-trigger" />
|
|
22
|
+
<label for="nav-trigger" class="navicon-button x">
|
|
23
|
+
<div class="navicon"></div>
|
|
24
|
+
</label>
|
|
25
|
+
|
|
26
|
+
<label for="nav-trigger" class="overlay"></label>
|
|
27
|
+
|
|
28
|
+
<nav >
|
|
29
|
+
|
|
30
|
+
<h2><a href="index.html">Home</a></h2><h3>Global</h3><ul><li><a href="global.html#genIndex">genIndex</a></li><li><a href="global.html#genTestdata">genTestdata</a></li></ul>
|
|
31
|
+
</nav>
|
|
32
|
+
|
|
33
|
+
<div id="main">
|
|
34
|
+
|
|
35
|
+
<h1 class="page-title">genIndex.mjs</h1>
|
|
36
|
+
|
|
37
|
+
|
|
38
|
+
|
|
39
|
+
|
|
40
|
+
|
|
41
|
+
|
|
42
|
+
|
|
43
|
+
<section>
|
|
44
|
+
<article>
|
|
45
|
+
<pre class="prettyprint source linenums"><code>import path from 'path'
|
|
46
|
+
import fs from 'fs'
|
|
47
|
+
import get from 'lodash/get'
|
|
48
|
+
import map from 'lodash/map'
|
|
49
|
+
import join from 'lodash/join'
|
|
50
|
+
import isestr from 'wsemi/src/isestr.mjs'
|
|
51
|
+
import fsTreeFolder from 'wsemi/src/fsTreeFolder.mjs'
|
|
52
|
+
import replace from 'wsemi/src/replace.mjs'
|
|
53
|
+
|
|
54
|
+
|
|
55
|
+
function genImports(ms) {
|
|
56
|
+
let rs = map(ms, (v) => {
|
|
57
|
+
let t = `import {name} from '{src}'`
|
|
58
|
+
t = replace(t, '{name}', v.name)
|
|
59
|
+
t = replace(t, '{src}', v.src)
|
|
60
|
+
return t
|
|
61
|
+
})
|
|
62
|
+
return join(rs, '\n')
|
|
63
|
+
}
|
|
64
|
+
|
|
65
|
+
|
|
66
|
+
function genNames(ms) {
|
|
67
|
+
let rs = map(ms, (v) => {
|
|
68
|
+
let t = ` {name},`
|
|
69
|
+
t = replace(t, '{name}', v.name)
|
|
70
|
+
return t
|
|
71
|
+
})
|
|
72
|
+
return join(rs, '\n')
|
|
73
|
+
}
|
|
74
|
+
|
|
75
|
+
|
|
76
|
+
/**
|
|
77
|
+
* 由各資料表定義*.mjs檔產生資料表收集物件ds
|
|
78
|
+
*
|
|
79
|
+
* @param {String} fdSrc 輸入各資料表定義*.mjs檔案所在資料夾
|
|
80
|
+
* @param {String} fdIndex 輸入產生index.mjs檔案需儲存至的資料夾,主要是跟各資料表定義*.mjs檔計算相對路徑供程式碼import用
|
|
81
|
+
* @param {Object} [opt={}] 輸入設定物件,預設{}
|
|
82
|
+
* @param {String} [opt.fpBuild='w-data-collector/src/build.mjs'] 輸入程式碼所需import之再處理資料表定義*.mjs檔的build函數,預設為'w-data-collector/src/build.mjs'
|
|
83
|
+
* @param {String} [opt.fnIndex='index.mjs'] 輸入產生ds所需程式碼index.mjs檔案的名稱,預設為'index.mjs',實際檔案儲存位置為fdIndex下fnIndex
|
|
84
|
+
* @example
|
|
85
|
+
*
|
|
86
|
+
* import genIndex from 'w-data-collector/src/genIndex.mjs'
|
|
87
|
+
*
|
|
88
|
+
* genIndex('./src/schema/tables', './src/schema', {})
|
|
89
|
+
* // => genIndex done
|
|
90
|
+
*
|
|
91
|
+
*/
|
|
92
|
+
function genIndex(fdSrc, fdIndex, opt = {}) {
|
|
93
|
+
|
|
94
|
+
//fpBuild
|
|
95
|
+
let fpBuild = get(opt, 'fpBuild')
|
|
96
|
+
if (!isestr(fpBuild)) {
|
|
97
|
+
fpBuild = 'w-data-collector/src/build.mjs'
|
|
98
|
+
}
|
|
99
|
+
|
|
100
|
+
//fnIndex
|
|
101
|
+
let fnIndex = get(opt, 'fnIndex')
|
|
102
|
+
if (!isestr(fnIndex)) {
|
|
103
|
+
fnIndex = 'index.mjs'
|
|
104
|
+
}
|
|
105
|
+
|
|
106
|
+
//fsTreeFolder
|
|
107
|
+
let fps = fsTreeFolder(fdSrc)
|
|
108
|
+
// console.log('fps', fps)
|
|
109
|
+
|
|
110
|
+
//ms
|
|
111
|
+
let ms = map(fps, (v) => {
|
|
112
|
+
let name = v.name
|
|
113
|
+
name = replace(name, '.mjs', '')
|
|
114
|
+
name = replace(name, '.js', '')
|
|
115
|
+
let src = path.relative(fdIndex, v.path)
|
|
116
|
+
src = src.replace(/\\/g, '/')
|
|
117
|
+
src = `./${src}`
|
|
118
|
+
return {
|
|
119
|
+
name,
|
|
120
|
+
src,
|
|
121
|
+
}
|
|
122
|
+
})
|
|
123
|
+
// console.log('ms', ms)
|
|
124
|
+
|
|
125
|
+
let t = `{cimps}
|
|
126
|
+
import build from '{fpBuild}'
|
|
127
|
+
|
|
128
|
+
|
|
129
|
+
let cs = {
|
|
130
|
+
{cnms}
|
|
131
|
+
}
|
|
132
|
+
|
|
133
|
+
//ds
|
|
134
|
+
let ds = {}
|
|
135
|
+
for (let k in cs) {
|
|
136
|
+
ds[k] = build(cs[k])
|
|
137
|
+
}
|
|
138
|
+
|
|
139
|
+
|
|
140
|
+
export default ds
|
|
141
|
+
`
|
|
142
|
+
|
|
143
|
+
//genImports
|
|
144
|
+
let cimps = genImports(ms)
|
|
145
|
+
|
|
146
|
+
//genNames
|
|
147
|
+
let cnms = genNames(ms)
|
|
148
|
+
|
|
149
|
+
//replace
|
|
150
|
+
t = replace(t, '{cimps}', cimps)
|
|
151
|
+
t = replace(t, '{cnms}', cnms)
|
|
152
|
+
t = replace(t, '{fpBuild}', fpBuild)
|
|
153
|
+
|
|
154
|
+
//fpIndex
|
|
155
|
+
let fpIndex = path.resolve(fdIndex, fnIndex)
|
|
156
|
+
|
|
157
|
+
//writeFileSync
|
|
158
|
+
fs.writeFileSync(fpIndex, t, 'utf8')
|
|
159
|
+
|
|
160
|
+
console.log('genIndex done')
|
|
161
|
+
}
|
|
162
|
+
|
|
163
|
+
|
|
164
|
+
export default genIndex
|
|
165
|
+
</code></pre>
|
|
166
|
+
</article>
|
|
167
|
+
</section>
|
|
168
|
+
|
|
169
|
+
|
|
170
|
+
|
|
171
|
+
|
|
172
|
+
|
|
173
|
+
|
|
174
|
+
</div>
|
|
175
|
+
|
|
176
|
+
<br class="clear">
|
|
177
|
+
|
|
178
|
+
<footer>
|
|
179
|
+
Documentation generated by <a href="https://github.com/jsdoc3/jsdoc">JSDoc 3.6.7</a> on Thu Oct 28 2021 15:38:46 GMT+0800 (台北標準時間) using the <a href="https://github.com/clenemt/docdash">docdash</a> theme.
|
|
180
|
+
</footer>
|
|
181
|
+
|
|
182
|
+
<script>prettyPrint();</script>
|
|
183
|
+
<script src="scripts/polyfill.js"></script>
|
|
184
|
+
<script src="scripts/linenumber.js"></script>
|
|
185
|
+
|
|
186
|
+
|
|
187
|
+
|
|
188
|
+
</body>
|
|
189
|
+
</html>
|
|
@@ -0,0 +1,162 @@
|
|
|
1
|
+
<!DOCTYPE html>
|
|
2
|
+
<html lang="en">
|
|
3
|
+
<head>
|
|
4
|
+
|
|
5
|
+
<meta charset="utf-8">
|
|
6
|
+
<title>genTestdata.mjs - Documentation</title>
|
|
7
|
+
|
|
8
|
+
|
|
9
|
+
<script src="scripts/prettify/prettify.js"></script>
|
|
10
|
+
<script src="scripts/prettify/lang-css.js"></script>
|
|
11
|
+
<!--[if lt IE 9]>
|
|
12
|
+
<script src="//html5shiv.googlecode.com/svn/trunk/html5.js"></script>
|
|
13
|
+
<![endif]-->
|
|
14
|
+
<link type="text/css" rel="stylesheet" href="styles/prettify.css">
|
|
15
|
+
<link type="text/css" rel="stylesheet" href="styles/jsdoc.css">
|
|
16
|
+
<script src="scripts/nav.js" defer></script>
|
|
17
|
+
<meta name="viewport" content="width=device-width, initial-scale=1.0">
|
|
18
|
+
</head>
|
|
19
|
+
<body>
|
|
20
|
+
|
|
21
|
+
<input type="checkbox" id="nav-trigger" class="nav-trigger" />
|
|
22
|
+
<label for="nav-trigger" class="navicon-button x">
|
|
23
|
+
<div class="navicon"></div>
|
|
24
|
+
</label>
|
|
25
|
+
|
|
26
|
+
<label for="nav-trigger" class="overlay"></label>
|
|
27
|
+
|
|
28
|
+
<nav >
|
|
29
|
+
|
|
30
|
+
<h2><a href="index.html">Home</a></h2><h3>Global</h3><ul><li><a href="global.html#genIndex">genIndex</a></li><li><a href="global.html#genTestdata">genTestdata</a></li></ul>
|
|
31
|
+
</nav>
|
|
32
|
+
|
|
33
|
+
<div id="main">
|
|
34
|
+
|
|
35
|
+
<h1 class="page-title">genTestdata.mjs</h1>
|
|
36
|
+
|
|
37
|
+
|
|
38
|
+
|
|
39
|
+
|
|
40
|
+
|
|
41
|
+
|
|
42
|
+
|
|
43
|
+
<section>
|
|
44
|
+
<article>
|
|
45
|
+
<pre class="prettyprint source linenums"><code>import path from 'path'
|
|
46
|
+
import keys from 'lodash/keys'
|
|
47
|
+
import each from 'lodash/each'
|
|
48
|
+
import get from 'lodash/get'
|
|
49
|
+
import isestr from 'wsemi/src/isestr.mjs'
|
|
50
|
+
import isfun from 'wsemi/src/isfun.mjs'
|
|
51
|
+
import isbol from 'wsemi/src/isbol.mjs'
|
|
52
|
+
import pmSeries from 'wsemi/src/pmSeries.mjs'
|
|
53
|
+
|
|
54
|
+
|
|
55
|
+
function genModels(ds, opt = {}) {
|
|
56
|
+
|
|
57
|
+
//fdModels
|
|
58
|
+
let fdModels = get(opt, 'fdModels')
|
|
59
|
+
if (!isestr(fdModels)) {
|
|
60
|
+
let fdSrv = path.resolve()
|
|
61
|
+
fdModels = `${fdSrv}/models`
|
|
62
|
+
}
|
|
63
|
+
|
|
64
|
+
//genModelsByTabs
|
|
65
|
+
let genModelsByTabs = get(opt, 'genModelsByTabs')
|
|
66
|
+
if (!isfun(genModelsByTabs)) {
|
|
67
|
+
throw new Error(`opt.genModelsByTabs is not a function, it needs to import from 'w-orm-reladb/src/genModelsByTabs.mjs'`)
|
|
68
|
+
}
|
|
69
|
+
|
|
70
|
+
//tabs
|
|
71
|
+
let tabs = {}
|
|
72
|
+
each(ds, (v, k) => {
|
|
73
|
+
tabs[k] = v.settings
|
|
74
|
+
})
|
|
75
|
+
// console.log('tabs', tabs)
|
|
76
|
+
|
|
77
|
+
//genModelsByTabs
|
|
78
|
+
genModelsByTabs(fdModels, tabs)
|
|
79
|
+
|
|
80
|
+
}
|
|
81
|
+
|
|
82
|
+
|
|
83
|
+
/**
|
|
84
|
+
* 由資料表收集物件ds與資料表控制物件wo產生測試資料,並儲存至資料庫
|
|
85
|
+
*
|
|
86
|
+
* @param {Object} ds 輸入資料表收集物件,ds也就是import由genIndex產生的index.mjs,其內各key代表各資料表,值代表各資料表設定與操作函數例如settings、fnew或ftest等
|
|
87
|
+
* @param {Object} wo 輸入資料表控制物件,各key代表各資料表,值代表各資料表操作函數例如insert、save、del等
|
|
88
|
+
* @param {Object} [opt={}] 輸入設定物件,預設{}
|
|
89
|
+
* @param {Boolean} [opt.useGenModels=false] 輸入是否呼叫genModels,若資料庫與ORM為關聯資料庫時需設定為true,同時還需給予opt.genModelsByTabs。預設為false
|
|
90
|
+
* @param {Function} [opt.genModelsByTabs=null] 輸入可由ds與wo產生models的函數,若資料庫與ORM為關聯資料庫時則需給予,可由程式碼import genModelsByTabs from 'w-orm-reladb/src/genModelsByTabs.mjs'取得genModelsByTabs,並再設定給opt.genModelsByTabs
|
|
91
|
+
* @param {String} [opt.fdModels='./models'] 輸入產生models放置的資料夾位置,預設為工作路徑下的models
|
|
92
|
+
* @return {Promise} 回傳Promise,resolve代表產生成功,reject代表產生失敗
|
|
93
|
+
* @example
|
|
94
|
+
*
|
|
95
|
+
* import genTestdata from 'w-data-collector/src/genTestdata.mjs'
|
|
96
|
+
* import ds from './index.mjs'
|
|
97
|
+
* import { woItems } from '../../server/mOrm.mjs'
|
|
98
|
+
*
|
|
99
|
+
* genTestdata(ds, woItems, {})
|
|
100
|
+
* // => genTestdata done
|
|
101
|
+
*
|
|
102
|
+
*/
|
|
103
|
+
async function genTestdata(ds, wo, opt = {}) {
|
|
104
|
+
|
|
105
|
+
//useGenModels
|
|
106
|
+
let useGenModels = get(opt, 'useGenModels')
|
|
107
|
+
if (!isbol(useGenModels)) {
|
|
108
|
+
useGenModels = false
|
|
109
|
+
}
|
|
110
|
+
|
|
111
|
+
//genModels
|
|
112
|
+
if (useGenModels) {
|
|
113
|
+
genModels(ds, opt)
|
|
114
|
+
console.log('genModels done')
|
|
115
|
+
}
|
|
116
|
+
|
|
117
|
+
//ks
|
|
118
|
+
let ks = keys(ds)
|
|
119
|
+
|
|
120
|
+
//ftest
|
|
121
|
+
await pmSeries(ks, async (k) => {
|
|
122
|
+
|
|
123
|
+
//ftest
|
|
124
|
+
let ftest = get(ds, `${k}.ftest`)
|
|
125
|
+
|
|
126
|
+
//check
|
|
127
|
+
if (isfun(ftest)) {
|
|
128
|
+
await ds[k].ftest(wo)
|
|
129
|
+
}
|
|
130
|
+
|
|
131
|
+
})
|
|
132
|
+
|
|
133
|
+
console.log('genTestdata done', ks)
|
|
134
|
+
}
|
|
135
|
+
|
|
136
|
+
|
|
137
|
+
export default genTestdata
|
|
138
|
+
</code></pre>
|
|
139
|
+
</article>
|
|
140
|
+
</section>
|
|
141
|
+
|
|
142
|
+
|
|
143
|
+
|
|
144
|
+
|
|
145
|
+
|
|
146
|
+
|
|
147
|
+
</div>
|
|
148
|
+
|
|
149
|
+
<br class="clear">
|
|
150
|
+
|
|
151
|
+
<footer>
|
|
152
|
+
Documentation generated by <a href="https://github.com/jsdoc3/jsdoc">JSDoc 3.6.7</a> on Thu Oct 28 2021 15:38:46 GMT+0800 (台北標準時間) using the <a href="https://github.com/clenemt/docdash">docdash</a> theme.
|
|
153
|
+
</footer>
|
|
154
|
+
|
|
155
|
+
<script>prettyPrint();</script>
|
|
156
|
+
<script src="scripts/polyfill.js"></script>
|
|
157
|
+
<script src="scripts/linenumber.js"></script>
|
|
158
|
+
|
|
159
|
+
|
|
160
|
+
|
|
161
|
+
</body>
|
|
162
|
+
</html>
|