w-orm-reladb 1.1.11 → 1.1.13

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.
@@ -29,7 +29,7 @@
29
29
  <nav >
30
30
 
31
31
 
32
- <h2><a href="index.html">Home</a></h2><h3>Classes</h3><ul><li><a href="WOrmReladb.html">WOrmReladb</a><ul class='methods'><li data-type='method'><a href="WOrmReladb.html#.closeSequelize">closeSequelize</a></li><li data-type='method'><a href="WOrmReladb.html#.createStorage">createStorage</a></li><li data-type='method'><a href="WOrmReladb.html#.del">del</a></li><li data-type='method'><a href="WOrmReladb.html#.delAll">delAll</a></li><li data-type='method'><a href="WOrmReladb.html#.genModelsByDB">genModelsByDB</a></li><li data-type='method'><a href="WOrmReladb.html#.genModelsByTabs">genModelsByTabs</a></li><li data-type='method'><a href="WOrmReladb.html#.genTransaction">genTransaction</a></li><li data-type='method'><a href="WOrmReladb.html#.initSequelize">initSequelize</a></li><li data-type='method'><a href="WOrmReladb.html#.insert">insert</a></li><li data-type='method'><a href="WOrmReladb.html#.insertBulk">insertBulk</a></li><li data-type='method'><a href="WOrmReladb.html#.save">save</a></li><li data-type='method'><a href="WOrmReladb.html#.select">select</a></li><li data-type='method'><a href="WOrmReladb.html#.selectByPk">selectByPk</a></li></ul></li></ul><h3>Global</h3><ul><li><a href="global.html#cvFind">cvFind</a></li><li><a href="global.html#genDateChecker">genDateChecker</a></li><li><a href="global.html#getColKind">getColKind</a></li><li><a href="global.html#getColScale">getColScale</a></li><li><a href="global.html#importModels">importModels</a></li><li><a href="global.html#inDateRange">inDateRange</a></li><li><a href="global.html#isKindOk">isKindOk</a></li><li><a href="global.html#normPk">normPk</a></li></ul>
32
+ <h2><a href="index.html">Home</a></h2><h3>Classes</h3><ul><li><a href="WOrmReladb.html">WOrmReladb</a><ul class='methods'><li data-type='method'><a href="WOrmReladb.html#.closeSequelize">closeSequelize</a></li><li data-type='method'><a href="WOrmReladb.html#.createStorage">createStorage</a></li><li data-type='method'><a href="WOrmReladb.html#.del">del</a></li><li data-type='method'><a href="WOrmReladb.html#.delAll">delAll</a></li><li data-type='method'><a href="WOrmReladb.html#.genModelsByDB">genModelsByDB</a></li><li data-type='method'><a href="WOrmReladb.html#.genModelsByTabs">genModelsByTabs</a></li><li data-type='method'><a href="WOrmReladb.html#.genTransaction">genTransaction</a></li><li data-type='method'><a href="WOrmReladb.html#.initSequelize">initSequelize</a></li><li data-type='method'><a href="WOrmReladb.html#.insert">insert</a></li><li data-type='method'><a href="WOrmReladb.html#.insertBulk">insertBulk</a></li><li data-type='method'><a href="WOrmReladb.html#.save">save</a></li><li data-type='method'><a href="WOrmReladb.html#.select">select</a></li><li data-type='method'><a href="WOrmReladb.html#.selectByPk">selectByPk</a></li></ul></li></ul><h3>Global</h3><ul><li><a href="global.html#chkPkWf">chkPkWf</a></li><li><a href="global.html#chkWf">chkWf</a></li><li><a href="global.html#cvFind">cvFind</a></li><li><a href="global.html#genDateChecker">genDateChecker</a></li><li><a href="global.html#getColKind">getColKind</a></li><li><a href="global.html#getColScale">getColScale</a></li><li><a href="global.html#importModels">importModels</a></li><li><a href="global.html#inDateRange">inDateRange</a></li><li><a href="global.html#isKindOk">isKindOk</a></li><li><a href="global.html#normPk">normPk</a></li></ul>
33
33
 
34
34
  </nav>
35
35
 
@@ -46,7 +46,10 @@
46
46
  <section>
47
47
  <article>
48
48
  <pre class="prettyprint source linenums"><code>import Sequelize from 'sequelize'
49
+ import get from 'lodash-es/get.js'
49
50
  import cvOrmFind from 'wsemi/src/cvOrmFind.mjs'
51
+ import chkOrmStr from 'wsemi/src/chkOrmStr.mjs'
52
+ import chkOrmData from 'wsemi/src/chkOrmData.mjs'
50
53
 
51
54
 
52
55
  //查詢條件(find)之轉譯, 供select與delAll共用, 令同一find於兩函數由同一SQL謂詞決定命中
@@ -60,6 +63,7 @@ import cvOrmFind from 'wsemi/src/cvOrmFind.mjs'
60
63
  //不得供破壞性之delAll使用, 1.1.7起改自寫白名單; 第33項批1起形狀層改由cvOrmFind單一擁有, 本模組刪除Symbol/Op全集、$not $nor $regex $options $exists、
61
64
  //RegExp值、陣列值即$in、非物件視為{}等形狀層(破壞性變更見CLAUDE_rulebook.md與README)
