w-orm-reladb 1.1.13 → 1.1.14
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/README.md +23 -0
- package/dist/w-orm-reladb.umd.js +2 -2
- package/dist/w-orm-reladb.umd.js.map +1 -1
- package/docs/WOrmReladb.html +14 -14
- package/docs/WOrmReladb.mjs.html +15 -5
- package/docs/cvFind.mjs.html +100 -7
- package/docs/global.html +185 -12
- package/docs/importModels.mjs.html +2 -2
- package/docs/index.html +2 -2
- package/models/tfloat.js +20 -0
- package/models/tlower.js +38 -0
- package/package.json +2 -2
- package/src/WOrmReladb.mjs +13 -3
- package/src/cvFind.mjs +98 -5
- package/test/api-float.mjs +262 -0
- package/test/api-lower-cases.mjs +129 -0
- package/test/api-mssql.test.mjs +6 -0
- package/test/api-scope.mjs +208 -0
- package/test/api-sqlite.test.mjs +6 -0
- package/test/tools/floatTools.mjs +117 -0
- package/test/unit-cvfind.test.mjs +11 -2
- package/test/unit-float.test.mjs +492 -0
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#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>
|
|
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><li><a href="global.html#toFloating">toFloating</a></li></ul>
|
|
33
33
|
|
|
34
34
|
</nav>
|
|
35
35
|
|
|
@@ -148,7 +148,7 @@
|
|
|
148
148
|
|
|
149
149
|
<dt class="tag-source">Source:</dt>
|
|
150
150
|
<dd class="tag-source"><ul class="dummy"><li>
|
|
151
|
-
<a href="cvFind.mjs.html">cvFind.mjs</a>, <a href="cvFind.mjs.html#
|
|
151
|
+
<a href="cvFind.mjs.html">cvFind.mjs</a>, <a href="cvFind.mjs.html#line721">line 721</a>
|
|
152
152
|
</li></ul></dd>
|
|
153
153
|
|
|
154
154
|
|
|
@@ -314,7 +314,7 @@
|
|
|
314
314
|
|
|
315
315
|
<dt class="tag-source">Source:</dt>
|
|
316
316
|
<dd class="tag-source"><ul class="dummy"><li>
|
|
317
|
-
<a href="cvFind.mjs.html">cvFind.mjs</a>, <a href="cvFind.mjs.html#
|
|
317
|
+
<a href="cvFind.mjs.html">cvFind.mjs</a>, <a href="cvFind.mjs.html#line744">line 744</a>
|
|
318
318
|
</li></ul></dd>
|
|
319
319
|
|
|
320
320
|
|
|
@@ -524,7 +524,7 @@ $eq $ne $gt $gte $lt $lte(純量)、$in $nin(純量陣列)、$and $or(條件物
|
|
|
524
524
|
|
|
525
525
|
<dt class="tag-source">Source:</dt>
|
|
526
526
|
<dd class="tag-source"><ul class="dummy"><li>
|
|
527
|
-
<a href="cvFind.mjs.html">cvFind.mjs</a>, <a href="cvFind.mjs.html#
|
|
527
|
+
<a href="cvFind.mjs.html">cvFind.mjs</a>, <a href="cvFind.mjs.html#line1017">line 1017</a>
|
|
528
528
|
</li></ul></dd>
|
|
529
529
|
|
|
530
530
|
|
|
@@ -828,7 +828,7 @@ $eq $ne $gt $gte $lt $lte(純量)、$in $nin(純量陣列)、$and $or(條件物
|
|
|
828
828
|
|
|
829
829
|
|
|
830
830
|
|
|
831
|
-
<td class="description last"><p>輸入無時區日期時間字串之處置, 僅接受undefined(預設, 無時區者拒收)
|
|
831
|
+
<td class="description last"><p>輸入無時區日期時間字串之處置, 僅接受undefined(預設, 無時區者拒收)、'local'(依主機時區解析, 與以本地時間分量建構之Date同義)或'floating'(浮動時間: 牆上時間分量作為UTC瞬間, 見toFloating), 其餘值拋錯; 僅作用於DATE欄, 供Jet等無時區後端之呼叫端明示啟用; 'local'於負偏移時區與夏令時區有已知缺陷(見README), 此類後端請用'floating', 且數據側須同樣經toFloating</p></td>
|
|
832
832
|
</tr>
|
|
833
833
|
|
|
834
834
|
|
|
@@ -909,7 +909,7 @@ $eq $ne $gt $gte $lt $lte(純量)、$in $nin(純量陣列)、$and $or(條件物
|
|
|
909
909
|
|
|
910
910
|
<dt class="tag-source">Source:</dt>
|
|
911
911
|
<dd class="tag-source"><ul class="dummy"><li>
|
|
912
|
-
<a href="cvFind.mjs.html">cvFind.mjs</a>, <a href="cvFind.mjs.html#
|
|
912
|
+
<a href="cvFind.mjs.html">cvFind.mjs</a>, <a href="cvFind.mjs.html#line503">line 503</a>
|
|
913
913
|
</li></ul></dd>
|
|
914
914
|
|
|
915
915
|
|
|
@@ -1067,7 +1067,7 @@ $eq $ne $gt $gte $lt $lte(純量)、$in $nin(純量陣列)、$and $or(條件物
|
|
|
1067
1067
|
|
|
1068
1068
|
<dt class="tag-source">Source:</dt>
|
|
1069
1069
|
<dd class="tag-source"><ul class="dummy"><li>
|
|
1070
|
-
<a href="cvFind.mjs.html">cvFind.mjs</a>, <a href="cvFind.mjs.html#
|
|
1070
|
+
<a href="cvFind.mjs.html">cvFind.mjs</a>, <a href="cvFind.mjs.html#line247">line 247</a>
|
|
1071
1071
|
</li></ul></dd>
|
|
1072
1072
|
|
|
1073
1073
|
|
|
@@ -1249,7 +1249,7 @@ $eq $ne $gt $gte $lt $lte(純量)、$in $nin(純量陣列)、$and $or(條件物
|
|
|
1249
1249
|
|
|
1250
1250
|
<dt class="tag-source">Source:</dt>
|
|
1251
1251
|
<dd class="tag-source"><ul class="dummy"><li>
|
|
1252
|
-
<a href="cvFind.mjs.html">cvFind.mjs</a>, <a href="cvFind.mjs.html#
|
|
1252
|
+
<a href="cvFind.mjs.html">cvFind.mjs</a>, <a href="cvFind.mjs.html#line542">line 542</a>
|
|
1253
1253
|
</li></ul></dd>
|
|
1254
1254
|
|
|
1255
1255
|
|
|
@@ -1831,7 +1831,7 @@ $eq $ne $gt $gte $lt $lte(純量)、$in $nin(純量陣列)、$and $or(條件物
|
|
|
1831
1831
|
|
|
1832
1832
|
<dt class="tag-source">Source:</dt>
|
|
1833
1833
|
<dd class="tag-source"><ul class="dummy"><li>
|
|
1834
|
-
<a href="cvFind.mjs.html">cvFind.mjs</a>, <a href="cvFind.mjs.html#
|
|
1834
|
+
<a href="cvFind.mjs.html">cvFind.mjs</a>, <a href="cvFind.mjs.html#line429">line 429</a>
|
|
1835
1835
|
</li></ul></dd>
|
|
1836
1836
|
|
|
1837
1837
|
|
|
@@ -1992,7 +1992,7 @@ $eq $ne $gt $gte $lt $lte(純量)、$in $nin(純量陣列)、$and $or(條件物
|
|
|
1992
1992
|
|
|
1993
1993
|
<dt class="tag-source">Source:</dt>
|
|
1994
1994
|
<dd class="tag-source"><ul class="dummy"><li>
|
|
1995
|
-
<a href="cvFind.mjs.html">cvFind.mjs</a>, <a href="cvFind.mjs.html#
|
|
1995
|
+
<a href="cvFind.mjs.html">cvFind.mjs</a>, <a href="cvFind.mjs.html#line564">line 564</a>
|
|
1996
1996
|
</li></ul></dd>
|
|
1997
1997
|
|
|
1998
1998
|
|
|
@@ -2185,7 +2185,7 @@ DECIMAL主鍵欄之值小數位多於scale者寫入時會被四捨五入而改
|
|
|
2185
2185
|
|
|
2186
2186
|
<dt class="tag-source">Source:</dt>
|
|
2187
2187
|
<dd class="tag-source"><ul class="dummy"><li>
|
|
2188
|
-
<a href="cvFind.mjs.html">cvFind.mjs</a>, <a href="cvFind.mjs.html#
|
|
2188
|
+
<a href="cvFind.mjs.html">cvFind.mjs</a>, <a href="cvFind.mjs.html#line659">line 659</a>
|
|
2189
2189
|
</li></ul></dd>
|
|
2190
2190
|
|
|
2191
2191
|
|
|
@@ -2418,6 +2418,179 @@ DECIMAL主鍵欄之值小數位多於scale者寫入時會被四捨五入而改
|
|
|
2418
2418
|
|
|
2419
2419
|
|
|
2420
2420
|
|
|
2421
|
+
|
|
2422
|
+
|
|
2423
|
+
|
|
2424
|
+
|
|
2425
|
+
<h4 class="name" id="toFloating"><span class="type-signature"></span>toFloating<span class="signature">(v)</span><span class="type-signature"> → {Date|null}</span></h4>
|
|
2426
|
+
|
|
2427
|
+
|
|
2428
|
+
|
|
2429
|
+
|
|
2430
|
+
|
|
2431
|
+
|
|
2432
|
+
<dl class="details">
|
|
2433
|
+
|
|
2434
|
+
<dt class="tag-description">Description:</dt>
|
|
2435
|
+
<dd class="tag-description"><ul class="dummy"><li><p>將DATE欄條件值換算為浮動時間(牆上時間分量作為UTC瞬間), 不合法者回傳null; 供ctx.dateNoTz為'floating'時條件側使用, 亦供呼叫端將後端回傳之牆上時間建為記憶體表之DATE值
|
|
2436
|
+
註: 無時區字串(文法同'local': YYYY-MM-DD[T或單一空白]HH:mm[:ss[.小數]], 純日期不收)直接取其分量, 不經主機時區;
|
|
2437
|
+
Date、epoch與帶時區之ISO字串先得瞬間, 再取其於主機時區之本地分量(Jet等後端將本地分量視為牆上時間), 故new Date(2026,0,1)(本地午夜)恆為2026-01-01T00:00:00Z之浮動值而與主機時區無關
|
|
2438
|
+
註: 契約(CLAUDE_rulebook.md之R14): ①編碼後之浮動Date/epoch不可再當'floating'條件輸入(Date一律被當作瞬間取本地分量, 再次輸入即二次位移);
|
|
2439
|
+
②回傳null者呼叫端須整批拒收, 不得以原值或NULL代入(NULL使該列於範圍條件不命中、IS NULL命中, 與要修之誤刪同型);
|
|
2440
|
+
③條件側走'floating'與數據側經本函數須同進同退, 混用之後果為靜默誤命中(資料遺失類)
|
|
2441
|
+
註: 不拋錯(不合法者一律回傳null); 小數秒取前三位(截斷至毫秒); 牆上年須在1–9999</p></li></ul></dd>
|
|
2442
|
+
|
|
2443
|
+
|
|
2444
|
+
|
|
2445
|
+
<dt class="tag-source">Source:</dt>
|
|
2446
|
+
<dd class="tag-source"><ul class="dummy"><li>
|
|
2447
|
+
<a href="cvFind.mjs.html">cvFind.mjs</a>, <a href="cvFind.mjs.html#line192">line 192</a>
|
|
2448
|
+
</li></ul></dd>
|
|
2449
|
+
|
|
2450
|
+
|
|
2451
|
+
|
|
2452
|
+
|
|
2453
|
+
|
|
2454
|
+
|
|
2455
|
+
|
|
2456
|
+
|
|
2457
|
+
|
|
2458
|
+
|
|
2459
|
+
|
|
2460
|
+
|
|
2461
|
+
|
|
2462
|
+
|
|
2463
|
+
|
|
2464
|
+
|
|
2465
|
+
|
|
2466
|
+
|
|
2467
|
+
|
|
2468
|
+
|
|
2469
|
+
|
|
2470
|
+
|
|
2471
|
+
|
|
2472
|
+
|
|
2473
|
+
|
|
2474
|
+
|
|
2475
|
+
|
|
2476
|
+
|
|
2477
|
+
|
|
2478
|
+
|
|
2479
|
+
|
|
2480
|
+
</dl>
|
|
2481
|
+
|
|
2482
|
+
|
|
2483
|
+
|
|
2484
|
+
|
|
2485
|
+
|
|
2486
|
+
|
|
2487
|
+
|
|
2488
|
+
|
|
2489
|
+
|
|
2490
|
+
|
|
2491
|
+
|
|
2492
|
+
|
|
2493
|
+
|
|
2494
|
+
<h5 class="h5-parameters">Parameters:</h5>
|
|
2495
|
+
|
|
2496
|
+
|
|
2497
|
+
<table class="params">
|
|
2498
|
+
<thead>
|
|
2499
|
+
<tr>
|
|
2500
|
+
|
|
2501
|
+
<th>Name</th>
|
|
2502
|
+
|
|
2503
|
+
|
|
2504
|
+
<th>Type</th>
|
|
2505
|
+
|
|
2506
|
+
|
|
2507
|
+
|
|
2508
|
+
|
|
2509
|
+
|
|
2510
|
+
<th class="last">Description</th>
|
|
2511
|
+
</tr>
|
|
2512
|
+
</thead>
|
|
2513
|
+
|
|
2514
|
+
<tbody>
|
|
2515
|
+
|
|
2516
|
+
|
|
2517
|
+
<tr>
|
|
2518
|
+
|
|
2519
|
+
<td class="name"><code>v</code></td>
|
|
2520
|
+
|
|
2521
|
+
|
|
2522
|
+
<td class="type">
|
|
2523
|
+
|
|
2524
|
+
|
|
2525
|
+
<span class="param-type">Date</span>
|
|
2526
|
+
|
|
|
2527
|
+
|
|
2528
|
+
<span class="param-type">Number</span>
|
|
2529
|
+
|
|
|
2530
|
+
|
|
2531
|
+
<span class="param-type">String</span>
|
|
2532
|
+
|
|
2533
|
+
|
|
2534
|
+
|
|
2535
|
+
|
|
2536
|
+
</td>
|
|
2537
|
+
|
|
2538
|
+
|
|
2539
|
+
|
|
2540
|
+
|
|
2541
|
+
|
|
2542
|
+
<td class="description last"><p>輸入Date、epoch數值或字串</p></td>
|
|
2543
|
+
</tr>
|
|
2544
|
+
|
|
2545
|
+
|
|
2546
|
+
</tbody>
|
|
2547
|
+
</table>
|
|
2548
|
+
|
|
2549
|
+
|
|
2550
|
+
|
|
2551
|
+
|
|
2552
|
+
|
|
2553
|
+
|
|
2554
|
+
|
|
2555
|
+
|
|
2556
|
+
|
|
2557
|
+
|
|
2558
|
+
|
|
2559
|
+
|
|
2560
|
+
|
|
2561
|
+
|
|
2562
|
+
|
|
2563
|
+
|
|
2564
|
+
<h5 class="h5-returns">Returns:</h5>
|
|
2565
|
+
|
|
2566
|
+
|
|
2567
|
+
<div class="param-desc">
|
|
2568
|
+
<p>回傳浮動時間之Date, 不合法者回傳null</p>
|
|
2569
|
+
</div>
|
|
2570
|
+
|
|
2571
|
+
|
|
2572
|
+
|
|
2573
|
+
<dl class="param-type">
|
|
2574
|
+
<dt>
|
|
2575
|
+
Type
|
|
2576
|
+
</dt>
|
|
2577
|
+
<dd>
|
|
2578
|
+
|
|
2579
|
+
<span class="param-type">Date</span>
|
|
2580
|
+
|
|
|
2581
|
+
|
|
2582
|
+
<span class="param-type">null</span>
|
|
2583
|
+
|
|
2584
|
+
|
|
2585
|
+
|
|
2586
|
+
</dd>
|
|
2587
|
+
</dl>
|
|
2588
|
+
|
|
2589
|
+
|
|
2590
|
+
|
|
2591
|
+
|
|
2592
|
+
|
|
2593
|
+
|
|
2421
2594
|
|
|
2422
2595
|
|
|
2423
2596
|
|
|
@@ -2437,7 +2610,7 @@ DECIMAL主鍵欄之值小數位多於scale者寫入時會被四捨五入而改
|
|
|
2437
2610
|
<br class="clear">
|
|
2438
2611
|
|
|
2439
2612
|
<footer>
|
|
2440
|
-
Documentation generated by <a href="https://github.com/jsdoc3/jsdoc">JSDoc 4.0.5</a> on Wed Oct 21 2026
|
|
2613
|
+
Documentation generated by <a href="https://github.com/jsdoc3/jsdoc">JSDoc 4.0.5</a> on Wed Oct 21 2026 11:57:34 GMT+0800 (台北標準時間) using the <a href="https://github.com/clenemt/docdash">docdash</a> theme.
|
|
2441
2614
|
</footer>
|
|
2442
2615
|
|
|
2443
2616
|
<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#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>
|
|
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><li><a href="global.html#toFloating">toFloating</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 Wed Oct 21 2026
|
|
245
|
+
Documentation generated by <a href="https://github.com/jsdoc3/jsdoc">JSDoc 4.0.5</a> on Wed Oct 21 2026 11:57:34 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#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>
|
|
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><li><a href="global.html#toFloating">toFloating</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 Wed Oct 21 2026
|
|
74
|
+
Documentation generated by <a href="https://github.com/jsdoc3/jsdoc">JSDoc 4.0.5</a> on Wed Oct 21 2026 11:57:34 GMT+0800 (台北標準時間) using the <a href="https://github.com/clenemt/docdash">docdash</a> theme.
|
|
75
75
|
</footer>
|
|
76
76
|
|
|
77
77
|
<script>prettyPrint();</script>
|
package/models/tfloat.js
ADDED
|
@@ -0,0 +1,20 @@
|
|
|
1
|
+
/* jshint indent: 1 */
|
|
2
|
+
module.exports = function(sequelize, DataTypes) {
|
|
3
|
+
return sequelize.define('tfloat', {
|
|
4
|
+
'id': {
|
|
5
|
+
type: DataTypes.STRING,
|
|
6
|
+
allowNull: false,
|
|
7
|
+
primaryKey: true,
|
|
8
|
+
autoIncrement: false,
|
|
9
|
+
comment: null
|
|
10
|
+
},
|
|
11
|
+
'd': {
|
|
12
|
+
type: DataTypes.DATE,
|
|
13
|
+
allowNull: true,
|
|
14
|
+
autoIncrement: false,
|
|
15
|
+
comment: null
|
|
16
|
+
}
|
|
17
|
+
}, {
|
|
18
|
+
tableName: 'tfloat'
|
|
19
|
+
});
|
|
20
|
+
};
|
package/models/tlower.js
ADDED
|
@@ -0,0 +1,38 @@
|
|
|
1
|
+
/* jshint indent: 1 */
|
|
2
|
+
module.exports = function(sequelize, DataTypes) {
|
|
3
|
+
return sequelize.define('tlower', {
|
|
4
|
+
'id': {
|
|
5
|
+
type: DataTypes.INTEGER,
|
|
6
|
+
allowNull: false,
|
|
7
|
+
primaryKey: true,
|
|
8
|
+
autoIncrement: false,
|
|
9
|
+
comment: null
|
|
10
|
+
},
|
|
11
|
+
's': {
|
|
12
|
+
type: DataTypes.STRING,
|
|
13
|
+
allowNull: true,
|
|
14
|
+
autoIncrement: false,
|
|
15
|
+
comment: null
|
|
16
|
+
},
|
|
17
|
+
'n': {
|
|
18
|
+
type: DataTypes.INTEGER,
|
|
19
|
+
allowNull: true,
|
|
20
|
+
autoIncrement: false,
|
|
21
|
+
comment: null
|
|
22
|
+
},
|
|
23
|
+
'b': {
|
|
24
|
+
type: DataTypes.BOOLEAN,
|
|
25
|
+
allowNull: true,
|
|
26
|
+
autoIncrement: false,
|
|
27
|
+
comment: null
|
|
28
|
+
},
|
|
29
|
+
'd': {
|
|
30
|
+
type: DataTypes.DATE,
|
|
31
|
+
allowNull: true,
|
|
32
|
+
autoIncrement: false,
|
|
33
|
+
comment: null
|
|
34
|
+
}
|
|
35
|
+
}, {
|
|
36
|
+
tableName: 'tlower'
|
|
37
|
+
});
|
|
38
|
+
};
|
package/package.json
CHANGED
|
@@ -1,13 +1,13 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "w-orm-reladb",
|
|
3
|
-
"version": "1.1.
|
|
3
|
+
"version": "1.1.14",
|
|
4
4
|
"main": "dist/w-orm-reladb.umd.js",
|
|
5
5
|
"dependencies": {
|
|
6
6
|
"json5": "^2.2.3",
|
|
7
7
|
"sqlite3": "^6.0.1",
|
|
8
8
|
"tedious": "^19.2.2",
|
|
9
9
|
"w-auto-sequelize": "^1.0.49",
|
|
10
|
-
"wsemi": "^1.9.
|
|
10
|
+
"wsemi": "^1.9.25"
|
|
11
11
|
},
|
|
12
12
|
"dependenciesTemp": {
|
|
13
13
|
"@journeyapps/sqlcipher": "^5.3.1",
|
package/src/WOrmReladb.mjs
CHANGED
|
@@ -350,8 +350,8 @@ function WOrmReladb(opt = {}) {
|
|
|
350
350
|
* 兩者命中之數據不同而會刪錯列, 故delAll遇此類model即拒絕
|
|
351
351
|
* 註: defaultScope帶group或having時, findAll套用而destroy不套用(having過濾後只回部分列, 卻刪除全部符合where者);
|
|
352
352
|
* 帶非空之include時, findAll以INNER JOIN篩列(required)而destroy不JOIN; 兩者亦拒絕
|
|
353
|
-
* 註: defaultScope.where含Op.and
|
|
354
|
-
* delAll會刪到scope
|
|
353
|
+
* 註: defaultScope.where含Op.and者, delAll一律拒絕(維持既有處置): 原因為sequelize預設以Object.assign合併scope與cvFind輸出之where而被頂層Op.and覆寫,
|
|
354
|
+
* delAll會刪到scope範圍外之列; 自R16起建構時設定whereMergeStrategy:'and', 兩者一律以AND結合(select亦正確套用該scope), 此拒絕為保守維持, 不再是越界之防線
|
|
355
355
|
*
|
|
356
356
|
* @ignore
|
|
357
357
|
* @param {Object} md 輸入資料表model物件
|
|
@@ -526,7 +526,10 @@ function WOrmReladb(opt = {}) {
|
|
|
526
526
|
//dialectOptions: {
|
|
527
527
|
// collate: 'utf8_general_ci'
|
|
528
528
|
//},
|
|
529
|
-
timestamps: false
|
|
529
|
+
timestamps: false,
|
|
530
|
+
//model之defaultScope.where與select、delAll等傳入之where一律以AND結合(R16): sequelize預設為overwrite, 同名頂層鍵後者覆寫,
|
|
531
|
+
//scope.where為Sequelize.literal或Sequelize.where(非一般物件)時scope直接被丟棄, 致select與delAll越出scope
|
|
532
|
+
whereMergeStrategy: 'and'
|
|
530
533
|
},
|
|
531
534
|
// pool: {
|
|
532
535
|
// max: 20,
|
|
@@ -559,6 +562,13 @@ function WOrmReladb(opt = {}) {
|
|
|
559
562
|
//mds
|
|
560
563
|
let mds = r.msg
|
|
561
564
|
|
|
565
|
+
//model自身指定whereMergeStrategy時以model選項為準而蓋過上列define預設(scope又被覆寫或丟棄), 故匯入後一律設為'and'(R16)
|
|
566
|
+
if (err === null) {
|
|
567
|
+
for (let md of Object.values(mds)) {
|
|
568
|
+
md.options.whereMergeStrategy = 'and'
|
|
569
|
+
}
|
|
570
|
+
}
|
|
571
|
+
|
|
562
572
|
return {
|
|
563
573
|
mds,
|
|
564
574
|
err,
|
package/src/cvFind.mjs
CHANGED
|
@@ -115,6 +115,90 @@ function parseNoTzLocal(s) {
|
|
|
115
115
|
}
|
|
116
116
|
|
|
117
117
|
|
|
118
|
+
/**
|
|
119
|
+
* 以UTC分量建構Date(牆上時間分量作為UTC瞬間, 即浮動時間), 曆法上不存在或年不在1–9999者回傳null
|
|
120
|
+
* 註: 以setUTCFullYear設定完整年份(Date.UTC把0–99年映射為1900–1999); 逐欄回驗, 如2026-02-30、24:00:00、60秒皆為null; 與主機時區無關(夏令跳過之時刻在浮動空間亦合法)
|
|
121
|
+
*
|
|
122
|
+
* @ignore
|
|
123
|
+
*/
|
|
124
|
+
function utcOfParts(y, mo, d, h, mi, sec, ms) {
|
|
125
|
+
let t = new Date(0)
|
|
126
|
+
t.setUTCFullYear(y, mo - 1, d)
|
|
127
|
+
t.setUTCHours(h, mi, sec, ms)
|
|
128
|
+
if (t.getUTCFullYear() !== y || t.getUTCMonth() !== mo - 1 || t.getUTCDate() !== d || t.getUTCHours() !== h || t.getUTCMinutes() !== mi || t.getUTCSeconds() !== sec || t.getUTCMilliseconds() !== ms) {
|
|
129
|
+
return null
|
|
130
|
+
}
|
|
131
|
+
return inYearRange(y) ? t : null
|
|
132
|
+
}
|
|
133
|
+
|
|
134
|
+
|
|
135
|
+
//內建Date.prototype之getTime與本地分量getter, 供toFloating讀Date之內部時間與本地分量(載入時取得, 以call呼叫, 不受後續對原型或物件之覆寫影響)
|
|
136
|
+
let dateGetTime = Date.prototype.getTime
|
|
137
|
+
let dateGetYear = Date.prototype.getFullYear
|
|
138
|
+
let dateGetMonth = Date.prototype.getMonth
|
|
139
|
+
let dateGetDate = Date.prototype.getDate
|
|
140
|
+
let dateGetHours = Date.prototype.getHours
|
|
141
|
+
let dateGetMinutes = Date.prototype.getMinutes
|
|
142
|
+
let dateGetSeconds = Date.prototype.getSeconds
|
|
143
|
+
let dateGetMs = Date.prototype.getMilliseconds
|
|
144
|
+
|
|
145
|
+
|
|
146
|
+
/**
|
|
147
|
+
* toFloating之本體, 可能因敵意輸入(如getPrototypeOf陷阱拋錯之Proxy)而拋錯, 由toFloating統一轉為null
|
|
148
|
+
*
|
|
149
|
+
* @ignore
|
|
150
|
+
*/
|
|
151
|
+
function floatOf(v) {
|
|
152
|
+
let inst = null
|
|
153
|
+
if (typeof v === 'string') {
|
|
154
|
+
let m = v.match(reIsoNoTz)
|
|
155
|
+
if (m !== null) {
|
|
156
|
+
let ms = m[7] === undefined ? 0 : Number(`${m[7]}00`.slice(0, 3))
|
|
157
|
+
return utcOfParts(Number(m[1]), Number(m[2]), Number(m[3]), Number(m[4]), Number(m[5]), m[6] === undefined ? 0 : Number(m[6]), ms)
|
|
158
|
+
}
|
|
159
|
+
let mt = v.match(reIsoTz)
|
|
160
|
+
if (mt === null || !isCalendarDate(mt[1], mt[2], mt[3])) {
|
|
161
|
+
return null
|
|
162
|
+
}
|
|
163
|
+
inst = new Date(Date.parse(v.replace(' ', 'T')))
|
|
164
|
+
}
|
|
165
|
+
else if (typeof v === 'number') {
|
|
166
|
+
inst = new Date(v)
|
|
167
|
+
}
|
|
168
|
+
else if (typeof v === 'object' && v !== null) {
|
|
169
|
+
//Date以內建getTime讀其內部時間(跨realm之Date亦可; 非Date拋TypeError, 由toFloating轉為null), 並建普通Date複本取本地分量,
|
|
170
|
+
//不使用物件自有或原型上可被覆寫之getTime與本地getter(與條件側經cvOrmFind複製Date同, 兩側認定一致)
|
|
171
|
+
inst = new Date(dateGetTime.call(v))
|
|
172
|
+
}
|
|
173
|
+
if (inst === null || isNaN(dateGetTime.call(inst))) {
|
|
174
|
+
return null
|
|
175
|
+
}
|
|
176
|
+
return utcOfParts(dateGetYear.call(inst), dateGetMonth.call(inst) + 1, dateGetDate.call(inst), dateGetHours.call(inst), dateGetMinutes.call(inst), dateGetSeconds.call(inst), dateGetMs.call(inst))
|
|
177
|
+
}
|
|
178
|
+
|
|
179
|
+
|
|
180
|
+
/**
|
|
181
|
+
* 將DATE欄條件值換算為浮動時間(牆上時間分量作為UTC瞬間), 不合法者回傳null; 供ctx.dateNoTz為'floating'時條件側使用, 亦供呼叫端將後端回傳之牆上時間建為記憶體表之DATE值
|
|
182
|
+
* 註: 無時區字串(文法同'local': YYYY-MM-DD[T或單一空白]HH:mm[:ss[.小數]], 純日期不收)直接取其分量, 不經主機時區;
|
|
183
|
+
* Date、epoch與帶時區之ISO字串先得瞬間, 再取其於主機時區之本地分量(Jet等後端將本地分量視為牆上時間), 故new Date(2026,0,1)(本地午夜)恆為2026-01-01T00:00:00Z之浮動值而與主機時區無關
|
|
184
|
+
* 註: 契約(CLAUDE_rulebook.md之R14): ①編碼後之浮動Date/epoch不可再當'floating'條件輸入(Date一律被當作瞬間取本地分量, 再次輸入即二次位移);
|
|
185
|
+
* ②回傳null者呼叫端須整批拒收, 不得以原值或NULL代入(NULL使該列於範圍條件不命中、IS NULL命中, 與要修之誤刪同型);
|
|
186
|
+
* ③條件側走'floating'與數據側經本函數須同進同退, 混用之後果為靜默誤命中(資料遺失類)
|
|
187
|
+
* 註: 不拋錯(不合法者一律回傳null); 小數秒取前三位(截斷至毫秒); 牆上年須在1–9999
|
|
188
|
+
*
|
|
189
|
+
* @param {Date|Number|String} v 輸入Date、epoch數值或字串
|
|
190
|
+
* @returns {Date|null} 回傳浮動時間之Date, 不合法者回傳null
|
|
191
|
+
*/
|
|
192
|
+
function toFloating(v) {
|
|
193
|
+
try {
|
|
194
|
+
return floatOf(v)
|
|
195
|
+
}
|
|
196
|
+
catch (e) {
|
|
197
|
+
return null
|
|
198
|
+
}
|
|
199
|
+
}
|
|
200
|
+
|
|
201
|
+
|
|
118
202
|
/**
|
|
119
203
|
* 判定年月日是否為曆法上存在之日期, 如2026-02-30不存在; 年須在1以上(年0000不收)
|
|
120
204
|
* 註: 不用Date.UTC(y,..)建構, 因其把0–99年映射為1900–1999而使年0001–0099之字串被誤拒; 以setUTCFullYear設定完整年份
|
|
@@ -695,6 +779,7 @@ function chkWf(data, pk, withData) {
|
|
|
695
779
|
* 註: 主鍵欄(pk為true)之字串類、整數類與其他數值類以normPk正規化後回傳(如字串類主鍵欄之123即'123'), 無效或型別不符者拒收,
|
|
696
780
|
* 令select與delAll對主鍵之認定與selectByPk、del等主鍵函數一致; 非主鍵欄不轉型
|
|
697
781
|
* 註: kind為date且呼叫端以ctx.dateNoTz明示'local'(dateNoTz為'local')時, 無時區日期時間字串依主機時區轉為Date回傳(見parseNoTzLocal), 其餘值照舊判定
|
|
782
|
+
* 註: kind為date且dateNoTz為'floating'時, 字串、Date、epoch一律經toFloating換算為浮動時間之Date回傳(見toFloating), 不符者拒收(R14)
|
|
698
783
|
*
|
|
699
784
|
* @ignore
|
|
700
785
|
*/
|
|
@@ -722,6 +807,14 @@ function chkScalar(v, path, kind = 'any', scale = null, pk = false, dateNoTz = u
|
|
|
722
807
|
}
|
|
723
808
|
err(`value [${String(v)}] does not match column type [${kind}]${scale !== null ? ` with scale [${scale}]` : ''}`, path)
|
|
724
809
|
}
|
|
810
|
+
if (kind === 'date' && dateNoTz === 'floating') {
|
|
811
|
+
//浮動時間(R14): 所有形式皆換算為牆上時間分量再以UTC分量建構(見toFloating), 與主機時區之UTC偏移無關; 不符者拒收
|
|
812
|
+
let t = toFloating(v)
|
|
813
|
+
if (t === null) {
|
|
814
|
+
err(`value [${String(v)}] does not match column type [${kind}]`, path)
|
|
815
|
+
}
|
|
816
|
+
return t
|
|
817
|
+
}
|
|
725
818
|
if (kind === 'date' && dateNoTz === 'local' && typeof v === 'string') {
|
|
726
819
|
//呼叫端明示之無時區日期時間字串: 依主機時區解析並以Date送出, 與直接給Date同義; 不符者續由isKindOk判定(帶時區者照舊)
|
|
727
820
|
let t = parseNoTzLocal(v)
|
|
@@ -918,14 +1011,14 @@ function chkFindShape(find) {
|
|
|
918
1011
|
* @param {Object} [ctx.attrs] 輸入執行where之model之rawAttributes, 供欄名解析(嚴格鍵: 鍵須與屬性名或資料庫欄名完全相符, 其餘拒收)、依欄位型別檢核純量與取得實際欄名; 未給時不解析鍵、不檢型別而交資料庫(見CLAUDE_rulebook.md之R4)
|
|
919
1012
|
* @param {String} [ctx.dialect] 已不使用(原供判定sqlite之LOWER僅折疊ASCII), 保留接受以相容既有呼叫端
|
|
920
1013
|
* @param {String} [ctx.pk] 輸入主鍵欄位名, 該欄之純量條件值依normPk正規化(如字串類主鍵欄之123即'123'), 未給時不正規化
|
|
921
|
-
* @param {String} [ctx.dateNoTz] 輸入無時區日期時間字串之處置, 僅接受undefined(預設, 無時區者拒收)
|
|
1014
|
+
* @param {String} [ctx.dateNoTz] 輸入無時區日期時間字串之處置, 僅接受undefined(預設, 無時區者拒收)、'local'(依主機時區解析, 與以本地時間分量建構之Date同義)或'floating'(浮動時間: 牆上時間分量作為UTC瞬間, 見toFloating), 其餘值拋錯; 僅作用於DATE欄, 供Jet等無時區後端之呼叫端明示啟用; 'local'於負偏移時區與夏令時區有已知缺陷(見README), 此類後端請用'floating', 且數據側須同樣經toFloating
|
|
922
1015
|
* @returns {Object} 回傳sequelize之where物件, 條件不合法時拋出錯誤
|
|
923
1016
|
*/
|
|
924
1017
|
function cvFind(find, ctx) {
|
|
925
1018
|
|
|
926
|
-
//check, ctx.dateNoTz須為undefined
|
|
927
|
-
if (ctx && ctx.dateNoTz !== undefined && ctx.dateNoTz !== 'local') {
|
|
928
|
-
throw new Error(`invalid ctx: dateNoTz must be 'local' or undefined, got [${String(ctx.dateNoTz)}]`)
|
|
1019
|
+
//check, ctx.dateNoTz須為undefined、'local'或'floating', 其餘值(含拼錯、大小寫不同)拋錯, 不靜默忽略
|
|
1020
|
+
if (ctx && ctx.dateNoTz !== undefined && ctx.dateNoTz !== 'local' && ctx.dateNoTz !== 'floating') {
|
|
1021
|
+
throw new Error(`invalid ctx: dateNoTz must be 'local', 'floating' or undefined, got [${String(ctx.dateNoTz)}]`)
|
|
929
1022
|
}
|
|
930
1023
|
|
|
931
1024
|
//step1, 形狀檢核(R11), 其後一律只使用複本
|
|
@@ -946,5 +1039,5 @@ function cvFind(find, ctx) {
|
|
|
946
1039
|
}
|
|
947
1040
|
|
|
948
1041
|
|
|
949
|
-
export { getColKind, getColScale, normPk, chkPkWf, chkWf, chkFindShape, inDateRange, genDateChecker }
|
|
1042
|
+
export { getColKind, getColScale, normPk, chkPkWf, chkWf, chkFindShape, inDateRange, genDateChecker, toFloating }
|
|
950
1043
|
export default cvFind
|