@maiyunnet/kebab 9.12.1 → 9.13.0
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/doc/kebab-rag.md +237 -41
- package/index.d.ts +1 -1
- package/index.js +1 -1
- package/lib/net.js +2 -2
- package/lib/s3.d.ts +39 -0
- package/lib/s3.js +40 -1
- package/lib/sql.d.ts +1 -1
- package/lib/sql.js +10 -9
- package/lib/undici.js +1 -1
- package/package.json +1 -1
- package/sys/child.js +1 -1
- package/sys/mod.js +1 -1
package/doc/kebab-rag.md
CHANGED
|
@@ -1360,7 +1360,7 @@ index/variables/VER.md
|
|
|
1360
1360
|
|
|
1361
1361
|
# Variable: VER
|
|
1362
1362
|
|
|
1363
|
-
> `const` **VER**: `"9.
|
|
1363
|
+
> `const` **VER**: `"9.13.0"` = `'9.13.0'`
|
|
1364
1364
|
|
|
1365
1365
|
Defined in: [index.ts:10](https://github.com/maiyunnet/kebab/blob/master/index.ts#L10)
|
|
1366
1366
|
|
|
@@ -12555,7 +12555,7 @@ lib/s3/classes/S3.md
|
|
|
12555
12555
|
|
|
12556
12556
|
# Class: S3
|
|
12557
12557
|
|
|
12558
|
-
Defined in: [lib/s3.ts:
|
|
12558
|
+
Defined in: [lib/s3.ts:79](https://github.com/maiyunnet/kebab/blob/master/lib/s3.ts#L79)
|
|
12559
12559
|
|
|
12560
12560
|
## Constructors
|
|
12561
12561
|
|
|
@@ -12563,7 +12563,7 @@ Defined in: [lib/s3.ts:43](https://github.com/maiyunnet/kebab/blob/master/lib/s3
|
|
|
12563
12563
|
|
|
12564
12564
|
> **new S3**(`ctr`, `opt`): `S3`
|
|
12565
12565
|
|
|
12566
|
-
Defined in: [lib/s3.ts:
|
|
12566
|
+
Defined in: [lib/s3.ts:88](https://github.com/maiyunnet/kebab/blob/master/lib/s3.ts#L88)
|
|
12567
12567
|
|
|
12568
12568
|
#### Parameters
|
|
12569
12569
|
|
|
@@ -12585,7 +12585,7 @@ Defined in: [lib/s3.ts:52](https://github.com/maiyunnet/kebab/blob/master/lib/s3
|
|
|
12585
12585
|
|
|
12586
12586
|
> **deleteObject**(`key`, `bucket?`): `Promise`\<`boolean`\>
|
|
12587
12587
|
|
|
12588
|
-
Defined in: [lib/s3.ts:
|
|
12588
|
+
Defined in: [lib/s3.ts:255](https://github.com/maiyunnet/kebab/blob/master/lib/s3.ts#L255)
|
|
12589
12589
|
|
|
12590
12590
|
删除对象
|
|
12591
12591
|
|
|
@@ -12613,7 +12613,7 @@ bucket 名
|
|
|
12613
12613
|
|
|
12614
12614
|
> **deleteObjects**(`keys`, `bucket?`): `Promise`\<`boolean`\>
|
|
12615
12615
|
|
|
12616
|
-
Defined in: [lib/s3.ts:
|
|
12616
|
+
Defined in: [lib/s3.ts:275](https://github.com/maiyunnet/kebab/blob/master/lib/s3.ts#L275)
|
|
12617
12617
|
|
|
12618
12618
|
批量删除对象
|
|
12619
12619
|
|
|
@@ -12641,7 +12641,7 @@ bucket 名
|
|
|
12641
12641
|
|
|
12642
12642
|
> **destroy**(): `void`
|
|
12643
12643
|
|
|
12644
|
-
Defined in: [lib/s3.ts:
|
|
12644
|
+
Defined in: [lib/s3.ts:317](https://github.com/maiyunnet/kebab/blob/master/lib/s3.ts#L317)
|
|
12645
12645
|
|
|
12646
12646
|
销毁连接,释放资源
|
|
12647
12647
|
一般会自动垃圾回收,但高频接口也可主动调用
|
|
@@ -12656,7 +12656,7 @@ Defined in: [lib/s3.ts:231](https://github.com/maiyunnet/kebab/blob/master/lib/s
|
|
|
12656
12656
|
|
|
12657
12657
|
> **getObject**(`key`, `bucket?`): `Promise`\<`false` \| `Readable` & `SdkStreamMixin` \| `Blob` & `SdkStreamMixin` \| `ReadableStream`\<`any`\> & `SdkStreamMixin` \| `undefined`\>
|
|
12658
12658
|
|
|
12659
|
-
Defined in: [lib/s3.ts:
|
|
12659
|
+
Defined in: [lib/s3.ts:235](https://github.com/maiyunnet/kebab/blob/master/lib/s3.ts#L235)
|
|
12660
12660
|
|
|
12661
12661
|
获取对象流,可通过流获取 buffer 或 text
|
|
12662
12662
|
|
|
@@ -12684,7 +12684,7 @@ bucket 名
|
|
|
12684
12684
|
|
|
12685
12685
|
> **headObject**(`key`, `bucket?`): `Promise`\<`false` \| `HeadObjectCommandOutput`\>
|
|
12686
12686
|
|
|
12687
|
-
Defined in: [lib/s3.ts:
|
|
12687
|
+
Defined in: [lib/s3.ts:297](https://github.com/maiyunnet/kebab/blob/master/lib/s3.ts#L297)
|
|
12688
12688
|
|
|
12689
12689
|
检测对象是否存在
|
|
12690
12690
|
|
|
@@ -12712,7 +12712,7 @@ bucket 名
|
|
|
12712
12712
|
|
|
12713
12713
|
> **putObject**(`key`, `content`, `length?`, `bucket?`): `Promise`\<`false` \| `CompleteMultipartUploadCommandOutput`\>
|
|
12714
12714
|
|
|
12715
|
-
Defined in: [lib/s3.ts:
|
|
12715
|
+
Defined in: [lib/s3.ts:139](https://github.com/maiyunnet/kebab/blob/master/lib/s3.ts#L139)
|
|
12716
12716
|
|
|
12717
12717
|
上传对象(可传流且也可无需设置 length) --
|
|
12718
12718
|
|
|
@@ -12776,11 +12776,39 @@ bucket 名
|
|
|
12776
12776
|
|
|
12777
12777
|
***
|
|
12778
12778
|
|
|
12779
|
+
### putObjects()
|
|
12780
|
+
|
|
12781
|
+
> **putObjects**(`items`, `options?`): `Promise`\<[`IPutObjectsItemResult`](../interfaces/IPutObjectsItemResult.md)[]\>
|
|
12782
|
+
|
|
12783
|
+
Defined in: [lib/s3.ts:184](https://github.com/maiyunnet/kebab/blob/master/lib/s3.ts#L184)
|
|
12784
|
+
|
|
12785
|
+
批量上传对象,并发控制,单次失败不影响其他项
|
|
12786
|
+
|
|
12787
|
+
#### Parameters
|
|
12788
|
+
|
|
12789
|
+
##### items
|
|
12790
|
+
|
|
12791
|
+
[`IPutObjectItem`](../interfaces/IPutObjectItem.md)[]
|
|
12792
|
+
|
|
12793
|
+
上传项列表
|
|
12794
|
+
|
|
12795
|
+
##### options?
|
|
12796
|
+
|
|
12797
|
+
[`IPutObjectsOptions`](../interfaces/IPutObjectsOptions.md)
|
|
12798
|
+
|
|
12799
|
+
批量上传选项
|
|
12800
|
+
|
|
12801
|
+
#### Returns
|
|
12802
|
+
|
|
12803
|
+
`Promise`\<[`IPutObjectsItemResult`](../interfaces/IPutObjectsItemResult.md)[]\>
|
|
12804
|
+
|
|
12805
|
+
***
|
|
12806
|
+
|
|
12779
12807
|
### setBucket()
|
|
12780
12808
|
|
|
12781
12809
|
> **setBucket**(`bucket`): `void`
|
|
12782
12810
|
|
|
12783
|
-
Defined in: [lib/s3.ts:
|
|
12811
|
+
Defined in: [lib/s3.ts:128](https://github.com/maiyunnet/kebab/blob/master/lib/s3.ts#L128)
|
|
12784
12812
|
|
|
12785
12813
|
修改预定义 bucket
|
|
12786
12814
|
|
|
@@ -12856,7 +12884,7 @@ lib/s3/functions/get.md
|
|
|
12856
12884
|
|
|
12857
12885
|
> **get**(`ctr`, `opt`): [`S3`](../classes/S3.md)
|
|
12858
12886
|
|
|
12859
|
-
Defined in: [lib/s3.ts:
|
|
12887
|
+
Defined in: [lib/s3.ts:327](https://github.com/maiyunnet/kebab/blob/master/lib/s3.ts#L327)
|
|
12860
12888
|
|
|
12861
12889
|
创建一个对象存储对象
|
|
12862
12890
|
|
|
@@ -12898,6 +12926,9 @@ lib/s3/index.md
|
|
|
12898
12926
|
## Interfaces
|
|
12899
12927
|
|
|
12900
12928
|
- [IOptions](interfaces/IOptions.md)
|
|
12929
|
+
- [IPutObjectItem](interfaces/IPutObjectItem.md)
|
|
12930
|
+
- [IPutObjectsItemResult](interfaces/IPutObjectsItemResult.md)
|
|
12931
|
+
- [IPutObjectsOptions](interfaces/IPutObjectsOptions.md)
|
|
12901
12932
|
|
|
12902
12933
|
## Functions
|
|
12903
12934
|
|
|
@@ -12978,6 +13009,171 @@ Defined in: [lib/s3.ts:30](https://github.com/maiyunnet/kebab/blob/master/lib/s3
|
|
|
12978
13009
|
|
|
12979
13010
|
服务商 -
|
|
12980
13011
|
|
|
13012
|
+
lib/s3/interfaces/IPutObjectItem.md
|
|
13013
|
+
---
|
|
13014
|
+
|
|
13015
|
+
[**Documents for @maiyunnet/kebab**](../../../index.md)
|
|
13016
|
+
|
|
13017
|
+
***
|
|
13018
|
+
|
|
13019
|
+
[Documents for @maiyunnet/kebab](../../../index.md) / [lib/s3](../index.md) / IPutObjectItem
|
|
13020
|
+
|
|
13021
|
+
# Interface: IPutObjectItem
|
|
13022
|
+
|
|
13023
|
+
Defined in: [lib/s3.ts:44](https://github.com/maiyunnet/kebab/blob/master/lib/s3.ts#L44)
|
|
13024
|
+
|
|
13025
|
+
批量上传单项
|
|
13026
|
+
|
|
13027
|
+
## Properties
|
|
13028
|
+
|
|
13029
|
+
### bucket?
|
|
13030
|
+
|
|
13031
|
+
> `optional` **bucket?**: `string`
|
|
13032
|
+
|
|
13033
|
+
Defined in: [lib/s3.ts:56](https://github.com/maiyunnet/kebab/blob/master/lib/s3.ts#L56)
|
|
13034
|
+
|
|
13035
|
+
bucket 名,优先级高于 options.bucket
|
|
13036
|
+
|
|
13037
|
+
***
|
|
13038
|
+
|
|
13039
|
+
### content
|
|
13040
|
+
|
|
13041
|
+
> **content**: `string` \| `Buffer`\<`ArrayBufferLike`\> \| `Readable`
|
|
13042
|
+
|
|
13043
|
+
Defined in: [lib/s3.ts:48](https://github.com/maiyunnet/kebab/blob/master/lib/s3.ts#L48)
|
|
13044
|
+
|
|
13045
|
+
内容
|
|
13046
|
+
|
|
13047
|
+
***
|
|
13048
|
+
|
|
13049
|
+
### disposition?
|
|
13050
|
+
|
|
13051
|
+
> `optional` **disposition?**: `string`
|
|
13052
|
+
|
|
13053
|
+
Defined in: [lib/s3.ts:54](https://github.com/maiyunnet/kebab/blob/master/lib/s3.ts#L54)
|
|
13054
|
+
|
|
13055
|
+
content-disposition
|
|
13056
|
+
|
|
13057
|
+
***
|
|
13058
|
+
|
|
13059
|
+
### key
|
|
13060
|
+
|
|
13061
|
+
> **key**: `string`
|
|
13062
|
+
|
|
13063
|
+
Defined in: [lib/s3.ts:46](https://github.com/maiyunnet/kebab/blob/master/lib/s3.ts#L46)
|
|
13064
|
+
|
|
13065
|
+
对象路径
|
|
13066
|
+
|
|
13067
|
+
***
|
|
13068
|
+
|
|
13069
|
+
### length?
|
|
13070
|
+
|
|
13071
|
+
> `optional` **length?**: `number`
|
|
13072
|
+
|
|
13073
|
+
Defined in: [lib/s3.ts:50](https://github.com/maiyunnet/kebab/blob/master/lib/s3.ts#L50)
|
|
13074
|
+
|
|
13075
|
+
contentLength,流模式需要设置
|
|
13076
|
+
|
|
13077
|
+
***
|
|
13078
|
+
|
|
13079
|
+
### type?
|
|
13080
|
+
|
|
13081
|
+
> `optional` **type?**: `string`
|
|
13082
|
+
|
|
13083
|
+
Defined in: [lib/s3.ts:52](https://github.com/maiyunnet/kebab/blob/master/lib/s3.ts#L52)
|
|
13084
|
+
|
|
13085
|
+
content-type,如 application/javascript
|
|
13086
|
+
|
|
13087
|
+
lib/s3/interfaces/IPutObjectsItemResult.md
|
|
13088
|
+
---
|
|
13089
|
+
|
|
13090
|
+
[**Documents for @maiyunnet/kebab**](../../../index.md)
|
|
13091
|
+
|
|
13092
|
+
***
|
|
13093
|
+
|
|
13094
|
+
[Documents for @maiyunnet/kebab](../../../index.md) / [lib/s3](../index.md) / IPutObjectsItemResult
|
|
13095
|
+
|
|
13096
|
+
# Interface: IPutObjectsItemResult
|
|
13097
|
+
|
|
13098
|
+
Defined in: [lib/s3.ts:68](https://github.com/maiyunnet/kebab/blob/master/lib/s3.ts#L68)
|
|
13099
|
+
|
|
13100
|
+
批量上传单项结果
|
|
13101
|
+
|
|
13102
|
+
## Properties
|
|
13103
|
+
|
|
13104
|
+
### error?
|
|
13105
|
+
|
|
13106
|
+
> `optional` **error?**: `string`
|
|
13107
|
+
|
|
13108
|
+
Defined in: [lib/s3.ts:76](https://github.com/maiyunnet/kebab/blob/master/lib/s3.ts#L76)
|
|
13109
|
+
|
|
13110
|
+
错误信息,失败时返回
|
|
13111
|
+
|
|
13112
|
+
***
|
|
13113
|
+
|
|
13114
|
+
### key
|
|
13115
|
+
|
|
13116
|
+
> **key**: `string`
|
|
13117
|
+
|
|
13118
|
+
Defined in: [lib/s3.ts:70](https://github.com/maiyunnet/kebab/blob/master/lib/s3.ts#L70)
|
|
13119
|
+
|
|
13120
|
+
对象路径
|
|
13121
|
+
|
|
13122
|
+
***
|
|
13123
|
+
|
|
13124
|
+
### location?
|
|
13125
|
+
|
|
13126
|
+
> `optional` **location?**: `string`
|
|
13127
|
+
|
|
13128
|
+
Defined in: [lib/s3.ts:74](https://github.com/maiyunnet/kebab/blob/master/lib/s3.ts#L74)
|
|
13129
|
+
|
|
13130
|
+
对象访问地址,成功时返回
|
|
13131
|
+
|
|
13132
|
+
***
|
|
13133
|
+
|
|
13134
|
+
### success
|
|
13135
|
+
|
|
13136
|
+
> **success**: `boolean`
|
|
13137
|
+
|
|
13138
|
+
Defined in: [lib/s3.ts:72](https://github.com/maiyunnet/kebab/blob/master/lib/s3.ts#L72)
|
|
13139
|
+
|
|
13140
|
+
是否成功
|
|
13141
|
+
|
|
13142
|
+
lib/s3/interfaces/IPutObjectsOptions.md
|
|
13143
|
+
---
|
|
13144
|
+
|
|
13145
|
+
[**Documents for @maiyunnet/kebab**](../../../index.md)
|
|
13146
|
+
|
|
13147
|
+
***
|
|
13148
|
+
|
|
13149
|
+
[Documents for @maiyunnet/kebab](../../../index.md) / [lib/s3](../index.md) / IPutObjectsOptions
|
|
13150
|
+
|
|
13151
|
+
# Interface: IPutObjectsOptions
|
|
13152
|
+
|
|
13153
|
+
Defined in: [lib/s3.ts:60](https://github.com/maiyunnet/kebab/blob/master/lib/s3.ts#L60)
|
|
13154
|
+
|
|
13155
|
+
批量上传选项
|
|
13156
|
+
|
|
13157
|
+
## Properties
|
|
13158
|
+
|
|
13159
|
+
### bucket?
|
|
13160
|
+
|
|
13161
|
+
> `optional` **bucket?**: `string`
|
|
13162
|
+
|
|
13163
|
+
Defined in: [lib/s3.ts:64](https://github.com/maiyunnet/kebab/blob/master/lib/s3.ts#L64)
|
|
13164
|
+
|
|
13165
|
+
bucket 名
|
|
13166
|
+
|
|
13167
|
+
***
|
|
13168
|
+
|
|
13169
|
+
### concurrency?
|
|
13170
|
+
|
|
13171
|
+
> `optional` **concurrency?**: `number`
|
|
13172
|
+
|
|
13173
|
+
Defined in: [lib/s3.ts:62](https://github.com/maiyunnet/kebab/blob/master/lib/s3.ts#L62)
|
|
13174
|
+
|
|
13175
|
+
并发数,默认 5
|
|
13176
|
+
|
|
12981
13177
|
lib/scan/classes/Scan.md
|
|
12982
13178
|
---
|
|
12983
13179
|
|
|
@@ -13741,7 +13937,7 @@ Defined in: [lib/sql.ts:69](https://github.com/maiyunnet/kebab/blob/master/lib/s
|
|
|
13741
13937
|
|
|
13742
13938
|
> **append**(`sql`): `this`
|
|
13743
13939
|
|
|
13744
|
-
Defined in: [lib/sql.ts:
|
|
13940
|
+
Defined in: [lib/sql.ts:1006](https://github.com/maiyunnet/kebab/blob/master/lib/sql.ts#L1006)
|
|
13745
13941
|
|
|
13746
13942
|
在 sql 最后追加字符串
|
|
13747
13943
|
|
|
@@ -13761,7 +13957,7 @@ Defined in: [lib/sql.ts:1005](https://github.com/maiyunnet/kebab/blob/master/lib
|
|
|
13761
13957
|
|
|
13762
13958
|
> **by**(`c`, `d?`): `this`
|
|
13763
13959
|
|
|
13764
|
-
Defined in: [lib/sql.ts:
|
|
13960
|
+
Defined in: [lib/sql.ts:762](https://github.com/maiyunnet/kebab/blob/master/lib/sql.ts#L762)
|
|
13765
13961
|
|
|
13766
13962
|
ORDER BY
|
|
13767
13963
|
|
|
@@ -13789,7 +13985,7 @@ ORDER BY
|
|
|
13789
13985
|
|
|
13790
13986
|
> **copy**(`f?`, `opt?`): `Sql`
|
|
13791
13987
|
|
|
13792
|
-
Defined in: [lib/sql.ts:
|
|
13988
|
+
Defined in: [lib/sql.ts:830](https://github.com/maiyunnet/kebab/blob/master/lib/sql.ts#L830)
|
|
13793
13989
|
|
|
13794
13990
|
创建一个本对象的一个新的 sql 对象拷贝
|
|
13795
13991
|
|
|
@@ -13817,7 +14013,7 @@ Defined in: [lib/sql.ts:829](https://github.com/maiyunnet/kebab/blob/master/lib/
|
|
|
13817
14013
|
|
|
13818
14014
|
> **crossJoin**(`f`, `s?`, `suf?`, `pre?`): `this`
|
|
13819
14015
|
|
|
13820
|
-
Defined in: [lib/sql.ts:
|
|
14016
|
+
Defined in: [lib/sql.ts:491](https://github.com/maiyunnet/kebab/blob/master/lib/sql.ts#L491)
|
|
13821
14017
|
|
|
13822
14018
|
cross join 方法
|
|
13823
14019
|
|
|
@@ -13857,7 +14053,7 @@ MySQL 时为表前缀,PostgreSQL 时为 Schema 名,仅在 join 非默认前
|
|
|
13857
14053
|
|
|
13858
14054
|
> **delete**(`f`): `this`
|
|
13859
14055
|
|
|
13860
|
-
Defined in: [lib/sql.ts:
|
|
14056
|
+
Defined in: [lib/sql.ts:379](https://github.com/maiyunnet/kebab/blob/master/lib/sql.ts#L379)
|
|
13861
14057
|
|
|
13862
14058
|
'xx'
|
|
13863
14059
|
|
|
@@ -13879,7 +14075,7 @@ Defined in: [lib/sql.ts:378](https://github.com/maiyunnet/kebab/blob/master/lib/
|
|
|
13879
14075
|
|
|
13880
14076
|
> **field**(`str`, `pre?`, `suf?`): `string`
|
|
13881
14077
|
|
|
13882
|
-
Defined in: [lib/sql.ts:
|
|
14078
|
+
Defined in: [lib/sql.ts:1017](https://github.com/maiyunnet/kebab/blob/master/lib/sql.ts#L1017)
|
|
13883
14079
|
|
|
13884
14080
|
对字段进行包裹
|
|
13885
14081
|
|
|
@@ -13911,7 +14107,7 @@ MySQL 时为表前缀,PostgreSQL 时为 Schema 名,仅请在 field 表名时
|
|
|
13911
14107
|
|
|
13912
14108
|
> **format**(`sql?`, `data?`): `string`
|
|
13913
14109
|
|
|
13914
|
-
Defined in: [lib/sql.ts:
|
|
14110
|
+
Defined in: [lib/sql.ts:996](https://github.com/maiyunnet/kebab/blob/master/lib/sql.ts#L996)
|
|
13915
14111
|
|
|
13916
14112
|
获取带 data 的 sql 语句
|
|
13917
14113
|
|
|
@@ -13935,7 +14131,7 @@ Defined in: [lib/sql.ts:995](https://github.com/maiyunnet/kebab/blob/master/lib/
|
|
|
13935
14131
|
|
|
13936
14132
|
> **fullJoin**(`f`, `s?`, `suf?`, `pre?`): `this`
|
|
13937
14133
|
|
|
13938
|
-
Defined in: [lib/sql.ts:
|
|
14134
|
+
Defined in: [lib/sql.ts:480](https://github.com/maiyunnet/kebab/blob/master/lib/sql.ts#L480)
|
|
13939
14135
|
|
|
13940
14136
|
full join 方法
|
|
13941
14137
|
|
|
@@ -13975,7 +14171,7 @@ MySQL 时为表前缀,PostgreSQL 时为 Schema 名,仅在 join 非默认前
|
|
|
13975
14171
|
|
|
13976
14172
|
> **getData**(): [`DbValue`](../../../index/type-aliases/DbValue.md)[]
|
|
13977
14173
|
|
|
13978
|
-
Defined in: [lib/sql.ts:
|
|
14174
|
+
Defined in: [lib/sql.ts:980](https://github.com/maiyunnet/kebab/blob/master/lib/sql.ts#L980)
|
|
13979
14175
|
|
|
13980
14176
|
获取全部 data
|
|
13981
14177
|
|
|
@@ -13989,7 +14185,7 @@ Defined in: [lib/sql.ts:979](https://github.com/maiyunnet/kebab/blob/master/lib/
|
|
|
13989
14185
|
|
|
13990
14186
|
> **getPre**(): `string`
|
|
13991
14187
|
|
|
13992
|
-
Defined in: [lib/sql.ts:
|
|
14188
|
+
Defined in: [lib/sql.ts:987](https://github.com/maiyunnet/kebab/blob/master/lib/sql.ts#L987)
|
|
13993
14189
|
|
|
13994
14190
|
获取定义的 pre
|
|
13995
14191
|
|
|
@@ -14003,7 +14199,7 @@ Defined in: [lib/sql.ts:986](https://github.com/maiyunnet/kebab/blob/master/lib/
|
|
|
14003
14199
|
|
|
14004
14200
|
> **getSql**(): `string`
|
|
14005
14201
|
|
|
14006
|
-
Defined in: [lib/sql.ts:
|
|
14202
|
+
Defined in: [lib/sql.ts:964](https://github.com/maiyunnet/kebab/blob/master/lib/sql.ts#L964)
|
|
14007
14203
|
|
|
14008
14204
|
获取 sql 语句
|
|
14009
14205
|
|
|
@@ -14017,7 +14213,7 @@ Defined in: [lib/sql.ts:963](https://github.com/maiyunnet/kebab/blob/master/lib/
|
|
|
14017
14213
|
|
|
14018
14214
|
> **group**(`c`): `this`
|
|
14019
14215
|
|
|
14020
|
-
Defined in: [lib/sql.ts:
|
|
14216
|
+
Defined in: [lib/sql.ts:786](https://github.com/maiyunnet/kebab/blob/master/lib/sql.ts#L786)
|
|
14021
14217
|
|
|
14022
14218
|
GROUP BY
|
|
14023
14219
|
|
|
@@ -14039,7 +14235,7 @@ GROUP BY
|
|
|
14039
14235
|
|
|
14040
14236
|
> **having**(`s?`): `this`
|
|
14041
14237
|
|
|
14042
|
-
Defined in: [lib/sql.ts:
|
|
14238
|
+
Defined in: [lib/sql.ts:498](https://github.com/maiyunnet/kebab/blob/master/lib/sql.ts#L498)
|
|
14043
14239
|
|
|
14044
14240
|
having 后置筛选器,用法类似 where
|
|
14045
14241
|
|
|
@@ -14059,7 +14255,7 @@ having 后置筛选器,用法类似 where
|
|
|
14059
14255
|
|
|
14060
14256
|
> **innerJoin**(`f`, `s?`, `suf?`, `pre?`): `this`
|
|
14061
14257
|
|
|
14062
|
-
Defined in: [lib/sql.ts:
|
|
14258
|
+
Defined in: [lib/sql.ts:469](https://github.com/maiyunnet/kebab/blob/master/lib/sql.ts#L469)
|
|
14063
14259
|
|
|
14064
14260
|
inner join 方法
|
|
14065
14261
|
|
|
@@ -14127,7 +14323,7 @@ Defined in: [lib/sql.ts:99](https://github.com/maiyunnet/kebab/blob/master/lib/s
|
|
|
14127
14323
|
|
|
14128
14324
|
> **join**(`f`, `s?`, `type?`, `suf?`, `pre?`): `this`
|
|
14129
14325
|
|
|
14130
|
-
Defined in: [lib/sql.ts:
|
|
14326
|
+
Defined in: [lib/sql.ts:421](https://github.com/maiyunnet/kebab/blob/master/lib/sql.ts#L421)
|
|
14131
14327
|
|
|
14132
14328
|
join 方法
|
|
14133
14329
|
|
|
@@ -14173,7 +14369,7 @@ MySQL 时为表前缀,PostgreSQL 时为 Schema 名,仅在 join 非默认前
|
|
|
14173
14369
|
|
|
14174
14370
|
> **leftJoin**(`f`, `s?`, `suf?`, `pre?`): `this`
|
|
14175
14371
|
|
|
14176
|
-
Defined in: [lib/sql.ts:
|
|
14372
|
+
Defined in: [lib/sql.ts:447](https://github.com/maiyunnet/kebab/blob/master/lib/sql.ts#L447)
|
|
14177
14373
|
|
|
14178
14374
|
left join 方法
|
|
14179
14375
|
|
|
@@ -14213,7 +14409,7 @@ MySQL 时为表前缀,PostgreSQL 时为 Schema 名,仅在 join 非默认前
|
|
|
14213
14409
|
|
|
14214
14410
|
> **limit**(`a`, `b?`): `this`
|
|
14215
14411
|
|
|
14216
|
-
Defined in: [lib/sql.ts:
|
|
14412
|
+
Defined in: [lib/sql.ts:806](https://github.com/maiyunnet/kebab/blob/master/lib/sql.ts#L806)
|
|
14217
14413
|
|
|
14218
14414
|
LIMIT(limit、offset, limit)
|
|
14219
14415
|
|
|
@@ -14241,7 +14437,7 @@ LIMIT(limit、offset, limit)
|
|
|
14241
14437
|
|
|
14242
14438
|
> **lock**(): `this`
|
|
14243
14439
|
|
|
14244
|
-
Defined in: [lib/sql.ts:
|
|
14440
|
+
Defined in: [lib/sql.ts:821](https://github.com/maiyunnet/kebab/blob/master/lib/sql.ts#L821)
|
|
14245
14441
|
|
|
14246
14442
|
追加消极锁,通常不建议使用
|
|
14247
14443
|
|
|
@@ -14255,7 +14451,7 @@ Defined in: [lib/sql.ts:820](https://github.com/maiyunnet/kebab/blob/master/lib/
|
|
|
14255
14451
|
|
|
14256
14452
|
> **rightJoin**(`f`, `s?`, `suf?`, `pre?`): `this`
|
|
14257
14453
|
|
|
14258
|
-
Defined in: [lib/sql.ts:
|
|
14454
|
+
Defined in: [lib/sql.ts:458](https://github.com/maiyunnet/kebab/blob/master/lib/sql.ts#L458)
|
|
14259
14455
|
|
|
14260
14456
|
right join 方法
|
|
14261
14457
|
|
|
@@ -14295,7 +14491,7 @@ MySQL 时为表前缀,PostgreSQL 时为 Schema 名,仅在 join 非默认前
|
|
|
14295
14491
|
|
|
14296
14492
|
> **select**(`c`, `f`): `this`
|
|
14297
14493
|
|
|
14298
|
-
Defined in: [lib/sql.ts:
|
|
14494
|
+
Defined in: [lib/sql.ts:270](https://github.com/maiyunnet/kebab/blob/master/lib/sql.ts#L270)
|
|
14299
14495
|
|
|
14300
14496
|
'*', 'xx'
|
|
14301
14497
|
|
|
@@ -14323,7 +14519,7 @@ Defined in: [lib/sql.ts:269](https://github.com/maiyunnet/kebab/blob/master/lib/
|
|
|
14323
14519
|
|
|
14324
14520
|
> **union**(`lsql`, `type?`): `this`
|
|
14325
14521
|
|
|
14326
|
-
Defined in: [lib/sql.ts:
|
|
14522
|
+
Defined in: [lib/sql.ts:391](https://github.com/maiyunnet/kebab/blob/master/lib/sql.ts#L391)
|
|
14327
14523
|
|
|
14328
14524
|
联查另一个 sql 对象
|
|
14329
14525
|
|
|
@@ -14351,7 +14547,7 @@ sql 对象
|
|
|
14351
14547
|
|
|
14352
14548
|
> **unionAll**(`lsql`): `this`
|
|
14353
14549
|
|
|
14354
|
-
Defined in: [lib/sql.ts:
|
|
14550
|
+
Defined in: [lib/sql.ts:409](https://github.com/maiyunnet/kebab/blob/master/lib/sql.ts#L409)
|
|
14355
14551
|
|
|
14356
14552
|
所有联查另一个 sql 对象
|
|
14357
14553
|
|
|
@@ -14373,7 +14569,7 @@ sql 对象
|
|
|
14373
14569
|
|
|
14374
14570
|
> **update**(`f`, `s`): `this`
|
|
14375
14571
|
|
|
14376
|
-
Defined in: [lib/sql.ts:
|
|
14572
|
+
Defined in: [lib/sql.ts:311](https://github.com/maiyunnet/kebab/blob/master/lib/sql.ts#L311)
|
|
14377
14573
|
|
|
14378
14574
|
UPDATE SQL 方法
|
|
14379
14575
|
|
|
@@ -14500,7 +14696,7 @@ Defined in: [lib/sql.ts:118](https://github.com/maiyunnet/kebab/blob/master/lib/
|
|
|
14500
14696
|
|
|
14501
14697
|
> **where**(`s`): `this`
|
|
14502
14698
|
|
|
14503
|
-
Defined in: [lib/sql.ts:
|
|
14699
|
+
Defined in: [lib/sql.ts:532](https://github.com/maiyunnet/kebab/blob/master/lib/sql.ts#L532)
|
|
14504
14700
|
|
|
14505
14701
|
筛选器
|
|
14506
14702
|
1. 'city': 'bj', 'type': '2'
|
|
@@ -14643,7 +14839,7 @@ lib/sql/functions/aoMix.md
|
|
|
14643
14839
|
|
|
14644
14840
|
> **aoMix**(`arr`): `Record`\<`string`, `string` \| `number` \| [`Json`](../../../index/type-aliases/Json.md)\>
|
|
14645
14841
|
|
|
14646
|
-
Defined in: [lib/sql.ts:
|
|
14842
|
+
Defined in: [lib/sql.ts:1402](https://github.com/maiyunnet/kebab/blob/master/lib/sql.ts#L1402)
|
|
14647
14843
|
|
|
14648
14844
|
将数组兑换为组合的对象(Array/Object mix)
|
|
14649
14845
|
|
|
@@ -14672,7 +14868,7 @@ lib/sql/functions/column.md
|
|
|
14672
14868
|
|
|
14673
14869
|
> **column**(`field`): `object`
|
|
14674
14870
|
|
|
14675
|
-
Defined in: [lib/sql.ts:
|
|
14871
|
+
Defined in: [lib/sql.ts:1423](https://github.com/maiyunnet/kebab/blob/master/lib/sql.ts#L1423)
|
|
14676
14872
|
|
|
14677
14873
|
创建字段对象
|
|
14678
14874
|
|
|
@@ -14711,7 +14907,7 @@ lib/sql/functions/format.md
|
|
|
14711
14907
|
|
|
14712
14908
|
> **format**(`sql`, `data`, `service?`): `string`
|
|
14713
14909
|
|
|
14714
|
-
Defined in: [lib/sql.ts:
|
|
14910
|
+
Defined in: [lib/sql.ts:1364](https://github.com/maiyunnet/kebab/blob/master/lib/sql.ts#L1364)
|
|
14715
14911
|
|
|
14716
14912
|
返回代入后的完整 SQL 字符串,这并不安全不能直接执行,只是用来调试打印 sql 语句
|
|
14717
14913
|
|
|
@@ -14752,7 +14948,7 @@ lib/sql/functions/get.md
|
|
|
14752
14948
|
|
|
14753
14949
|
> **get**(`opt`): [`Sql`](../classes/Sql.md)
|
|
14754
14950
|
|
|
14755
|
-
Defined in: [lib/sql.ts:
|
|
14951
|
+
Defined in: [lib/sql.ts:1336](https://github.com/maiyunnet/kebab/blob/master/lib/sql.ts#L1336)
|
|
14756
14952
|
|
|
14757
14953
|
创建 sql 对象
|
|
14758
14954
|
|
|
@@ -14805,7 +15001,7 @@ lib/sql/functions/json.md
|
|
|
14805
15001
|
|
|
14806
15002
|
> **json**(`obj`): `any`
|
|
14807
15003
|
|
|
14808
|
-
Defined in: [lib/sql.ts:
|
|
15004
|
+
Defined in: [lib/sql.ts:1461](https://github.com/maiyunnet/kebab/blob/master/lib/sql.ts#L1461)
|
|
14809
15005
|
|
|
14810
15006
|
将对象转换为 JSON 字符串并避开类型检查,用于适配 PostgreSQL 的 jsonb 字段
|
|
14811
15007
|
|
|
@@ -14834,7 +15030,7 @@ lib/sql/functions/value.md
|
|
|
14834
15030
|
|
|
14835
15031
|
> **value**(`val`): `object`
|
|
14836
15032
|
|
|
14837
|
-
Defined in: [lib/sql.ts:
|
|
15033
|
+
Defined in: [lib/sql.ts:1442](https://github.com/maiyunnet/kebab/blob/master/lib/sql.ts#L1442)
|
|
14838
15034
|
|
|
14839
15035
|
创建字面量值对象,用于 where 条件中 v[0] 需要是值而非字段名的场景
|
|
14840
15036
|
例:[value('hello'), 'IN', column('tags')]
|
package/index.d.ts
CHANGED
package/index.js
CHANGED
|
@@ -6,7 +6,7 @@
|
|
|
6
6
|
* --- 本文件用来定义每个目录实体地址的常量 ---
|
|
7
7
|
*/
|
|
8
8
|
/** --- 当前系统版本号 --- */
|
|
9
|
-
export const VER = '9.
|
|
9
|
+
export const VER = '9.13.0';
|
|
10
10
|
// --- 服务端用的路径 ---
|
|
11
11
|
const imu = decodeURIComponent(import.meta.url).replace('file://', '').replace(/^\/(\w:)/, '$1');
|
|
12
12
|
/** --- /xxx/xxx --- */
|
package/lib/net.js
CHANGED
|
@@ -445,8 +445,8 @@ export function getFormData() {
|
|
|
445
445
|
}
|
|
446
446
|
/** --- proxy 要剔除的基础头部 --- */
|
|
447
447
|
const proxyContinueHeaders = [
|
|
448
|
-
'host', 'connection', 'http-version', 'http-code', 'http-url',
|
|
449
|
-
'transfer-encoding'
|
|
448
|
+
'host', 'connection', 'keep-alive', 'http-version', 'http-code', 'http-url',
|
|
449
|
+
'transfer-encoding', 'upgrade', 'proxy-connection'
|
|
450
450
|
];
|
|
451
451
|
/**
|
|
452
452
|
* --- 剔除不代理的 header,返回新的 header ---
|
package/lib/s3.d.ts
CHANGED
|
@@ -31,6 +31,39 @@ export interface IOptions {
|
|
|
31
31
|
/** --- 预定义 bucket --- */
|
|
32
32
|
'bucket'?: string;
|
|
33
33
|
}
|
|
34
|
+
/** --- 批量上传单项 --- */
|
|
35
|
+
export interface IPutObjectItem {
|
|
36
|
+
/** --- 对象路径 --- */
|
|
37
|
+
'key': string;
|
|
38
|
+
/** --- 内容 --- */
|
|
39
|
+
'content': string | Buffer | stream.Readable;
|
|
40
|
+
/** --- contentLength,流模式需要设置 --- */
|
|
41
|
+
'length'?: number;
|
|
42
|
+
/** --- content-type,如 application/javascript --- */
|
|
43
|
+
'type'?: string;
|
|
44
|
+
/** --- content-disposition --- */
|
|
45
|
+
'disposition'?: string;
|
|
46
|
+
/** --- bucket 名,优先级高于 options.bucket --- */
|
|
47
|
+
'bucket'?: string;
|
|
48
|
+
}
|
|
49
|
+
/** --- 批量上传选项 --- */
|
|
50
|
+
export interface IPutObjectsOptions {
|
|
51
|
+
/** --- 并发数,默认 5 --- */
|
|
52
|
+
'concurrency'?: number;
|
|
53
|
+
/** --- bucket 名 --- */
|
|
54
|
+
'bucket'?: string;
|
|
55
|
+
}
|
|
56
|
+
/** --- 批量上传单项结果 --- */
|
|
57
|
+
export interface IPutObjectsItemResult {
|
|
58
|
+
/** --- 对象路径 --- */
|
|
59
|
+
'key': string;
|
|
60
|
+
/** --- 是否成功 --- */
|
|
61
|
+
'success': boolean;
|
|
62
|
+
/** --- 对象访问地址,成功时返回 --- */
|
|
63
|
+
'location'?: string;
|
|
64
|
+
/** --- 错误信息,失败时返回 --- */
|
|
65
|
+
'error'?: string;
|
|
66
|
+
}
|
|
34
67
|
export declare class S3 {
|
|
35
68
|
private readonly _link;
|
|
36
69
|
/** --- bucket 名 --- */
|
|
@@ -56,6 +89,12 @@ export declare class S3 {
|
|
|
56
89
|
'disposition'?: string;
|
|
57
90
|
'bucket'?: string;
|
|
58
91
|
}, bucket?: string): Promise<s3.CompleteMultipartUploadCommandOutput | false>;
|
|
92
|
+
/**
|
|
93
|
+
* --- 批量上传对象,并发控制,单次失败不影响其他项 ---
|
|
94
|
+
* @param items 上传项列表
|
|
95
|
+
* @param options 批量上传选项
|
|
96
|
+
*/
|
|
97
|
+
putObjects(items: IPutObjectItem[], options?: IPutObjectsOptions): Promise<IPutObjectsItemResult[]>;
|
|
59
98
|
/**
|
|
60
99
|
* --- 获取对象流,可通过流获取 buffer 或 text ---
|
|
61
100
|
* @param key 对象路径
|
package/lib/s3.js
CHANGED
|
@@ -104,12 +104,51 @@ export class S3 {
|
|
|
104
104
|
return false;
|
|
105
105
|
}
|
|
106
106
|
}
|
|
107
|
+
/**
|
|
108
|
+
* --- 批量上传对象,并发控制,单次失败不影响其他项 ---
|
|
109
|
+
* @param items 上传项列表
|
|
110
|
+
* @param options 批量上传选项
|
|
111
|
+
*/
|
|
112
|
+
async putObjects(items, options) {
|
|
113
|
+
const concurrency = options?.concurrency ?? 5;
|
|
114
|
+
const sharedBucket = options?.bucket;
|
|
115
|
+
const results = new Array(items.length);
|
|
116
|
+
let cursor = 0;
|
|
117
|
+
const worker = async () => {
|
|
118
|
+
while (cursor < items.length) {
|
|
119
|
+
const i = cursor++;
|
|
120
|
+
const item = items[i];
|
|
121
|
+
const bucket = item.bucket ?? sharedBucket;
|
|
122
|
+
const res = await this.putObject(item.key, item.content, {
|
|
123
|
+
'length': item.length,
|
|
124
|
+
'type': item.type,
|
|
125
|
+
'disposition': item.disposition,
|
|
126
|
+
}, bucket);
|
|
127
|
+
if (res) {
|
|
128
|
+
results[i] = {
|
|
129
|
+
'key': item.key,
|
|
130
|
+
'success': true,
|
|
131
|
+
'location': res.Location,
|
|
132
|
+
};
|
|
133
|
+
}
|
|
134
|
+
else {
|
|
135
|
+
results[i] = {
|
|
136
|
+
'key': item.key,
|
|
137
|
+
'success': false,
|
|
138
|
+
'error': 'upload failed',
|
|
139
|
+
};
|
|
140
|
+
}
|
|
141
|
+
}
|
|
142
|
+
};
|
|
143
|
+
const workers = Array.from({ 'length': Math.min(concurrency, items.length) }, () => worker());
|
|
144
|
+
await Promise.all(workers);
|
|
145
|
+
return results;
|
|
146
|
+
}
|
|
107
147
|
/**
|
|
108
148
|
* --- 获取对象流,可通过流获取 buffer 或 text ---
|
|
109
149
|
* @param key 对象路径
|
|
110
150
|
* @param bucket bucket 名
|
|
111
151
|
*/
|
|
112
|
-
// eslint-disable-next-line @typescript-eslint/explicit-function-return-type
|
|
113
152
|
async getObject(key, bucket) {
|
|
114
153
|
try {
|
|
115
154
|
const go = new s3.GetObjectCommand({
|
package/lib/sql.d.ts
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
/**
|
|
2
2
|
* Project: Kebab, User: JianSuoQiYue
|
|
3
3
|
* Date: 2019-5-27 20:18:50
|
|
4
|
-
* Last: 2020-3-29 19:37:25, 2022-07-24 22:38:11, 2023-5-24 18:49:18, 2023-6-13 22:20:21, 2023-12-11 13:58:54, 2023-12-14 13:14:40, 2023-12-21 00:04:40, 2024-4-11 19:29:29, 2024-9-2 17:15:28, 2025-8-3 21:28:18, 2025-11-9 16:20:23, 2026-4-30 13:49:44
|
|
4
|
+
* Last: 2020-3-29 19:37:25, 2022-07-24 22:38:11, 2023-5-24 18:49:18, 2023-6-13 22:20:21, 2023-12-11 13:58:54, 2023-12-14 13:14:40, 2023-12-21 00:04:40, 2024-4-11 19:29:29, 2024-9-2 17:15:28, 2025-8-3 21:28:18, 2025-11-9 16:20:23, 2026-4-30 13:49:44, 2026-6-1 11:30:00
|
|
5
5
|
*/
|
|
6
6
|
import * as kebab from '#kebab/index.js';
|
|
7
7
|
import * as ctr from '#kebab/sys/ctr.js';
|
package/lib/sql.js
CHANGED
|
@@ -183,25 +183,26 @@ export class Sql {
|
|
|
183
183
|
const quotedTable = this.field(table, this._pre);
|
|
184
184
|
const quotedKey = this.field(key);
|
|
185
185
|
if (this._service === ESERVICE.MYSQL) {
|
|
186
|
-
// --- MySQL
|
|
186
|
+
// --- MySQL UNION ALL SELECT 派生表语法 ---
|
|
187
187
|
// --- 必须把 tmp 放在 UPDATE 的 table_references 最前面,并使用 STRAIGHT_JOIN:
|
|
188
188
|
// 1. tmp 是小数据集,作为驱动表逐行查找目标表
|
|
189
189
|
// 2. STRAIGHT_JOIN 强制目标表按 key 条件被查找,避免优化器反向全表扫描
|
|
190
|
-
// 3. 相比
|
|
191
|
-
|
|
192
|
-
|
|
193
|
-
|
|
190
|
+
// 3. 相比 VALUES ROW(),UNION ALL SELECT 不会将派生表列强制转换为目标表类型,
|
|
191
|
+
// 避免 "Data too long for column" 错误 ---
|
|
192
|
+
const selectParts = [];
|
|
193
|
+
for (let ri = 0; ri < rows.length; ri++) {
|
|
194
|
+
const row = rows[ri];
|
|
195
|
+
const parts = row.map((v, ci) => {
|
|
194
196
|
const result = this._processValue(v);
|
|
195
197
|
if (result.data.length > 0) {
|
|
196
198
|
this._data.push(...result.data);
|
|
197
199
|
}
|
|
198
|
-
return result.sql;
|
|
200
|
+
return ri === 0 ? `${result.sql} AS ${this.field(allCols[ci])}` : result.sql;
|
|
199
201
|
});
|
|
200
|
-
|
|
202
|
+
selectParts.push(`SELECT ${parts.join(', ')}`);
|
|
201
203
|
}
|
|
202
|
-
const tmpCols = allCols.map(c => this.field(c)).join(', ');
|
|
203
204
|
const setClauses = cols.map(c => `t.${this.field(c)} = tmp.${this.field(c)}`).join(', ');
|
|
204
|
-
this._sql = [`UPDATE (
|
|
205
|
+
this._sql = [`UPDATE (${selectParts.join(' UNION ALL ')}) AS tmp STRAIGHT_JOIN ${quotedTable} t ON t.${quotedKey} = tmp.${quotedKey} SET ${setClauses}`];
|
|
205
206
|
}
|
|
206
207
|
else {
|
|
207
208
|
// --- PostgreSQL 使用 UPDATE FROM (VALUES ...) ---
|
package/lib/undici.js
CHANGED
|
@@ -333,7 +333,7 @@ export async function request(u, data, opt = {}) {
|
|
|
333
333
|
headers['content-length'] = data.getLength();
|
|
334
334
|
}
|
|
335
335
|
}
|
|
336
|
-
headers['accept-encoding']
|
|
336
|
+
headers['accept-encoding'] ??= 'gzip, deflate';
|
|
337
337
|
// --- cookie 托管 ---
|
|
338
338
|
if (opt.cookie) {
|
|
339
339
|
headers['cookie'] = lCookie.buildCookieQuery(opt.cookie, uri);
|
package/package.json
CHANGED
package/sys/child.js
CHANGED
package/sys/mod.js
CHANGED
|
@@ -1184,7 +1184,7 @@ export default class Mod {
|
|
|
1184
1184
|
sql = sql
|
|
1185
1185
|
.replace(/ LIMIT [0-9 ,]+(OFFSET [0-9]+)?/ig, '')
|
|
1186
1186
|
.replace(/ ORDER BY [\w`",. ]+(DESC|ASC)?/ig, '');
|
|
1187
|
-
if (sql.includes(' GROUP BY ')) {
|
|
1187
|
+
if (sql.includes(' GROUP BY ') || /\bUNION\b/i.test(sql)) {
|
|
1188
1188
|
return `SELECT COUNT(0) AS ${q}count${q} FROM(` + sql + `) AS ${q}f${q}`;
|
|
1189
1189
|
}
|
|
1190
1190
|
return sql
|