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.
Files changed (60) hide show
  1. package/.editorconfig +9 -0
  2. package/.eslintignore +3 -0
  3. package/.eslintrc.js +54 -0
  4. package/.jsdoc +25 -0
  5. package/LICENSE +21 -0
  6. package/README.md +43 -0
  7. package/SECURITY.md +5 -0
  8. package/babel.config.js +14 -0
  9. package/dist/w-data-collector.umd.js +7 -0
  10. package/dist/w-data-collector.umd.js.map +1 -0
  11. package/docs/fonts/Montserrat/Montserrat-Bold.eot +0 -0
  12. package/docs/fonts/Montserrat/Montserrat-Bold.ttf +0 -0
  13. package/docs/fonts/Montserrat/Montserrat-Bold.woff +0 -0
  14. package/docs/fonts/Montserrat/Montserrat-Bold.woff2 +0 -0
  15. package/docs/fonts/Montserrat/Montserrat-Regular.eot +0 -0
  16. package/docs/fonts/Montserrat/Montserrat-Regular.ttf +0 -0
  17. package/docs/fonts/Montserrat/Montserrat-Regular.woff +0 -0
  18. package/docs/fonts/Montserrat/Montserrat-Regular.woff2 +0 -0
  19. package/docs/fonts/Source-Sans-Pro/sourcesanspro-light-webfont.eot +0 -0
  20. package/docs/fonts/Source-Sans-Pro/sourcesanspro-light-webfont.svg +978 -0
  21. package/docs/fonts/Source-Sans-Pro/sourcesanspro-light-webfont.ttf +0 -0
  22. package/docs/fonts/Source-Sans-Pro/sourcesanspro-light-webfont.woff +0 -0
  23. package/docs/fonts/Source-Sans-Pro/sourcesanspro-light-webfont.woff2 +0 -0
  24. package/docs/fonts/Source-Sans-Pro/sourcesanspro-regular-webfont.eot +0 -0
  25. package/docs/fonts/Source-Sans-Pro/sourcesanspro-regular-webfont.svg +1049 -0
  26. package/docs/fonts/Source-Sans-Pro/sourcesanspro-regular-webfont.ttf +0 -0
  27. package/docs/fonts/Source-Sans-Pro/sourcesanspro-regular-webfont.woff +0 -0
  28. package/docs/fonts/Source-Sans-Pro/sourcesanspro-regular-webfont.woff2 +0 -0
  29. package/docs/genIndex.mjs.html +189 -0
  30. package/docs/genTestdata.mjs.html +162 -0
  31. package/docs/global.html +891 -0
  32. package/docs/index.html +81 -0
  33. package/docs/scripts/collapse.js +20 -0
  34. package/docs/scripts/linenumber.js +25 -0
  35. package/docs/scripts/nav.js +12 -0
  36. package/docs/scripts/polyfill.js +4 -0
  37. package/docs/scripts/prettify/Apache-License-2.0.txt +202 -0
  38. package/docs/scripts/prettify/lang-css.js +2 -0
  39. package/docs/scripts/prettify/prettify.js +28 -0
  40. package/docs/scripts/search.js +83 -0
  41. package/docs/styles/jsdoc.css +765 -0
  42. package/docs/styles/prettify.css +79 -0
  43. package/gi.mjs +13 -0
  44. package/gt.mjs +11 -0
  45. package/package.json +32 -0
  46. package/src/WDataCollector.mjs +13 -0
  47. package/src/build.mjs +127 -0
  48. package/src/genIndex.mjs +120 -0
  49. package/src/genTestdata.mjs +93 -0
  50. package/test/genIndex.test.mjs +17 -0
  51. package/test/schema/index.mjs +20 -0
  52. package/test/schema/index.mjs.txt +20 -0
  53. package/test/schema/tables/holeLabTabs.mjs +130 -0
  54. package/test/schema/tables/holeLabTabsItems.mjs +318 -0
  55. package/test/schema/tables/users.mjs +102 -0
  56. package/toolg/addVersion.mjs +4 -0
  57. package/toolg/cleanFolder.mjs +4 -0
  58. package/toolg/gDistRollup.mjs +35 -0
  59. package/toolg/gDocsExams.mjs +51 -0
  60. package/toolg/modifyReadme.mjs +4 -0
@@ -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>