62
65
  //主鍵值之正規化(normPk)亦屬本模組, 供主鍵函數與主鍵欄條件共用, 規則見R8
66
+ //寫入側之字串良構檢核(chkPkWf、chkWf, 規則見R13)亦屬本模組: 字串之判定單一出處為wsemi之chkOrmStr、chkOrmData, 本模組只負責接線與訊息組裝
63
67
 
64
68
 
65
69
  //Op
@@ -607,6 +611,8 @@ function unwrap(v) {
607
611
  * DECIMAL主鍵欄之值小數位多於scale者寫入時會被四捨五入而改變鍵(mssql之DECIMAL(10,2)存1.254為1.25, insert回報已存在而selectByPk(1.254)回null), 視為型別不符
608
612
  * 註: 其他型別之主鍵欄不檢型別, 收非空字串與有限數值
609
613
  * 註: NaN、±Infinity、空字串、布林、物件、陣列、Date、BigInt、null、undefined為無效
614
+ * 註: 含孤立代理碼元或NUL之字串為無效(第66項, R13; 與條件側同標準): UTF-8存放之資料庫會把孤立代理碼元改寫為U+FFFD而使不同主鍵寫成同一鍵,
615
+ * 回傳形狀不變({kind:'invalid'}), 故沿用各呼叫端對無效主鍵之既有處置; 需區辨[未給]與[不合格字串]者(autoGenPk不得以自動產生之主鍵取代呼叫端所給之不合格字串)用chkPkWf
610
616
  *
611
617
  * @param {*} v 輸入主鍵值
612
618
  * @param {String} kind 輸入主鍵欄之型別分類, 取自getColKind
@@ -623,6 +629,9 @@ function normPk(v, kind, scale = null) {
623
629
  if (v === '') {
624
630
  return { kind: 'invalid' }
625
631
  }
632
+ if (chkOrmStr(v) !== null) {
633
+ return { kind: 'invalid' }
634
+ }
626
635
  if (kind === 'int') {
627
636
  if (!reIntStd.test(v)) {
628
637
  return { kind: 'mismatch' }
@@ -662,6 +671,70 @@ function normPk(v, kind, scale = null) {
662
671
  return { kind: 'invalid' }
663
672
  }
664
673
 
674
+
675
+ /**
676
+ * 檢核主鍵值之字串良構: 字串(含new String之原始值)不得含孤立代理碼元或NUL(第66項, R13)
677
+ *
678
+ * 註: 判定單一出處為wsemi之chkOrmStr(預設連NUL一併檢查, 主鍵與條件側同標準); 非字串回傳null(其有效性由normPk判定)
679
+ * 註: 先依normPk同一規則拆包裝物件(new String), 令其與原始字串同處置
680
+ *
681
+ * @param {*} v 輸入主鍵值
682
+ * @returns {String|null} 回傳null(非字串或合格),或固定原因字串'string contains lone surrogate'、'string contains NUL'
683
+ */
684
+ function chkPkWf(v) {
685
+ v = unwrap(v)
686
+ if (typeof v !== 'string') {
687
+ return null
688
+ }
689
+ return chkOrmStr(v)
690
+ }
691
+
692
+
693
+ /**
694
+ * 逐筆檢核寫入數據之字串良構(第66項, R13), 回傳與輸入等長之訊息陣列
695
+ *
696
+ * 註: 輸入須為呼叫端數據之cloneDeep複本(檢查之值即使用之值): 本函數對各筆先檢主鍵再(withData為true時)檢資料, 同筆內主鍵先於資料,
697
+ * 資料由wsemi之chkOrmData走訪(鍵名先於值, 含巢狀物件、陣列元素、Map/Set等實存內容; 不論欄位是否在model內, 檢核先於欄位過濾)
698
+ * 註: 訊息為固定詞彙且不回顯值: invalid id: &lt;原因> at [data[&lt;索引>].&lt;主鍵欄>]、invalid data: &lt;原因> at [&lt;路徑>]; 合格者為null
699
+ * 註: 主鍵值為包裝物件(new String、new Number)且合格者, 將原始值(字串或數值)寫回複本, 令其後之正規化讀到的即本函數所檢查者(包裝物件之valueOf只求值一次)
700
+ * 註: 資料之NUL不檢查(值之NUL不拒, 僅主鍵拒NUL)
701
+ *
702
+ * @param {Array} data 輸入數據陣列(已cloneDeep)
703
+ * @param {String} pk 輸入主鍵欄位名
704
+ * @param {Boolean} withData 輸入是否一併檢核資料(false只檢主鍵, 供del)
705
+ * @returns {Array} 回傳訊息陣列,合格者為null
706
+ */
707
+ function chkWf(data, pk, withData) {
708
+ let msgs = []
709
+ for (let k = 0; k &lt; data.length; k++) {
710
+ let v = data[k]
711
+ let msg = null
712
+
713
+ //pk, 主鍵先於資料; 包裝物件之valueOf只讀取一次(u為原始值), 合格者寫回複本
714
+ let pv = get(v, pk)
715
+ let u = unwrap(pv)
716
+ let why = chkPkWf(u)
717
+ if (why !== null) {
718
+ msg = `invalid id: ${why} at [data[${k}].${pk}]`
719
+ }
720
+ else if (u !== pv &amp;&amp; (typeof u === 'string' || typeof u === 'number') &amp;&amp; v !== null &amp;&amp; typeof v === 'object') {
721
+ v[pk] = u
722
+ }
723
+
724
+ //data
725
+ if (msg === null &amp;&amp; withData) {
726
+ let r = chkOrmData(v, { root: `data[${k}]` })
727
+ if (r !== null) {
728
+ msg = `invalid data: ${r.reason} at [${r.path}]`
729
+ }
730
+ }
731
+
732
+ msgs.push(msg)
733
+ }
734
+ return msgs
735
+ }
736
+
737
+
665
738
  /**
666
739
  * 檢核純量值: 字串、有限數值、布林、有效Date, 以及null(是否允許null已由cvOrmFind依運算子判定); 並須符合欄位型別分類
667
740
  * 註: 物件、陣列等不得交sequelize之型別stringify, 否則FLOAT成'NaN'、INTEGER成'[object Object]'、DATE成本地今日00:00而誤刪;
@@ -920,7 +993,7 @@ function cvFind(find, ctx) {
920
993
  }
921
994
 
922
995
 
923
- export { getColKind, getColScale, normPk, chkFindShape, inDateRange, genDateChecker }
996
+ export { getColKind, getColScale, normPk, chkPkWf, chkWf, chkFindShape, inDateRange, genDateChecker }
924
997
  export default cvFind
925
998
  </code></pre>
926
999
  </article>
@@ -936,7 +1009,7 @@ export default cvFind
936
1009
  <br class="clear">
937
1010
 
938
1011
  <footer>
939
- Documentation generated by <a href="https://github.com/jsdoc3/jsdoc">JSDoc 4.0.5</a> on Mon Oct 19 2026 23:23:31 GMT+0800 (台北標準時間) using the <a href="https://github.com/clenemt/docdash">docdash</a> theme.
1012
+ Documentation generated by <a href="https://github.com/jsdoc3/jsdoc">JSDoc 4.0.5</a> on Wed Oct 21 2026 00:55:02 GMT+0800 (台北標準時間) using the <a href="https://github.com/clenemt/docdash">docdash</a> theme.
940
1013
  </footer>
941
1014
 
942
1015
  <script>prettyPrint();</script>
package/docs/global.html CHANGED
@@ -29,7 +29,7 @@
29
29
  <nav >
30
30
 
31
31
 
32
- <h2><a href="index.html">Home</a></h2><h3>Classes</h3><ul><li><a href="WOrmReladb.html">WOrmReladb</a><ul class='methods'><li data-type='method'><a href="WOrmReladb.html#.closeSequelize">closeSequelize</a></li><li data-type='method'><a href="WOrmReladb.html#.createStorage">createStorage</a></li><li data-type='method'><a href="WOrmReladb.html#.del">del</a></li><li data-type='method'><a href="WOrmReladb.html#.delAll">delAll</a></li><li data-type='method'><a href="WOrmReladb.html#.genModelsByDB">genModelsByDB</a></li><li data-type='method'><a href="WOrmReladb.html#.genModelsByTabs">genModelsByTabs</a></li><li data-type='method'><a href="WOrmReladb.html#.genTransaction">genTransaction</a></li><li data-type='method'><a href="WOrmReladb.html#.initSequelize">initSequelize</a></li><li data-type='method'><a href="WOrmReladb.html#.insert">insert</a></li><li data-type='method'><a href="WOrmReladb.html#.insertBulk">insertBulk</a></li><li data-type='method'><a href="WOrmReladb.html#.save">save</a></li><li data-type='method'><a href="WOrmReladb.html#.select">select</a></li><li data-type='method'><a href="WOrmReladb.html#.selectByPk">selectByPk</a></li></ul></li></ul><h3>Global</h3><ul><li><a href="global.html#cvFind">cvFind</a></li><li><a href="global.html#genDateChecker">genDateChecker</a></li><li><a href="global.html#getColKind">getColKind</a></li><li><a href="global.html#getColScale">getColScale</a></li><li><a href="global.html#importModels">importModels</a></li><li><a href="global.html#inDateRange">inDateRange</a></li><li><a href="global.html#isKindOk">isKindOk</a></li><li><a href="global.html#normPk">normPk</a></li></ul>
32
+ <h2><a href="index.html">Home</a></h2><h3>Classes</h3><ul><li><a href="WOrmReladb.html">WOrmReladb</a><ul class='methods'><li data-type='method'><a href="WOrmReladb.html#.closeSequelize">closeSequelize</a></li><li data-type='method'><a href="WOrmReladb.html#.createStorage">createStorage</a></li><li data-type='method'><a href="WOrmReladb.html#.del">del</a></li><li data-type='method'><a href="WOrmReladb.html#.delAll">delAll</a></li><li data-type='method'><a href="WOrmReladb.html#.genModelsByDB">genModelsByDB</a></li><li data-type='method'><a href="WOrmReladb.html#.genModelsByTabs">genModelsByTabs</a></li><li data-type='method'><a href="WOrmReladb.html#.genTransaction">genTransaction</a></li><li data-type='method'><a href="WOrmReladb.html#.initSequelize">initSequelize</a></li><li data-type='method'><a href="WOrmReladb.html#.insert">insert</a></li><li data-type='method'><a href="WOrmReladb.html#.insertBulk">insertBulk</a></li><li data-type='method'><a href="WOrmReladb.html#.save">save</a></li><li data-type='method'><a href="WOrmReladb.html#.select">select</a></li><li data-type='method'><a href="WOrmReladb.html#.selectByPk">selectByPk</a></li></ul></li></ul><h3>Global</h3><ul><li><a href="global.html#chkPkWf">chkPkWf</a></li><li><a href="global.html#chkWf">chkWf</a></li><li><a href="global.html#cvFind">cvFind</a></li><li><a href="global.html#genDateChecker">genDateChecker</a></li><li><a href="global.html#getColKind">getColKind</a></li><li><a href="global.html#getColScale">getColScale</a></li><li><a href="global.html#importModels">importModels</a></li><li><a href="global.html#inDateRange">inDateRange</a></li><li><a href="global.html#isKindOk">isKindOk</a></li><li><a href="global.html#normPk">normPk</a></li></ul>
33
33
 
34
34
  </nav>
35
35
 
@@ -130,6 +130,380 @@
130
130
 
131
131
 
132
132
 
133
+ <h4 class="name" id="chkPkWf"><span class="type-signature"></span>chkPkWf<span class="signature">(v)</span><span class="type-signature"> &rarr; {String|null}</span></h4>
134
+
135
+
136
+
137
+
138
+
139
+
140
+ <dl class="details">
141
+
142
+ <dt class="tag-description">Description:</dt>
143
+ <dd class="tag-description"><ul class="dummy"><li><p>檢核主鍵值之字串良構: 字串(含new String之原始值)不得含孤立代理碼元或NUL(第66項, R13)</p>
144
+ <p>註: 判定單一出處為wsemi之chkOrmStr(預設連NUL一併檢查, 主鍵與條件側同標準); 非字串回傳null(其有效性由normPk判定)
145
+ 註: 先依normPk同一規則拆包裝物件(new String), 令其與原始字串同處置</p></li></ul></dd>
146
+
147
+
148
+
149
+ <dt class="tag-source">Source:</dt>
150
+ <dd class="tag-source"><ul class="dummy"><li>
151
+ <a href="cvFind.mjs.html">cvFind.mjs</a>, <a href="cvFind.mjs.html#line637">line 637</a>
152
+ </li></ul></dd>
153
+
154
+
155
+
156
+
157
+
158
+
159
+
160
+
161
+
162
+
163
+
164
+
165
+
166
+
167
+
168
+
169
+
170
+
171
+
172
+
173
+
174
+
175
+
176
+
177
+
178
+
179
+
180
+
181
+
182
+
183
+
184
+ </dl>
185
+
186
+
187
+
188
+
189
+
190
+
191
+
192
+
193
+
194
+
195
+
196
+
197
+
198
+ <h5 class="h5-parameters">Parameters:</h5>
199
+
200
+
201
+ <table class="params">
202
+ <thead>
203
+ <tr>
204
+
205
+ <th>Name</th>
206
+
207
+
208
+ <th>Type</th>
209
+
210
+
211
+
212
+
213
+
214
+ <th class="last">Description</th>
215
+ </tr>
216
+ </thead>
217
+
218
+ <tbody>
219
+
220
+
221
+ <tr>
222
+
223
+ <td class="name"><code>v</code></td>
224
+
225
+
226
+ <td class="type">
227
+
228
+
229
+ <span class="param-type">*</span>
230
+
231
+
232
+
233
+
234
+ </td>
235
+
236
+
237
+
238
+
239
+
240
+ <td class="description last"><p>輸入主鍵值</p></td>
241
+ </tr>
242
+
243
+
244
+ </tbody>
245
+ </table>
246
+
247
+
248
+
249
+
250
+
251
+
252
+
253
+
254
+
255
+
256
+
257
+
258
+
259
+
260
+
261
+
262
+ <h5 class="h5-returns">Returns:</h5>
263
+
264
+
265
+ <div class="param-desc">
266
+ <p>回傳null(非字串或合格),或固定原因字串'string contains lone surrogate'、'string contains NUL'</p>
267
+ </div>
268
+
269
+
270
+
271
+ <dl class="param-type">
272
+ <dt>
273
+ Type
274
+ </dt>
275
+ <dd>
276
+
277
+ <span class="param-type">String</span>
278
+ |
279
+
280
+ <span class="param-type">null</span>
281
+
282
+
283
+
284
+ </dd>
285
+ </dl>
286
+
287
+
288
+
289
+
290
+
291
+
292
+
293
+
294
+
295
+
296
+ <h4 class="name" id="chkWf"><span class="type-signature"></span>chkWf<span class="signature">(data, pk, withData)</span><span class="type-signature"> &rarr; {Array}</span></h4>
297
+
298
+
299
+
300
+
301
+
302
+
303
+ <dl class="details">
304
+
305
+ <dt class="tag-description">Description:</dt>
306
+ <dd class="tag-description"><ul class="dummy"><li><p>逐筆檢核寫入數據之字串良構(第66項, R13), 回傳與輸入等長之訊息陣列</p>
307
+ <p>註: 輸入須為呼叫端數據之cloneDeep複本(檢查之值即使用之值): 本函數對各筆先檢主鍵再(withData為true時)檢資料, 同筆內主鍵先於資料,
308
+ 資料由wsemi之chkOrmData走訪(鍵名先於值, 含巢狀物件、陣列元素、Map/Set等實存內容; 不論欄位是否在model內, 檢核先於欄位過濾)
309
+ 註: 訊息為固定詞彙且不回顯值: invalid id: &lt;原因&gt; at [data[&lt;索引&gt;].&lt;主鍵欄&gt;]、invalid data: &lt;原因&gt; at [&lt;路徑&gt;]; 合格者為null
310
+ 註: 主鍵值為包裝物件(new String、new Number)且合格者, 將原始值(字串或數值)寫回複本, 令其後之正規化讀到的即本函數所檢查者(包裝物件之valueOf只求值一次)
311
+ 註: 資料之NUL不檢查(值之NUL不拒, 僅主鍵拒NUL)</p></li></ul></dd>
312
+
313
+
314
+
315
+ <dt class="tag-source">Source:</dt>
316
+ <dd class="tag-source"><ul class="dummy"><li>
317
+ <a href="cvFind.mjs.html">cvFind.mjs</a>, <a href="cvFind.mjs.html#line660">line 660</a>
318
+ </li></ul></dd>
319
+
320
+
321
+
322
+
323
+
324
+
325
+
326
+
327
+
328
+
329
+
330
+
331
+
332
+
333
+
334
+
335
+
336
+
337
+
338
+
339
+
340
+
341
+
342
+
343
+
344
+
345
+
346
+
347
+
348
+
349
+
350
+ </dl>
351
+
352
+
353
+
354
+
355
+
356
+
357
+
358
+
359
+
360
+
361
+
362
+
363
+
364
+ <h5 class="h5-parameters">Parameters:</h5>
365
+
366
+
367
+ <table class="params">
368
+ <thead>
369
+ <tr>
370
+
371
+ <th>Name</th>
372
+
373
+
374
+ <th>Type</th>
375
+
376
+
377
+
378
+
379
+
380
+ <th class="last">Description</th>
381
+ </tr>
382
+ </thead>
383
+
384
+ <tbody>
385
+
386
+
387
+ <tr>
388
+
389
+ <td class="name"><code>data</code></td>
390
+
391
+
392
+ <td class="type">
393
+
394
+
395
+ <span class="param-type">Array</span>
396
+
397
+
398
+
399
+
400
+ </td>
401
+
402
+
403
+
404
+
405
+
406
+ <td class="description last"><p>輸入數據陣列(已cloneDeep)</p></td>
407
+ </tr>
408
+
409
+
410
+
411
+ <tr>
412
+
413
+ <td class="name"><code>pk</code></td>
414
+
415
+
416
+ <td class="type">
417
+
418
+
419
+ <span class="param-type">String</span>
420
+
421
+
422
+
423
+
424
+ </td>
425
+
426
+
427
+
428
+
429
+
430
+ <td class="description last"><p>輸入主鍵欄位名</p></td>
431
+ </tr>
432
+
433
+
434
+
435
+ <tr>
436
+
437
+ <td class="name"><code>withData</code></td>
438
+
439
+
440
+ <td class="type">
441
+
442
+
443
+ <span class="param-type">Boolean</span>
444
+
445
+
446
+
447
+
448
+ </td>
449
+
450
+
451
+
452
+
453
+
454
+ <td class="description last"><p>輸入是否一併檢核資料(false只檢主鍵, 供del)</p></td>
455
+ </tr>
456
+
457
+
458
+ </tbody>
459
+ </table>
460
+
461
+
462
+
463
+
464
+
465
+
466
+
467
+
468
+
469
+
470
+
471
+
472
+
473
+
474
+
475
+
476
+ <h5 class="h5-returns">Returns:</h5>
477
+
478
+
479
+ <div class="param-desc">
480
+ <p>回傳訊息陣列,合格者為null</p>
481
+ </div>
482
+
483
+
484
+
485
+ <dl class="param-type">
486
+ <dt>
487
+ Type
488
+ </dt>
489
+ <dd>
490
+
491
+ <span class="param-type">Array</span>
492
+
493
+
494
+
495
+ </dd>
496
+ </dl>
497
+
498
+
499
+
500
+
501
+
502
+
503
+
504
+
505
+
506
+
133
507
  <h4 class="name" id="cvFind"><span class="type-signature"></span>cvFind<span class="signature">(find, ctx)</span><span class="type-signature"> &rarr; {Object}</span></h4>
134
508
 
135
509
 
@@ -150,7 +524,7 @@ $eq $ne $gt $gte $lt $lte(純量)、$in $nin(純量陣列)、$and $or(條件物
150
524
 
151
525
  <dt class="tag-source">Source:</dt>
152
526
  <dd class="tag-source"><ul class="dummy"><li>
153
- <a href="cvFind.mjs.html">cvFind.mjs</a>, <a href="cvFind.mjs.html#line851">line 851</a>
527
+ <a href="cvFind.mjs.html">cvFind.mjs</a>, <a href="cvFind.mjs.html#line924">line 924</a>
154
528
  </li></ul></dd>
155
529
 
156
530
 
@@ -535,7 +909,7 @@ $eq $ne $gt $gte $lt $lte(純量)、$in $nin(純量陣列)、$and $or(條件物
535
909
 
536
910
  <dt class="tag-source">Source:</dt>
537
911
  <dd class="tag-source"><ul class="dummy"><li>
538
- <a href="cvFind.mjs.html">cvFind.mjs</a>, <a href="cvFind.mjs.html#line415">line 415</a>
912
+ <a href="cvFind.mjs.html">cvFind.mjs</a>, <a href="cvFind.mjs.html#line419">line 419</a>
539
913
  </li></ul></dd>
540
914
 
541
915
 
@@ -693,7 +1067,7 @@ $eq $ne $gt $gte $lt $lte(純量)、$in $nin(純量陣列)、$and $or(條件物
693
1067
 
694
1068
  <dt class="tag-source">Source:</dt>
695
1069
  <dd class="tag-source"><ul class="dummy"><li>
696
- <a href="cvFind.mjs.html">cvFind.mjs</a>, <a href="cvFind.mjs.html#line159">line 159</a>
1070
+ <a href="cvFind.mjs.html">cvFind.mjs</a>, <a href="cvFind.mjs.html#line163">line 163</a>
697
1071
  </li></ul></dd>
698
1072
 
699
1073
 
@@ -875,7 +1249,7 @@ $eq $ne $gt $gte $lt $lte(純量)、$in $nin(純量陣列)、$and $or(條件物
875
1249
 
876
1250
  <dt class="tag-source">Source:</dt>
877
1251
  <dd class="tag-source"><ul class="dummy"><li>
878
- <a href="cvFind.mjs.html">cvFind.mjs</a>, <a href="cvFind.mjs.html#line454">line 454</a>
1252
+ <a href="cvFind.mjs.html">cvFind.mjs</a>, <a href="cvFind.mjs.html#line458">line 458</a>
879
1253
  </li></ul></dd>
880
1254
 
881
1255
 
@@ -1457,7 +1831,7 @@ $eq $ne $gt $gte $lt $lte(純量)、$in $nin(純量陣列)、$and $or(條件物
1457
1831
 
1458
1832
  <dt class="tag-source">Source:</dt>
1459
1833
  <dd class="tag-source"><ul class="dummy"><li>
1460
- <a href="cvFind.mjs.html">cvFind.mjs</a>, <a href="cvFind.mjs.html#line341">line 341</a>
1834
+ <a href="cvFind.mjs.html">cvFind.mjs</a>, <a href="cvFind.mjs.html#line345">line 345</a>
1461
1835
  </li></ul></dd>
1462
1836
 
1463
1837
 
@@ -1618,7 +1992,7 @@ $eq $ne $gt $gte $lt $lte(純量)、$in $nin(純量陣列)、$and $or(條件物
1618
1992
 
1619
1993
  <dt class="tag-source">Source:</dt>
1620
1994
  <dd class="tag-source"><ul class="dummy"><li>
1621
- <a href="cvFind.mjs.html">cvFind.mjs</a>, <a href="cvFind.mjs.html#line476">line 476</a>
1995
+ <a href="cvFind.mjs.html">cvFind.mjs</a>, <a href="cvFind.mjs.html#line480">line 480</a>
1622
1996
  </li></ul></dd>
1623
1997
 
1624
1998
 
@@ -1803,13 +2177,15 @@ $eq $ne $gt $gte $lt $lte(純量)、$in $nin(純量陣列)、$and $or(條件物
1803
2177
  註: 其他數值類主鍵欄收有限數值與標準數字字串(轉為數值), 其他字串視為型別不符;
1804
2178
  DECIMAL主鍵欄之值小數位多於scale者寫入時會被四捨五入而改變鍵(mssql之DECIMAL(10,2)存1.254為1.25, insert回報已存在而selectByPk(1.254)回null), 視為型別不符
1805
2179
  註: 其他型別之主鍵欄不檢型別, 收非空字串與有限數值
1806
- 註: NaN、±Infinity、空字串、布林、物件、陣列、Date、BigInt、null、undefined為無效</p></li></ul></dd>
2180
+ 註: NaN、±Infinity、空字串、布林、物件、陣列、Date、BigInt、null、undefined為無效
2181
+ 註: 含孤立代理碼元或NUL之字串為無效(第66項, R13; 與條件側同標準): UTF-8存放之資料庫會把孤立代理碼元改寫為U+FFFD而使不同主鍵寫成同一鍵,
2182
+ 回傳形狀不變({kind:'invalid'}), 故沿用各呼叫端對無效主鍵之既有處置; 需區辨[未給]與[不合格字串]者(autoGenPk不得以自動產生之主鍵取代呼叫端所給之不合格字串)用chkPkWf</p></li></ul></dd>
1807
2183
 
1808
2184
 
1809
2185
 
1810
2186
  <dt class="tag-source">Source:</dt>
1811
2187
  <dd class="tag-source"><ul class="dummy"><li>
1812
- <a href="cvFind.mjs.html">cvFind.mjs</a>, <a href="cvFind.mjs.html#line569">line 569</a>
2188
+ <a href="cvFind.mjs.html">cvFind.mjs</a>, <a href="cvFind.mjs.html#line575">line 575</a>
1813
2189
  </li></ul></dd>
1814
2190
 
1815
2191
 
@@ -2061,7 +2437,7 @@ DECIMAL主鍵欄之值小數位多於scale者寫入時會被四捨五入而改
2061
2437
  <br class="clear">
2062
2438
 
2063
2439
  <footer>
2064
- Documentation generated by <a href="https://github.com/jsdoc3/jsdoc">JSDoc 4.0.5</a> on Mon Oct 19 2026 23:23:31 GMT+0800 (台北標準時間) using the <a href="https://github.com/clenemt/docdash">docdash</a> theme.
2440
+ Documentation generated by <a href="https://github.com/jsdoc3/jsdoc">JSDoc 4.0.5</a> on Wed Oct 21 2026 00:55:02 GMT+0800 (台北標準時間) using the <a href="https://github.com/clenemt/docdash">docdash</a> theme.
2065
2441
  </footer>
2066
2442
 
2067
2443
  <script>prettyPrint();</script>
@@ -29,7 +29,7 @@
29
29
  <nav >
30
30
 
31
31
 
32
- <h2><a href="index.html">Home</a></h2><h3>Classes</h3><ul><li><a href="WOrmReladb.html">WOrmReladb</a><ul class='methods'><li data-type='method'><a href="WOrmReladb.html#.closeSequelize">closeSequelize</a></li><li data-type='method'><a href="WOrmReladb.html#.createStorage">createStorage</a></li><li data-type='method'><a href="WOrmReladb.html#.del">del</a></li><li data-type='method'><a href="WOrmReladb.html#.delAll">delAll</a></li><li data-type='method'><a href="WOrmReladb.html#.genModelsByDB">genModelsByDB</a></li><li data-type='method'><a href="WOrmReladb.html#.genModelsByTabs">genModelsByTabs</a></li><li data-type='method'><a href="WOrmReladb.html#.genTransaction">genTransaction</a></li><li data-type='method'><a href="WOrmReladb.html#.initSequelize">initSequelize</a></li><li data-type='method'><a href="WOrmReladb.html#.insert">insert</a></li><li data-type='method'><a href="WOrmReladb.html#.insertBulk">insertBulk</a></li><li data-type='method'><a href="WOrmReladb.html#.save">save</a></li><li data-type='method'><a href="WOrmReladb.html#.select">select</a></li><li data-type='method'><a href="WOrmReladb.html#.selectByPk">selectByPk</a></li></ul></li></ul><h3>Global</h3><ul><li><a href="global.html#cvFind">cvFind</a></li><li><a href="global.html#genDateChecker">genDateChecker</a></li><li><a href="global.html#getColKind">getColKind</a></li><li><a href="global.html#getColScale">getColScale</a></li><li><a href="global.html#importModels">importModels</a></li><li><a href="global.html#inDateRange">inDateRange</a></li><li><a href="global.html#isKindOk">isKindOk</a></li><li><a href="global.html#normPk">normPk</a></li></ul>
32
+ <h2><a href="index.html">Home</a></h2><h3>Classes</h3><ul><li><a href="WOrmReladb.html">WOrmReladb</a><ul class='methods'><li data-type='method'><a href="WOrmReladb.html#.closeSequelize">closeSequelize</a></li><li data-type='method'><a href="WOrmReladb.html#.createStorage">createStorage</a></li><li data-type='method'><a href="WOrmReladb.html#.del">del</a></li><li data-type='method'><a href="WOrmReladb.html#.delAll">delAll</a></li><li data-type='method'><a href="WOrmReladb.html#.genModelsByDB">genModelsByDB</a></li><li data-type='method'><a href="WOrmReladb.html#.genModelsByTabs">genModelsByTabs</a></li><li data-type='method'><a href="WOrmReladb.html#.genTransaction">genTransaction</a></li><li data-type='method'><a href="WOrmReladb.html#.initSequelize">initSequelize</a></li><li data-type='method'><a href="WOrmReladb.html#.insert">insert</a></li><li data-type='method'><a href="WOrmReladb.html#.insertBulk">insertBulk</a></li><li data-type='method'><a href="WOrmReladb.html#.save">save</a></li><li data-type='method'><a href="WOrmReladb.html#.select">select</a></li><li data-type='method'><a href="WOrmReladb.html#.selectByPk">selectByPk</a></li></ul></li></ul><h3>Global</h3><ul><li><a href="global.html#chkPkWf">chkPkWf</a></li><li><a href="global.html#chkWf">chkWf</a></li><li><a href="global.html#cvFind">cvFind</a></li><li><a href="global.html#genDateChecker">genDateChecker</a></li><li><a href="global.html#getColKind">getColKind</a></li><li><a href="global.html#getColScale">getColScale</a></li><li><a href="global.html#importModels">importModels</a></li><li><a href="global.html#inDateRange">inDateRange</a></li><li><a href="global.html#isKindOk">isKindOk</a></li><li><a href="global.html#normPk">normPk</a></li></ul>
33
33
 
34
34
  </nav>
35
35
 
@@ -242,7 +242,7 @@ export default importModels
242
242
  <br class="clear">
243
243
 
244
244
  <footer>
245
- Documentation generated by <a href="https://github.com/jsdoc3/jsdoc">JSDoc 4.0.5</a> on Mon Oct 19 2026 23:23:31 GMT+0800 (台北標準時間) using the <a href="https://github.com/clenemt/docdash">docdash</a> theme.
245
+ Documentation generated by <a href="https://github.com/jsdoc3/jsdoc">JSDoc 4.0.5</a> on Wed Oct 21 2026 00:55:02 GMT+0800 (台北標準時間) using the <a href="https://github.com/clenemt/docdash">docdash</a> theme.
246
246
  </footer>
247
247
 
248
248
  <script>prettyPrint();</script>
package/docs/index.html CHANGED
@@ -29,7 +29,7 @@
29
29
  <nav >
30
30
 
31
31
 
32
- <h2><a href="index.html">Home</a></h2><h3>Classes</h3><ul><li><a href="WOrmReladb.html">WOrmReladb</a><ul class='methods'><li data-type='method'><a href="WOrmReladb.html#.closeSequelize">closeSequelize</a></li><li data-type='method'><a href="WOrmReladb.html#.createStorage">createStorage</a></li><li data-type='method'><a href="WOrmReladb.html#.del">del</a></li><li data-type='method'><a href="WOrmReladb.html#.delAll">delAll</a></li><li data-type='method'><a href="WOrmReladb.html#.genModelsByDB">genModelsByDB</a></li><li data-type='method'><a href="WOrmReladb.html#.genModelsByTabs">genModelsByTabs</a></li><li data-type='method'><a href="WOrmReladb.html#.genTransaction">genTransaction</a></li><li data-type='method'><a href="WOrmReladb.html#.initSequelize">initSequelize</a></li><li data-type='method'><a href="WOrmReladb.html#.insert">insert</a></li><li data-type='method'><a href="WOrmReladb.html#.insertBulk">insertBulk</a></li><li data-type='method'><a href="WOrmReladb.html#.save">save</a></li><li data-type='method'><a href="WOrmReladb.html#.select">select</a></li><li data-type='method'><a href="WOrmReladb.html#.selectByPk">selectByPk</a></li></ul></li></ul><h3>Global</h3><ul><li><a href="global.html#cvFind">cvFind</a></li><li><a href="global.html#genDateChecker">genDateChecker</a></li><li><a href="global.html#getColKind">getColKind</a></li><li><a href="global.html#getColScale">getColScale</a></li><li><a href="global.html#importModels">importModels</a></li><li><a href="global.html#inDateRange">inDateRange</a></li><li><a href="global.html#isKindOk">isKindOk</a></li><li><a href="global.html#normPk">normPk</a></li></ul>
32
+ <h2><a href="index.html">Home</a></h2><h3>Classes</h3><ul><li><a href="WOrmReladb.html">WOrmReladb</a><ul class='methods'><li data-type='method'><a href="WOrmReladb.html#.closeSequelize">closeSequelize</a></li><li data-type='method'><a href="WOrmReladb.html#.createStorage">createStorage</a></li><li data-type='method'><a href="WOrmReladb.html#.del">del</a></li><li data-type='method'><a href="WOrmReladb.html#.delAll">delAll</a></li><li data-type='method'><a href="WOrmReladb.html#.genModelsByDB">genModelsByDB</a></li><li data-type='method'><a href="WOrmReladb.html#.genModelsByTabs">genModelsByTabs</a></li><li data-type='method'><a href="WOrmReladb.html#.genTransaction">genTransaction</a></li><li data-type='method'><a href="WOrmReladb.html#.initSequelize">initSequelize</a></li><li data-type='method'><a href="WOrmReladb.html#.insert">insert</a></li><li data-type='method'><a href="WOrmReladb.html#.insertBulk">insertBulk</a></li><li data-type='method'><a href="WOrmReladb.html#.save">save</a></li><li data-type='method'><a href="WOrmReladb.html#.select">select</a></li><li data-type='method'><a href="WOrmReladb.html#.selectByPk">selectByPk</a></li></ul></li></ul><h3>Global</h3><ul><li><a href="global.html#chkPkWf">chkPkWf</a></li><li><a href="global.html#chkWf">chkWf</a></li><li><a href="global.html#cvFind">cvFind</a></li><li><a href="global.html#genDateChecker">genDateChecker</a></li><li><a href="global.html#getColKind">getColKind</a></li><li><a href="global.html#getColScale">getColScale</a></li><li><a href="global.html#importModels">importModels</a></li><li><a href="global.html#inDateRange">inDateRange</a></li><li><a href="global.html#isKindOk">isKindOk</a></li><li><a href="global.html#normPk">normPk</a></li></ul>
33
33
 
34
34
  </nav>
35
35
 
@@ -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.5</a> on Mon Oct 19 2026 23:23:31 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.5</a> on Wed Oct 21 2026 00:55:02 GMT+0800 (台北標準時間) using the <a href="https://github.com/clenemt/docdash">docdash</a> theme.
75
75
  </footer>
76
76
 
77
77
  <script>prettyPrint();</script>